自動化程式交易心得


經過好一段時間的努力之後,在幾天前終於可以開始上線,照著自己所訂定的策略自動下單。
這個成果,有一大半的resource都是來自網路上網友的分享,真是非常感謝他們。所以說,網路上真是有無盡的寶藏,只要你有心去挖掘,必有收穫。
在建構自己的程式交易的這段過程中,著實地學到了不少東西,也體會到程式交易的優缺點和市場上那麼不合乎邏輯的本質。
1. 同樣的一套策略,由肉眼看圖表可能二秒鐘就能判斷進出場,但要把這套分析的方式寫成程式,可能花個二個小時,都不見得能正確完整地表達。因為人類在思考上天生的不面面俱到(這當然因人而異),所以有時候在很多小地方會忽略掉,造成程式的結果跟自己原本的想法有出入。因此在作歷史資料的績效回測時,盡量去檢視每個訊號的正確性。
2. 市場未必是自己想像的那樣合乎邏輯的。在作歷史資料的績效回測之後,發現某天的交易虧損異常的大,在檢視之後,根據一般的邏輯去設定停損點之後,會發現整體績效不但沒有因此提升,反而下降甚至變成虧損。
3. 市場是無法預期的,所以也不要想去創造一套完美的策略,那是神才作的到的事。
正因為自己無法預期接下來的走勢是如何,當下的虧損可能在收盤的時候變成獲利或更大的虧損、當下的獲利可能在收盤的時候變成虧損或更大的獲利。
所以自己能作的是設計或尋找一套方式,在經過歷史資料的回測之後,確實是可以賺錢的,然後做到或改良成在交易判斷錯誤時,盡量減少虧損;在交易判斷對的時候,盡量保持獲利。然後在一段時間的交易之後,還是能獲利。也就是說,自己要追求的應該透過比較科學

的統計方式訂定一套交易系統,然後照著作。這通常不會是最賺錢的方式,但只要長期都能賺錢,這樣就夠了。
4. 如果無法克服人性而嚴格執行程式的訊號,或無法全程專心看盤,最好搞個自動化的交易系統。訊號一到,就會自動下單。
5. 在程式化的過程中,要檢視的績效數據不應該是獲利總數的最大化,那反而是最後面才要看的東西。
要注意的應該是:最大單次虧損金額、最大連續虧損次數、最大連續虧損金額、Max intraday drawdown(這個中文我不知道怎麼翻譯,意思就是整體交易的累積獲益,從最高累積獲利值之後,累積的最大虧損值。以底下的回測績效曲線來看,每個綠色的peak點就是累積的最大獲利值,在peak之後的交易,造成累積的獲利出現虧損,這就是intraday drawdown,而在這些intraday drawdown的最大值就是max intraday drawdown,也就是說,以現在這個策略在過去的市場交易,曾經出現的最大累積的虧損金額)、獲利的交易次數佔總交易次數的比例、平均每次交易獲利金額、平均每次交易虧損金額。

6. 上面的曲線圖是目前自己回測出來的績效。不完美(也不打算追求完美)但看起來應該是可以賺錢。目前對於停損點和停利點(在進場後,市場走勢往獲利的方向走,之後出現回檔或反彈侵蝕獲利而出場,其實也算是一種停損點)還有改進的空間。如前面所說,停損點沒設好,不但不會提升績效,反而會增加虧損。真的是「會買的是徒弟,會賣的才是師傅」,出場比進場難啊。
7. 回測的設定(例如交易成本的設定、訊號成立的正確性)影響著績效回測的可參考性,越貼近真實的設定,回測的報告越是可信,不能只想作個最佳化的數據來給自己看爽的。而且過去的績效也不代表未來的機會,所以要準備視情況調整策略程式。

這個網誌中的熱門文章

我四十歲,開始認真保養----安迪湯

見山不是山,見水不是水

小錢的威力