有用switch語句做移動止盈,以下是開1手的語句?
switch(contractprofit)?
? ? ? begin
? ? ? case 1 to 700:
? ? ? SetStopContract;
? ? ? setbreakeven(2*ATR*bigpointvalue);?
? ? ? case 701 to 1000:
? ? ? SetStopContract;?
? ? ? setdollartrailing(maxpositionprofit(0)*0.30);
? ? ? case 1001 to 1500:
? ? ? SetStopContract;
? ? ? setdollartrailing(maxpositionprofit(0)*0.25);
? ? ? case 1501 to 2000:
? ? ? SetStopContract;
? ? ? setdollartrailing(maxpositionprofit(0)*0.20);
? ? ? case 2001 to 3000:
? ? ? SetStopContract;
? ? ? setdollartrailing(maxpositionprofit(0)*0.15);
? ? ? case 3001 to 10000:
? ? ? SetStopContract;
? ? ? setdollartrailing(maxpositionprofit(0)*0.1);
? ? ? end;
問題是,我現(xiàn)在要每次開2手、3手。。。,但是不知道盈利區(qū)間如何才能相應(yīng)的跟著變化?
?
雖然不太明白您想表達的意思,但是您的代碼還是有幾點需要說明一下:
第一、您的這個是只允許一筆進場還是可以允許多筆進場,您只是增加每筆進場的手?jǐn)?shù)是嗎?
第二、若您只是考慮一筆進場,并且現(xiàn)在的問題是增加進場的手?jǐn)?shù),那么您只需要將setbreakeven(2*ATR*bigpointvalue);更改成setbreakeven(2*currentcontracts*ATR*bigpointvalue);即可
第三、若您還考慮多筆進場,并且增加每次進場的手?jǐn)?shù),那么setdollartrailing和setbreakeven的參數(shù)都需要調(diào)整一下,因為maxpositionprofit(0)計算的是當(dāng)前持倉合并的最大獲利金額,并不是單獨每筆持倉的最大獲利金額。
第四、對于setbreakeven(2*ATR*bigpointvalue); 的參數(shù)不建議使用直接使用變量的形式,您可以通過條件判斷,當(dāng)某個條件滿足時再使用某個參數(shù),當(dāng)另一個條件滿足時再使用其它變量的形式;具體原因您需要學(xué)習(xí)一下帖子“Set系列關(guān)鍵字”
?
我的意思是每總共開1手,只開一次,當(dāng)我1手盈利700-1000時候開啟移動止盈,只要回撤0.3就平倉出倉,語句如下
case 701 to 1000:
? ? ? SetStopContract;?
? ? ? setdollartrailing(maxpositionprofit(0)*0.30);
過一段時間資金增加了,我每次開2手入場,這時候代碼里的止盈區(qū)間應(yīng)該為2*701--2*1000,而不是701-1000,我不知道如何改代碼可以實現(xiàn)我這個功能
?
范例如下:
var: var0(1), var1(7);
switch(4)
begin
case var0 to var1:
print("currentbar=",currentbar,",var0=",var0);
end;
您只需要通過動態(tài)更改變量var0和var1的值即可;比如,當(dāng)您委托1手的時候,設(shè)置var0和var1分別為701和1000,而當(dāng)委托2手的時候,設(shè)置var0和var1分別為2*701和2*1000即可。