2017年7月1日 星期六

前言

程式交易是近年來相當熱門的交易模式,許多劵商大力的在推這個項目,主因是一方面可增加手續費,另一方面可收取平台使用的租金。以目前最流行的交易平台MultiCharts來說,一個月的租金大概也要一千元,除非你已經有一個很賺錢的策略在跑,要不然這也是一個負擔。

由於網際網路的發達,新一代的學子很多在學校都有學過Java語言,但能夠把它用在程式交易上的卻很少,原因是Java最大的特色在於它的跨平台性,也就是同一支程式無須作修改就可以在windowsiosandroid 等作業系統上運作。Java在作編譯時是把原始碼翻成位元碼(bytecode),而不像C等其他語言編譯成機械碼,因此只要作業系統上有安裝Java 虛擬機器(JVM),就可執行該位元碼。但程式交易如自動下單、讀取即時報價等功能都牽涉到作業系統底層的APIJava在這方面的操控能力就很差,必須借助JNI(Java Native Interface)及其衍生的套件(如後面會用到的JNAJACOB),而這些資料在一般Java的教科書上絕對找不到,網路上或許有,但必須先把它消化吸收。

或許有人會嫌Java不是編譯成機械語言,因此執行速度比較慢。我曾針對此論點加以測試:用台指期這種大成交量的商品,以市價委托下單,然後觀察下單和成交時間,基本上在『秒』這個數量級是沒有差別的,除非你的策略要求到『毫秒』等級。每一種程式語言都有它的強項和弱點,Java的強項是在網際網路的應用,要不然你用C語言來寫個網路程式看看。而我之所以開這個部落格,一來是Java在這方面的應用較少,另一方面是公開我辛勞的成果,讓有興趣的同好少走點冤枉路。

接下來簡介程式交易的模組,很多部落格在這方面已著墨很多,但為顧及文章完整性及部落格的連貫性,因此在這邊簡單提一下。

下單模組:以劵商所提供的API(Application Programming Interface)下單,我會分別介紹日盛及元大的下單API,並提供Java程式下載。這些程式碼只要你有帳號密碼,都是實際可運作的。

即時報價模組:這也是程式交易不可或缺的部份,目前一般劵商會免費提供的報價有DDE RTD、及API報價,前兩者通常會以excel為輸出,最後一個可能有些資格限制。既然從excel讀取報價是最常見的,因此我會介紹一個叫JDDE的套件。此外,我一直想從劵商的Ajax網頁抓取即時報價,但這方面一直還有些問題。

策略模組:前面兩個模組算是基礎,這個模組才是真正決定是否會賺錢的部份。但據很多程式交易者表示,真正賺錢的策略很難寫,而且這跟交易者的個性、心智狀態有絕對關係(因交易者可能隨時把程式停掉)。當然我也會演示一個範例,但『師父領進門,修行在各人』。


0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁