為啥這樣計(jì)算兩根K線之間的間距是錯(cuò)的? [開(kāi)拓者 TB]
- 咨詢內(nèi)容:
我想計(jì)算當(dāng)前bar與滿足條件的信號(hào)K線bar的索引號(hào)差值,即計(jì)算出滿足條件的K線bar與當(dāng)前bar間隔有多少根K線。
因?yàn)槊扛鷅ar的索引值都會(huì)變動(dòng),所以我想使用一個(gè)邏輯變量來(lái)過(guò)濾滿足條件的K線bar的索引值的變動(dòng),即出現(xiàn)了信號(hào)K線,記錄下該K線bar的索引值后,就啟用過(guò)濾條件,使該信
號(hào)K線的索引值不受新出現(xiàn)的K的索引值的影響。設(shè)計(jì)了以下代碼
Vars
Numeric SignalEntryCurrentBar; //記錄滿足條件K線bar的索引值
Bool EntryCondition; //開(kāi)倉(cāng)條件
Bool EntrySignalFilter(False); //開(kāi)倉(cāng)信號(hào)條件的邏輯過(guò)濾變量,初始值為不啟用過(guò)濾
Numeric i; //記錄K線間距的變量
Begin
If(!EntrySignalFilter) //當(dāng)不啟用信號(hào)過(guò)濾時(shí)
{
If(EntryCondition==True) //當(dāng)滿足開(kāi)倉(cāng)條件時(shí)
{
SignalEntryCurrentBar=CurrentBar; //記錄滿足開(kāi)倉(cāng)條件的K線索引值
EntrySignalFilter=True; //啟用信號(hào)過(guò)濾,目的是使信號(hào)條件的K線的索引值固定,不隨之后每跟K線的索引值變動(dòng)而變動(dòng)
}
}
i=CurrentBar-SignalEntryCurrentBar; //記錄當(dāng)前K線與滿足條件信號(hào)K線的間距
Commentary("CurrentBar:"+Text(CurrentBar));
Commentary("SignalEntryCurrentBar:"+Text(SignalEntryCurrentBar));
Commentary("i:"+Text(i));
End
我是想記錄了信號(hào)K線的索引值之后,改變EntrySignalFilter的值,使EntrySignalFilter=True,這樣回到If(!EntrySignalFilter)的判斷上,就會(huì)直接過(guò)濾掉中間的代碼,但是
這段代碼根本起不到想要的作用,不知道哪里出現(xiàn)了問(wèn)題。 - TB技術(shù)人員:
多種方法可以實(shí)現(xiàn)。
- vars
- numericseries myflag;
- begin
- if(conditionbuy==true)
- {
- buy;
- myflag = currentbar;
- }
- currentbar - myflag //就可以得到當(dāng)前bar與信號(hào)位置之間間隔了多少K線。
- vars
- numericseries myflag
- begin
- if(conditionbuy)
- {
- buy;
- myflag = 1;
- }else
- {
- myflag = myflag+1;
- }
- vars
- TB客服:
小米 發(fā)表于 2015-3-30 08:42
多種方法可以實(shí)現(xiàn)。
我就是使用第一種想法,但是沒(méi)有效果。currentbar會(huì)隨著每跟bar的更新而更新。比如說(shuō),均線的方向向上,這個(gè)條件在一定時(shí)間內(nèi)都滿足,但不一定就要在這個(gè)條件滿足時(shí)就開(kāi)始交易,還有其他的條件來(lái)控制交易。我是想要從一開(kāi)始發(fā)生均線方向向上的時(shí)候,就記錄下這個(gè)條件的bar的currentbar,然后這個(gè)值是固定的,不隨著之后出現(xiàn)的bar的索引值的變動(dòng)而變動(dòng)(因?yàn)榫€方向向上可能在第一次發(fā)生這個(gè)現(xiàn)象后都成立,而如果使用myflag=currentbar,每出現(xiàn)一根bar又滿足均線方向的條件,myflag就會(huì)隨著currentbar的變動(dòng)而變動(dòng)),我要用固定的myflag來(lái)計(jì)算之后的bar到第一次滿足均線方向向上的條件的bar的之間的間距。 - 網(wǎng)友回復(fù):
stephen49 發(fā)表于 2015-3-30 11:20
我就是使用第一種想法,但是沒(méi)有效果。currentbar會(huì)隨著每跟bar的更新而更新。比如說(shuō),均線的方向向上, ...
需要多加一個(gè)變量來(lái)控制記錄的起始點(diǎn)就好。- vars
- numericseries myflag;
- numericseries startbar;
- begin
- if(condition==true && myflag==0)
- {
- startbar = currentbar;
- myflag =1;
- }
- //但是要注意,在這段條件結(jié)束后,需要將myflag清零的動(dòng)作。
- vars
- 網(wǎng)友回復(fù):
小米 發(fā)表于 2015-3-30 11:23
需要多加一個(gè)變量來(lái)控制記錄的起始點(diǎn)就好。
我從新寫了一下代碼:
Params
Numeric MAPeriod(10); //定義MA周期
Vars
NumericSeries MAValue; //定義MA變量
Numeric i; //儲(chǔ)存K線間距值
Numeric startbar(0);
Bool Condition;
numericseries myflag;
Begin
MAValue=Average(C,MAPeriod);
Condition = MAValue>MAValue[1];
If(Condition==True && myflag==0)
{
startbar=CurrentBar;
myflag=1;
}
i=CurrentBar-startbar;
Commentary("CurrentBar:"+Text(CurrentBar));
Commentary("startbar:"+Text(startbar));
Commentary("i:"+Text(i));
End
我試過(guò)了,startbar還是隨著每跟bar的變動(dòng)而變動(dòng),i值永遠(yuǎn)都是0.你可以在圖表上試一試。
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容