關(guān)于BarsSinceEntry應(yīng)用,資料中說:
? ?BarsSinceEntry
(PosBack)
參數(shù)說明: PosBack —— 數(shù)值表達(dá)式,用來指定部位:
???????????????0 —— 未平倉部位;
???????????????1 —— 上一個(gè)平倉部位(最后一個(gè)平倉部位);
???????????????2 —— 上二個(gè)平倉部位,依次類推。
若 PosBack
?未指定,則預(yù)設(shè)為未平倉部位。
? ? 如果我要求上次平倉到現(xiàn)在建倉的K線不是同一個(gè)K線,是不是就是如下寫法呢?
? ??Value2=BarsSinceEntry(1);
? ?if marketposition=0 ?and var6=0 and count<=1 ?and condition40 ?and Value2>0 ?then ?begin
? sellshort ?lots shares next bar at round((Open+ma),0) stop;
? 很遺憾的是我如此寫進(jìn)去時(shí),發(fā)現(xiàn)沒信號(hào)。請(qǐng)老師指教
?
關(guān)于您的信號(hào)加載到圖表上為什么沒有信號(hào),可能是因?yàn)槟鷮?duì)于barssinceentry這個(gè)關(guān)鍵字的使用不當(dāng)導(dǎo)致的,當(dāng)然也有可能是其它的問題(您沒有在這個(gè)帖子上貼出來),在敘述我對(duì)您的代碼的問題之前,先來敘述一下這個(gè)關(guān)鍵字的意思,看下面的例子:
圖中,分別在currentbar=51的時(shí)候進(jìn)場,在currentbar=54的時(shí)候出場,在currentbar=57的時(shí)候進(jìn)場;之所以,barssinceentry(1)在currentbar=54時(shí)的才有值,值為3(代碼上一個(gè)已經(jīng)平倉部位中第一筆進(jìn)場的bar到當(dāng)根bar的距離)是因?yàn)橹坝幸呀?jīng)平倉部位的產(chǎn)生(即在currentbar為54時(shí)全部出場,從而產(chǎn)生了已經(jīng)平倉部位);而barssinceentry(0)在currentbar為51和57時(shí)才有值,值為0(當(dāng)前部位的進(jìn)場的bar到當(dāng)根bar的距離正好是0)。
而您的代碼中,限制barssinceentry(1)>0,在圖表上沒有任何信號(hào)時(shí),也就是沒有任何歷史平倉部位時(shí),barssinceentry(1)始終是0,從而barssinceentry(1)>0始終是false,這個(gè)限制了您的信號(hào)始終不會(huì)有進(jìn)場;應(yīng)該是先有進(jìn)場,才有歷史平倉部分,然后barssinceentry(1)>0才可能是true
?
也就是說這詞不可用于回測,但可實(shí)盤
?
抱歉,說了那么多,讓您誤解了!
問題在于您的進(jìn)出場條件判斷需要修改一下,這個(gè)關(guān)鍵字可以用于回測和實(shí)盤中。您的代碼更正如下:
if maxpositionsago=1 then
value2=1
?
else value2=barssinceentry(1);
??if marketposition=0 ?and var6=0 and count<=1 ?and condition40 ?and Value2>0 ?then ?begin
?
? sellshort ?lots shares next bar at round((Open+ma),0) stop;
?
抱歉,說了那么多,讓您誤解了!
問題在于您的進(jìn)出場條件判斷需要修改一下,這個(gè)關(guān)鍵字可以用于回測和實(shí)盤中。您的代碼更正如下:
if maxpositionsago=1 then
value2=1
?
else value2=barssinceentry(1);
??if marketposition=0 ?and var6=0 and count<=1 ?and condition40 ?and Value2>0 ?then ?begin
?
? sellshort ?lots shares next bar at round((Open+ma),0) stop;