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