oskwu 發表於 13-2-16 20:40

老狗為何選擇 Excel?

建構程式交易平台的方法很多,TradeStation、MultiCharts、Amibroker…不勝枚舉,為何獨挑Excel?很單純!因為老狗比較熟悉這個。當然,以Excel建置交易平台,還有其他考量因素與優缺點,分別介紹給讀者參考。

據說,速度可能是Excel的弱點,只是老狗沒有做過其他方式的程式交易,不知該如何比較。以老狗過去的經驗來看,當快市時,成交量遽增、價格跳動太快,的確會有跟不上的感覺。採取順勢操作系統,尤其是期指交易,順著趨勢產生交易決策,必須追漲殺跌時,Excel的速度與滑價設定必須被考量。

不過,影響交易速度的因素太多,硬要比較快慢是有風險的,即便資訊源、硬體結構、軟體系統、下單平台、網路速度...都一樣,不同的人寫出來的程式,交易速度也不一樣。讀者必須根據自己的策略操作,思考整體交易平台執行速度的需求。當然,在建構Excel交易平台的過程中,應該盡量改善交易速度,減少會降低交易速度的動作與設定。

就台灣50平衡比例投資法【自動下單版】來說,台灣50的交易一分鐘約兩三盤,所以沒有速度快慢的問題,考慮滑價即可。而選擇權存在與期貨指數的delta關係,快市的程度較緩和,也同樣是以滑價買賣來盡量克服。

其次,在Excel上執行歷史資料回溯的複雜度較高,蒐集並匯入原始資料,根據投資策略,撰寫巨集程式,都必須自力完成,策略回測的執行動作較費工。

台灣50的歷史回溯部份,老狗已經於部落格內分享操作參數測試與績效比較,讀者可以參考。雖然選擇權資料模擬不易,搭配台灣50的回測難度更高,不過只要交易邏輯沒有偏差,以避險為前提的Covered Call操作,需要歷史回測來佐證的迫切性不高,讀者可以直接參考老狗在部落格上分享的實際交易記錄。

建置順勢程式交易系統的讀者,盤中根據即時的價量變化,以事前設定的買賣指標,判斷交易訊號,執行操作決策。因此,以歷史資料回溯買賣指標的有效性,有其必要性。雖說歷史資料並不代表未來,但未通過歷史回溯測試的交易系統,又如何面對未來呢?

Excel 的最大優點是「工作表公式」與「VBA巨集」並存,兩者可以相輔相成。交易過程中大多數的邏輯判斷,只要在工作表上拉一拉公式,就可以很簡單地被呈現出來,不需要撰寫巨集。VBA巨集可以彌補工作表公式的不足,特別是對外溝通的部份:DDE連結的設定、買賣委託單的執行與即時回報的反應。以老狗的經驗來說,能在工作表上處理的邏輯判斷,盡量不要寫在VBA巨集,程式撰寫應該盡量簡潔,以後也好維護。

老狗認為選擇權交易特別適合在Excel上執行程式交易的主要原因,在於公式設定的便利性,尤其是那一堆希臘文字的風險係數,寫好VBA的Function編碼,即可將風險係數試算交給Excel,讓它根據市場變化,在工作表自動試算即可。

此外,藉由「錄製巨集」的方式,觀察其程式編碼,是Excel友善之處。很多實際撰寫過VBA巨集程式者,會跟老狗有相同經驗,遇到沒有把握的程式語法,便以錄製巨集的方式,請Excel協助編碼,再檢視錄製的巨集,逐步修改自己的程式編碼。這種邊寫、邊錄、邊學、邊修的經驗,是Excel程式交易者成長的必經過程。

「直觀設計」是Excel的另一優勢,完整的工作表結構規劃,可以實現程式設計流程;透過工作表頁面的執行邏輯判斷與公式連結,也可簡化VBA程式編碼。而且在交易過程中,只要觀察工作表,便可了解目前程式執行的狀況,清楚目前指數與股價的位置、是否觸發交易委託單…等等,只要觀察工作表的數字跳動即可,這是Excel的直觀設計。

另外,分享老狗的經驗,參數設定應該盡量表格(Table)化,盡量在工作表頁面上,設定交易過程所需要的操作參數。如此,無論是因為臨時的交易需求,或是變更操作偏好設定,相關操作參數的修改,不必動到VBA程式編碼,可使交易系統的彈性更高。只是過多的參數存取,須注意其對程式執行速度的影響。

依交易系統流程來規劃工作表結構與頁面設計,並注意簡化與彈性的需求;剩下的工作是以VBA程式編碼,處理交易系統輸入與輸出的流程,這對有程式編碼經驗的交易者來說,反而單純。

sendoh 發表於 13-2-16 23:24

請教前輩
您所用的Excel版本及作業系統各為何?
因為小弟發現
Excel 2003 + win 7 家用進階版64位元
Excel很容易當機
其實連卷商的看盤軟體也會當
若是在XP系統下
就一切正常
真傷腦筋

rockwell 發表於 13-2-16 23:30

本帖最後由 rockwell 於 13-2-16 23:45 編輯

其實如果有能力,最好是盡量用VBA來做編寫策略。
不過倒是可以用工作表來存簡單的資訊,
如:是否下單、下單口數、是否已成交......
就是不要用工作表來做計算。

若要在工作表作計算,速度將會比單純用VBA來得慢,
而且可能會有工作表跟不上VBA速度的問題;
如果工作表上已有的公式,則用VBA來呼叫使用,
通常會比自己在VBA寫公式更快。

不過如果要跑的程式碼很少的話,可能就可以忽略以上所說;
若有比較巨大的迴圈,VBA寫得精簡漂亮,執行速度會比較好。

VBA 應該算是高階語言,所以速度不是他的強項,
要追求極速,可能要考慮其他較低階的語言。
會使用VBA的人,應該是看中VBA能與Excel工作表相結合,
與學習上來得輕鬆且取得方便。

rockwell 發表於 13-2-16 23:41

本帖最後由 rockwell 於 13-2-16 23:47 編輯

sendoh 發表於 13-2-16 23:24 static/image/common/back.gif
請教前輩
您所用的Excel版本及作業系統各為何?
因為小弟發現

其實如果可以的話,可以先移除看盤軟體與Excel再重裝來試試,
再不然就是重灌電腦(如果覺得方便的話)。

Excel似乎越新版效能越好,至少在工作表的處理效能比較好,
不過VBA跑起來好像沒啥差別。

但不要裝Excel2012,因為2012的Excel,好像移除了VBA(不確定),
所以裝2010的,可能是比較好的選擇。

PS.
不知為啥,有時候明明回文時,文字是有跳行,但顯示出來都沒跳行。

smile2 發表於 13-2-17 22:47

sendoh 發表於 13-2-16 23:24 static/image/common/back.gif
請教前輩
您所用的Excel版本及作業系統各為何?
因為小弟發現


小弟用的是XP SP3+EXCEL 2003+資料來源:群益API
每15秒寫入策略分析的工作表,一天有1201筆,大概會漏掉5到10筆
大部份都是群益踢api帳號,excel自行關閉又自動重開而漏掉的
以上給大大參考

oskwu 發表於 13-2-18 18:36

sendoh 發表於 13-2-16 23:24 static/image/common/back.gif
請教前輩
您所用的Excel版本及作業系統各為何?
因為小弟發現


老狗使用XP+2003 Excel, 執行得還不錯.

sendoh 發表於 13-2-18 23:03

謝謝各位解惑
目前小弟也是使用XP+Excel 2003
執行VBA巨集程式很順
只是現在新的電腦都是灌Win7
偏偏win7在執行excel 2003 VBA時
有時都不明原因當掉
==

玉面小棍爺 發表於 13-2-20 13:23

小弟新手,長見識啦。謝謝前輩

moshn1011 發表於 13-7-17 23:31

見識到各位的厲害了~~~大家一起加油吧!
頁: [1]
查看完整版本: 老狗為何選擇 Excel?