CrossOver/CrossUnder 運(yùn)算規(guī)則求解
作者:開拓者 TB 來源:cxh99.com 發(fā)布時(shí)間:2013年09月22日
- 咨詢內(nèi)容:
有 Ma1/Ma2 是序列變量;
問題1:CrossOver(Ma1,Ma2),編譯提示警告,說函數(shù)內(nèi)有序列變量可能有錯(cuò)誤是什么意思?
CrossOver不能用序列變量? 還是什么意思?應(yīng)該怎么用?
問題2:CrossOver(Ma1,Ma2) 和 ( Ma1[1] < Ma2[1] && Ma[0]>Ma2[0]) 等價(jià)么?
實(shí)測(cè)兩個(gè)不等價(jià),為什么?
問題3:CrossOver(Ma1,Ma2) 和 CrossOver(Ma1[1], Ma2[1]) 運(yùn)算結(jié)果是不是應(yīng)該相差1根K線?
實(shí)測(cè)兩個(gè)不等價(jià)(期望是相差1根K線,實(shí)際運(yùn)結(jié)果不同),為什么?
- TB技術(shù)人員:
本帖最后由 小米 于 2013-7-17 15:10 編輯
首先,要確認(rèn)一下,你下述三個(gè)問題的代碼在校驗(yàn)過程中,都出了可能有邏輯錯(cuò)誤的警告嗎??
如果有出,那你的上述這些測(cè)試結(jié)果基本上沒有什么參考價(jià)值。
1. crossover( ),crossunder()等函數(shù)的運(yùn)算中,計(jì)算的參數(shù)是需要序列值的。
如果這類函數(shù)的賦值運(yùn)算放在條件里或是受限制,那么可能會(huì)因?yàn)槿≈捣秶南拗贫荒艿谜_的計(jì)算結(jié)果。
遇到這類的函數(shù),請(qǐng)嘗試加上一個(gè)中間變量,在條件外賦值,再代入條件內(nèi)的判斷使用。例如:- vars
- bool aa;
- begin
- aa = crossover(ma1,ma2);
- if(aa) ......
復(fù)制代碼2. 如前面提示的,你的驗(yàn)證代碼若是按第1條里那樣寫的,基本上可以將這兩個(gè)寫法視作等價(jià)的。
略有不同,是在等到ma1[1]==ma2[1]時(shí),crossover會(huì)順延到下一個(gè)bar判斷,若下一個(gè)bar的ma1[1]<ma2[1]成立,則crossover滿足(具體運(yùn)算規(guī)則可見系統(tǒng)內(nèi)建函數(shù)的代碼)。而你所寫的 Ma1[1] < Ma2[1] && Ma[0]>Ma2[0]則會(huì)在ma1[1]==ma2[1]時(shí)將這個(gè)布爾為否了。。
3. 在前面所說的正確方式下進(jìn)行的運(yùn)算,這兩個(gè)寫法的結(jié)果應(yīng)該是相差一個(gè)K線的。- vars
- bool aa;
- bool bb;
- begin
- aa = crossover(ma1,ma2);
- bb = crossover(ma1[1],ma2[1]);
- ....
復(fù)制代碼