非bar內模式下,比如策略依次在不同價位開了2筆RB的多單,我希望對每一筆多單分別按其成本價以下10個點進行止損,但我不希望用內置的setstoploss。舉例來說,當其中任何一筆多單成交后,如果下一根BAR價格跌到該筆多單的開倉價以下10個點,就賣出平倉。以下語法(見最后)能否實現對每一筆多單進行止損?這里面我主要想明確兩點:
1,entryprice是否能智能的取到每一筆多單的成本價?
2,當第一根BAR開倉第一筆RB多單后,假設開倉價3000;第二根BAR又開了第二筆RB多單,假設開倉價3020,那么假設我們現在處于第二根BAR的時間范圍內,且第二筆多單成交后價格從其成本價回落10個點,價格到達3010,那么此時第二筆多單在以下語法中是即時止損呢還是等到再下一根BAR再判斷?第二筆多單開倉成交后entryprice是否立即就取到3020的開倉價了?并且此時第一筆RB多單的開倉價entryprice還是3000?
3,我理解是marketposition>0對于第一筆開倉來說,到第二根BAR就符合了;但是對于第二筆開倉,站在第二根BAR的時間范圍內,我們有兩筆倉位,此時marketposition>0對于第二筆開倉是怎么判斷的?是否也會對兩筆開倉分別考慮?即第二筆多單的marketposition此時還是0,要等到再下一根BAR才會大于0?還是說marketposition>0是只要前一根BAR已經有開倉,到第二根BAR就對于第二筆開倉在開倉BAR也是marketposition大于0了?
4,當其中某一筆多單在開倉后的任何一根BAR內觸及該筆多單的止損,則于下一根K線開盤市價平倉該筆多單,語法怎么寫?
[IntrabarOrderGeneration=false;]
input:target(10);
if marketposition>0 then
sell 1 contract total next bar at entryprice-target stop;
?
以下回復分別對應您的問題:
回復1. 您需要學習一下論壇帖子“OpenEntry和PosTrade系列關鍵字”;關鍵字entryprice只反應指定部位第一筆進場的價格,沒有辦法返回第二筆的進場價格。
回復2. 關鍵字可以反應實際的數值,但是使用關鍵字來取值這個動作卻不是實時的,舉例說明一下,在非bar內模式下,在編號為13的bar的形成過程中,第一筆進場單成交了,這時entryprice可以即時反應進場價格,但是由于非bar模式下,信號只在每根bar的收盤時才計算一次,也就是”使用關鍵字entryprice取第一筆進場價“這個動作只能在收盤時才能執行;回來您說的這個例子來,第二筆進場了,并且價格回落10個點(假設第二筆進場在編號為40的bar的形成過程中成交的),但是其實并不會馬上對第二筆進場止損出場,因為在編號為39的bar的收盤時您并不會取到第二筆進場價格,所以也沒有辦法發送回落10個點的止損出場單,所以最終只會在編號為40的bar的收盤時進行判斷并且發送出場委托單。對于這種情況,建議您使用setstoploss關鍵字。
回復3.您的這個問題依然需要學習一下”回復1“中的帖子。
回復4.您的這種寫法也可以,下面我們來模擬一下進場和出場的過程:
在編號為20的bar的收盤時執行buy("first") next bar at market;然后在編號為21的bar的形成過程中"first"進場單成交了,成交價為3000;在編號為20的bar收盤時關鍵字marketposition取的值是0,entryprice取的值也是0,停損出場條件單的委托條件不成立,所以MC不會發送一個停損單;接著在編號為21的bar收盤時,通過關鍵字marketposition和entryprice取的值分別為1和3000,然后發送停損價為2990的停損單。
?
假設有多筆進場,語句:entryprice+10*minmove*point stop;這里的entrprice是否是指第一筆進場的價格?
?
如上圖測試所示,無論是否有加倉,只要當前部位一直未被平倉,那么entryname關鍵字始終返回的是當前部位第一筆進場的進場名稱。entryprice關鍵字也是一樣,始終返回當前未平倉部位的第一筆進場的成交價格,參考entryname關鍵字。
?
如上圖測試所示,無論是否有加倉,只要當前部位一直未被平倉,那么entryname關鍵字始終返回的是當前部位第一筆進場的進場名稱。entryprice關鍵字也是一樣,始終返回當前未平倉部位的第一筆進場的成交價格,參考entryname關鍵字。