如何實(shí)現(xiàn)平倉(cāng)Bar上即使?jié)M足開(kāi)倉(cāng)條件也不再開(kāi)倉(cāng)?
作者:開(kāi)拓者 TB 來(lái)源:cxh99.com 發(fā)布時(shí)間:2013年08月27日
- 咨詢內(nèi)容:
本帖最后由 ll407489244 于 2013-8-1 07:23 編輯
假如我的程序在K1這根Bar上達(dá)到了平倉(cāng)條件,已經(jīng)平倉(cāng)了,但是平倉(cāng)后滿足開(kāi)倉(cāng)條件,我不希望平倉(cāng)后的Bar再去開(kāi)倉(cāng),如何實(shí)現(xiàn)?
開(kāi)倉(cāng)的時(shí)候,我會(huì)通過(guò) if (0==MarketPosition) 來(lái)限制沒(méi)有倉(cāng)位的時(shí)候才開(kāi)倉(cāng),在K1上如果平倉(cāng)了也滿足這個(gè)條件,但是我想再加個(gè)條件,就是K1上不能再開(kāi)倉(cāng)了,
我所知道的是:
有個(gè)函數(shù)叫做,BarsSinceExit,根據(jù)解釋來(lái)看,只有當(dāng)MarketPosition = 0時(shí),即沒(méi)有持倉(cāng)的狀況下,該函數(shù)才有意義,否則返回0。在平倉(cāng)Bar上為0。
如果我的條件改為:
if (0==MarketPosition && 0!=BarsSinceExit)
沒(méi)有倉(cāng)位且不在平倉(cāng)Bar上開(kāi)倉(cāng),看起來(lái)是對(duì)的,但問(wèn)題是,公式剛加載進(jìn)來(lái)的時(shí)候,從左到右運(yùn)行,最開(kāi)始的時(shí)候,確實(shí)沒(méi)有倉(cāng)位,但也從未有過(guò)開(kāi)平倉(cāng)操作,此時(shí),BarsSinceExit的返回值是什么?我通過(guò)這個(gè) 0!=BarsSinceExit 的判斷,實(shí)踐中,我發(fā)現(xiàn)一直沒(méi)有開(kāi)倉(cāng)信號(hào)。。。
請(qǐng)問(wèn),我該怎么實(shí)現(xiàn)這個(gè)功能,還有其他的函數(shù)或者方法實(shí)現(xiàn)嗎。
只有模擬測(cè)試的時(shí)候才有這個(gè)問(wèn)題,因?yàn)椋沂窍葘?xiě)開(kāi)倉(cāng)條件、執(zhí)行開(kāi)倉(cāng)、平倉(cāng)條件、執(zhí)行平倉(cāng),歷史測(cè)試時(shí),平倉(cāng)后不在K1上運(yùn)行了就肯定不會(huì)再去判斷是否滿足開(kāi)倉(cāng)條件了。
我在歷史測(cè)試的時(shí)候,會(huì)去掉 0!=BarsSinceExit 的判斷,但是我得為模擬測(cè)試寫(xiě)另一套代碼,我的這種做法是對(duì)的吧?
- TB技術(shù)人員:
為什么你要反過(guò)來(lái)寫(xiě)呢,很奇怪。TB執(zhí)行邏輯判斷不是從左到右來(lái)運(yùn)行的嗎?正確的寫(xiě)法不是應(yīng)該是if (MarketPosition==0)這樣的?反過(guò)來(lái)寫(xiě)難道執(zhí)行的速度會(huì)更快嗎?對(duì)結(jié)果有沒(méi)有影響?我想管理員有必要科普一下哦。回到主題,如果你想平倉(cāng)信號(hào)出現(xiàn)后,就算開(kāi)倉(cāng)滿足,也不開(kāi)倉(cāng)了,可以有很多方法,比如:if(開(kāi)倉(cāng) && 平倉(cāng)==false) 開(kāi)倉(cāng);if(平倉(cāng)) 平倉(cāng);,又或者是if(平倉(cāng)){ 平倉(cāng);}else if(開(kāi)倉(cāng)){開(kāi)倉(cāng);}。
- TB客服:
寫(xiě)c++代碼寫(xiě)習(xí)慣了,這樣子寫(xiě),不容易出錯(cuò),沒(méi)有其他影響。
MarketPosition==0容易寫(xiě)成MarketPosition=0,在if的條件表達(dá)式里寫(xiě)成后者了,每次必定是false。
而0==MarketPosition寫(xiě)成0=MarketPosition,就會(huì)報(bào)錯(cuò)。
您的第一種寫(xiě)法,我基本上也就是這么寫(xiě)的,我在 if (0==MarketPosition && 0!=BarsSinceExit) 這個(gè)if里面嵌套了if判斷是否達(dá)到開(kāi)倉(cāng)條件,問(wèn)題就是 0!=BarsSinceExit ,沒(méi)有滿足我的需求,無(wú)法屏蔽當(dāng)前Bar上平倉(cāng)的情況。
第二種寫(xiě)法不滿足我的需求,因?yàn)槲蚁朐谀骋桓鶥ar上開(kāi)倉(cāng)后還可以平倉(cāng),寫(xiě)成要么開(kāi)倉(cāng)要么平倉(cāng)的話,會(huì)造成模擬測(cè)試時(shí)在同一根Bar上開(kāi)倉(cāng)后無(wú)法平倉(cāng)。