程序化的一些常見問題 [開拓者 TB]
- 咨詢內(nèi)容:
1. 開倉或平倉信號閃爍
歷史回測很好,實盤時開平倉信號時有時無。這是很多新手剛寫的完程序?qū)嵄P時的常見問題。一般都是因為調(diào)用了未來函數(shù),比如收盤價。當根K線的行情還沒有走完時,收盤價是個未來值,如果調(diào)用就會發(fā)生信號閃爍狀況。
程序里一定不能調(diào)用收盤價做判斷指標,也盡量少用最高價或最低價。當根K線能確定的只有開盤價。所以一般寫代碼時,都是用的上一根K線的數(shù)據(jù)。
例:CountIf(h[1]-Max(c[1],o[1])>c[1]*0.001 and c[1]<o[1]*1.001,3)==0;
前三根K線沒有出現(xiàn)實體較小的長上影。
2. 偷價
歷史回測時,利潤率和盈虧比高的自己都被嚇死。實盤時發(fā)現(xiàn)很多看起來賺錢的單子實際都是虧損的。這種情況就是在開盤價和收盤價上做文章。比如開多單時用的是最低價,平多單時用的是最高價。這是賣策略的人經(jīng)常玩的把戲。呵呵。
自用策略時,請參照以下代碼:
開多:Buy(0,max(o,h[1]));
平多:Sell(0,min(o,l[1]));
開空:SellShort(0,min(o,l[1]));
平空:BuyToCover(0,max(o,h[1]));
這樣寫后,程序就不會有偷價行為,且自帶滑點。前一根陽線不是光頭陽線或光腳陰線時,就算沒有加滑點也能保證成交。
做好這兩點后,相信很多剛寫策略的人再回頭看看自己之前寫的,肯定是慘不忍睹了吧。
3. 過渡優(yōu)化、擬合
很多專門賣的策略,回測結(jié)果非常好看:勝率、盈虧比都很高。這種情況就是專門針對歷史行情進行擬合。比如策略在某一個大漲行情里實際沒有開出單,但寫策略的人根據(jù)大漲前的行情專門寫一段代碼讓他補出單來,并添加時間限制,只在這一特定時間開出這么個多單來。
很多策略好看不要用有很大原因就是添加了太多的擬合代碼,在歷史回測中避免了大虧,抓住了大賺行情。
4. 過濾條件太多
策略為了避免虧損,認為添加了很多過濾條件,從而使策略在回測時的結(jié)果看起來很好。實際這些過濾條件對未來實盤的行情一點作用都沒有,該虧損還是照虧不誤。
其實這也是一種擬合。
我個人并不反對擬合。寫策略本身就是一個不斷擬合的過程,但如果刻意擬合就是欺騙了。擬合是要尋找規(guī)律,從雜亂無章的行情中找到合適的算法。讓這種算法去抓住大部分類似的賺錢行情,過濾掉大部分類似的虧損行情。沒有核心算法的擬合就是刻意擬合,對自己或?qū)e人的欺騙。
比如添加了一個過濾算法,歷史回測時;過濾了10單滿足條件的單子。這10單中,有7單以上是虧損的,賺錢的三單也賺的不多。策略總體盈虧比和勝率都有提高。那么這個過濾算法就是有效的,或者說這個擬合有效。
5. 回測數(shù)據(jù)不可靠
商品的主力合約和非主力合約的差別是很大的。
非主力合約成交稀少,價格波動變化小,行情簡單易控,不需要太復雜的算法就可以把這些行情全部抓牢。比如波動指標和趨勢指標在非主力合約上的信號非常明確。
主力合約成交量大,價格波動大,行情變幻莫測。常規(guī)的波動指標和趨勢指標會亂走,很難通過簡單的代碼去實現(xiàn)盈利。
另外商品的指數(shù)跟主力合約的差異也是很大的,除了股指指數(shù)跟股指主力有高相關(guān)性,商品指數(shù)跟商品大多是不相關(guān)的,這里涉及到跨期套利的影響。很多時候近月在漲,而遠月在跌,這種指數(shù)怎么能可靠。
所以那些商品回測幾年的策略,打死我也不相信的。國內(nèi)的商品主力合約一般有效期頂多4個月。如果自己寫策略,請參照主力合約。非主力合約的測試結(jié)果請無視。
小結(jié):
一般而言,勝率低的策略實盤時勝率只會更低。簡單的策略只會讓虧損變得簡單。沒有核心算法的策略都不能說是成功的策略。沒有大量有效數(shù)據(jù)作為測試依據(jù)的策略都是不可靠的。 - TB技術(shù)人員: 極有價值。謝謝分享,我收藏了。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容