發表文章

目前顯示的是 4月 12, 2021的文章

報價條

HKpapa Python量化交易港股投資系列:#5 Python變數介紹與Print函數

圖片
  這篇文章正式帶領大家進入Python的編寫程式階段,會從最簡單的四則運算到變數的介紹。 基本運算 在寫程式之前,最少要知道怎麼樣處理四則運算與次方,如果你會用Excel來做儲存格運算,這根本就是一塊蛋糕,除了次方的符號不同外,其餘皆一致,以下簡單做個範例,讓大家更清楚。 2 * 2 + 3 ** 2 Copy 10 Copy 相信這種範例做一次就夠了,做太多就是汙辱大家的智商了!一定要記得在IPython console上多玩幾次試試看。 基礎數學計算 運算符號 說明 a + b a 加 b a – b a 減 b a * b a 乘 b a / b a 除 b a ** b a 的 b 次方   變數介紹 Python是一個由「物件」構成的世界,而物件將儲存在變數中,認識Python的第一步,就是要瞭解Python的變數型態,必須要先知道各種變數型態後,才能在後續的使用上可以更為快速。 Name = 'Raymond' Age = 26 Copy 假設有一個人的名字叫Raymond,年齡為26歲,我們可以把它轉換為程式碼如上面所示,這樣應該可以很清楚的瞭解這裡的變數是Name與Age,等號的意思是「給定」,換句話說,可以想像成以下情形「拿了一個盒子用麥克筆在盒子外寫上Name的名字,以後我們就用Name來代稱這個盒子了,盒子裡面放了一個叫做Raymond的東西」,這個盒子(變數)未來可以拿來儲存任何值或是資料型態,記得要把盒子命名好,之後就可以馬上知道這個盒子裡面裝什麼了。 Python變數型態 以下整理了四個最常使用的變數型態,搭配後面的程式範例會更清楚喔 變數型態 說明 int 整數,沒有小數點後位數的數字 float 浮點位數,有小數點後位數的數字 str 字串,使用時前後需有單引號或雙引號 bool 布林值,只有兩個選項,分別是True和False,主要做為條件判斷 後續我將整數(int)與浮點位數(float)代稱為數字變數   變數數值相加 儲存數值的變數如int與float,彼此間可以互相進行四則運算與其他科學計算 假設爸爸的年齡為52歲,媽媽的年齡為50歲,姊姊的年齡為28歲,我的年齡為26.5歲 今天想要計算全家人的平均年齡可以下方程式顯示 #列出全家人各別的年齡 Dad_age = 52 #int Mom_ag

HKpapa Python量化交易港股投資系列:#4 Anaconda 安裝與操作簡介

圖片
  我們使用比較簡單的方法來安裝Python,Anaconda可以叫做Python的懶人包了,就像安裝其他程式一樣執行安裝檔,除了Python程式語言外,也一併安裝了IDE與相關套件,缺點就是安裝後相當肥大,大概需要3GB(Anaconda3 5.2.0版本),對於新手而言,應該還是Z>B(利大於弊)了,畢竟現在儲存空間是相當便宜。 這次選用Python 3.6的版本來安裝,我過去其實一直是用Python 2.7版本,也覺得非常順,但不斷有各種套件不再支援Python 2.7的更新,為了未來著想還是選用3.6版本吧!以下就開始來安裝Anaconda囉! 1. 下載Anaconda ( https://www.anaconda.com/download/ ):按照自己電腦的作業系統來選擇,再點選Python 3.6的版本來下載 2. 一連串的安裝步驟:基本上隨著系統預設點選即可 中間省略N個下一步 跳出這個畫面代表順利安裝成功! 3. 更新套件:由於Anaconda安裝檔不會隨時保持所有套件為最新版本,所以我們需要在這邊下一些指令讓套件更新。 (套件對於Python而言相當重要,能夠大幅縮短開發應用的時間就是依賴他們啊!) 先在開始中找到新安裝的Anaconda資料夾,點選「Anaconda Prompt」 打開Anaconda Prompt後,輸入conda update –all 按下Enter後會跳出以下畫面,列出的為Anaconda預設包含的套件 輸入y後,按Enter執行後,需等待一小段時間去下載最新的套件並安裝更新至最新版本 恭喜,Anaconda安裝到此算是完成了,下篇將介紹使用Anaconda內建的IDE——Spyder。

HKpapa Python量化交易港股投資系列:#3 為什麼你應該用Python做程式交易?

圖片
  大家都在用MultiCharts,為什麼要選擇用Python呢?Python是一個自由度高,而且在開發效率與程式效能上取得一個完美均衡的一個程式語言,大家可能也會想要做程式交易要速度要快,是不是要去學C這類的語言呢?如果你不是資訊相關本科系的話,我相信上完第一堂課你就不會想再碰的動力了,可以想像一下,光是進行時間序列計算技術指標在C要怎麼運算,開發時間又要多久? 較高的自由度與延展性 相比較於MultiCharts來說是擁有比較好的彈性,MultiCharts的架構將前端資料源與後端回測的基礎設施給定,讓使用者只需要專注於以Power Language來編寫交易策略,對於初學者來說是相當方便的,是一條對新手來說比較友善的一條路,相當多的券商或期貨商都對於MultiCharts有相當多的功能支援,缺點就是需要付費,而且在開發與回測上會受到MultiCharts框架上的限制,像是撰寫一些比較複雜的商品或策略指標時,在既有的Power Language將會不支援,或是在績效衡量上想要用特殊自創的指標將會受限。 Python雖然比較屬於一個純程式語言,但是相當多底層的基礎建設已經有現成開發好的成果可以使用,而且套件數量相當多元,幾乎你想要什麼樣的應用都可以找得到,從後端計算、資料庫存取、網路爬蟲、開發網站或設計App等都難不倒他,可以輕易地結合各種統計模型或資料來進行交易訊號的產生。 完全免費且網路教學資源多 Python是一套免費的項目,大家常用的Anaconda也是免費的,建立一個程式交易應用基本上都是免費的,除非你要另外架設遠端Server,用做全數雲端化的架構;Python相關套件與教學也真的是很多,相信大家其實在YouTube或網路文章看一看就能夠輕鬆學會,當然學會跟活用的距離還不小,必須要有目的導向的進行應用開發。 在程式下單應用也有相當多的券商或期貨商支援 Python API下單 ,當然也是時代所需,有了這個API接口可以讓客戶快速且方便的進行較高頻率的交易,對於經紀部門來說是相當好的,所以各家都有投入資源在這上面,我們可以說是相當幸福的啊! 新手門檻 從開始課程的開發與經營開始,就有相當多的程式新手在詢問是否可以上這堂課,我都建議大家盡量先把完整的基礎教學上完後,試著建立一些小小的應用開始,讓腦袋習慣用程式架構思考的方式,也要練習進行流程的規劃與設計,

HKpapa Python量化交易港股投資系列:#2 什麼是量化交易(Quantitative Trading)?

圖片
  量化交易 (Quantitative Trading)同時具有幾個同義詞,像是 計量交易 、 程式交易 (Programming Trading)和 演算法交易 (Algorithmic Trading),其實意義都是相同的,以客觀且科學化的方式計算相關指標並判斷交易決策訊號,例如計算技術指標的移動平均,當股價高過移動平均線時,進場買進,反之則進場賣出,使用比較科學化一致性的方式來判斷。 量化交易特性 狹義的量化交易或程式交易就是以計算 技術指標 ,並以程式進行 方向性交易 (Directional Trading),也就是我們比較常看到的交易策略,像市面上的幾個程式交易套裝軟體,如TradeStation與MultiCharts等軟體,主要就是以技術指標進行方向性交易為主,使用的程式語言是比較貼近一般人的PowerLanguage,讓一般投資人與程式交易的距離拉近了不少。 廣義的量化交易則是包含 高頻交易 (High Frequency Trading, HFT)或 套利交易 (Arbitrage)的複雜性策略,這兩類的交易策略在軟硬體都具有一定的門檻,比較多還是以專業的金融法人機構使用,例如投資銀行的自營交易室或 避險基金 ,這些交易可能都不是計算技術指標而已,還會需要計算一些統計模型或金融商品評價模型,例如選擇權造市則必須要持續計算 Black-Scholes Options Pricing Model ,並在標的資產價格變動時快速進行抽換單。不論是狹義或是廣義量化交易,核心宗旨都是相同的,就是利用電腦程式輔助計算數值,建立出一套客觀的交易準則。 我可以進行量化交易嗎? 前面講了一堆名詞希望大家不要嚇到,進行量化交易可簡單可複雜,如果你曾經在Excel上面分析股票的交易策略,那你絕對沒有問題,頂多在學一些程式語言而已,如果你連Excel分析股票都沒碰過的話,建議可以先去下載某檔股票的歷史資料到Excel觀摩一下,好好看一下你的資料是長什麼樣,甚至可以畫畫圖,好好思考一下如果只有這些資料要怎麼樣賺錢呢? 量化交易架構圖 下圖為一般進行量化交易或程式交易的架構圖,一般比較常看到的內容多為白色虛線內的內容,其餘的教學內容比較少,大多需要自行摸索,而最新設計的課程就是帶著大家將白色虛線外的內容建構完成,同時也會從一些簡單的範例來完成所有的量化交易環節。 結論 相信

HKpapa Python量化交易港股投資系列:#1 程式交易的歷史發展

圖片
  一開始就講交易策略未免太俗氣,既然是系列文章就有辦法講的細一點,讓大家從頭透徹了解這個技術,首先來講歷史上的程式交易發展,瞭解一下前人最一開始是希望利用程式來幫助我們做什麼事情,我們也可以思考一下,來學習程式交易,你希望的到底是什麼? 金融交易的演進 古老在進行交易的主要是透過交易員在交易所進行喊單,彼此之間需依靠大量人與人之間的溝通與關係,當中會喊叫或比暗號,很像是線在棒球比賽中的場景,而現代的交易大多是使用電腦來輔助,除了可以用打電話下單外,大多是使用桌面應用程式或是手機App進行下單,這種比較是屬於半自動下單。 程式交易主要以大型投資銀行(Investment Bank)或避險基金(Hedge Fund)進行衍生性金融商品交易或套利交易,由於這些交易均為需要大量複雜且快速的計算及交易,所以就必須使用程式來輔助這些交易的運行。程式交易大約從1980年起開始在金融市場上出現,這個與冷戰結束到財務工程發展息息相關,主要就是一群有著理工與電腦科學背景的學霸們來到了華爾街。 結論 程式交易其實也不是一個多麼新穎先進的技術,近十多年的走向是把過去的程式交易技術普及化,把程式交易變成套裝軟體(TradeStation、MultiCharts)提供給證券或期貨的經紀業務部門,讓更多一般投資人以程式交易的方式來參與這個市場,也許現在的潮流在高頻的機器學習或深度學習等方法,依照我擔任交易員多年的經驗,金融市場的變化實在非常快速,而且集中交易市場永遠都是可以被資金大的玩家操控,他們其中一個策略就是去收割程式交易的韭菜。

分析平台

市場快訊

财经日历

外汇交叉汇率

外汇热图