請教大家,如何在一個if判斷式裏,同時平倉又開倉呢?

  •   95 
  • 最後發表   taipeineo  2023 六月 07
taipeineo 發文於   2023/06/05

Hi, 大家好, 今天在回測過程裏, 發現了一個小問題,不知道該如何解決, 所以上來請教大家,謝謝大家!

用以下2段程式碼當範例:
程式碼1:(可以正常做到條件觸發時,將部位先平倉,然後開新倉)

condition1=ema(close,5)>ema(close,10);
condition2=ema(close,5)<ema(close,10);
if condition1 then begin
setposition(1,market);
end;

if condition2 then begin
setposition(-1,market);
end;


程式碼2:(只會平倉,無法開新倉,即無法做到條件觸發時,將部位先平倉,然後開新倉),
condition1=ema(close,5)>ema(close,10);
condition2=ema(close,5)<ema(close,10);
if condition1 then begin
setposition(0,market);
setposition(1,market);
end;

if condition2 then begin
setposition(0,market);
setposition(-1,market);
end;

而我想要的功能,類似程式碼2,請問大家,要如何做到呢? 謝謝大家...
類似這樣下面這樣,但下面這段程式實際回測,只會平倉,無法開新倉:

condition1 = 開多單條件;
condition2 = 開空單條件;
condition3 = 平倉多單條件;
condition4 = 平倉空單條件;
if condition3 then begin //平倉多單條件成立, 先平倉多單
    setposition(0,market);
            if condition2 then begin  //開空單條件成立, 開空單,沒成立就算了,只執行上面的平倉多單而已。
                  setposition(-1,market);
            end;
end;

 

if condition4 then begin  //平倉空單條件成立, 先平倉空單
setposition(0,market); 
 if condition1 then begin  //開多單條件成立, 開多單,沒成立就算了,只執行上面的平倉空單而已。                  setposition(-1,market);
            end;
end;


排序方式: 標準 | 最新
taipeineo 發文於   2023/06/06

喔! 原來如此..
是同一個觸發下,有2個以上的setposition,只會執行第1個而已...

XQ小幫手 發文於   2023/06/07

Hello taipeineo,

 

是的,在同一次腳本執行中,交易指令只會執行一次。

如果腳本運算中有執行到多個交易指令,只有第一個會被執行。

細節可參考 setposition 的說明。

發表回覆
Close