自動交易中心-移動停利(依百分比)

  •   417 
  • 最後發表   XQ Charlie  2023 八月 16
XQ Charlie 發文於   2023/08/14

請問小編,我依照以下設定了移動停利腳本,但回測都沒觸發,可否幫忙看是否有錯誤的地方 謝謝

input: profit_percent(40, "停利(%)");

input: profit_drawback_percent(15, "停利回跌(%)");

input: loss_percent(50, "停損(%)");

 

 

if Position = 1 and Filled = 1 then begin

var: intrabarpersist max_profit_percent(0); { 啟動停利後最大獲利點 }

 

if loss_percent > 0 and Close <= FilledAvgPrice*(1-0.01*loss_percent) then begin

{ 停損 }

SetPosition(0);

max_profit_percent = 0;

 

end else begin

 

{ 判斷是否要啟動停利 }

if max_profit_percent = 0 and Close >= FilledAvgPrice*(1+0.01*loss_percent) then begin

max_profit_percent = Close;

end;

 

if max_profit_percent <> 0 then begin

if Close <= max_profit_percent*(1-0.01*profit_drawback_percent) then begin

{ 移動停利 }

SetPosition(0);

max_profit_percent = 0;

end else if Close > max_profit_percent then begin

{ 移動最大獲利點 }

max_profit_percent = Close;

end;

end;

end;

 

end;

 

 

XQ小幫手 發文於   2023/08/16

Hello XQ Charlie,

 

小幫手建議您可以使用 print 函數將相關數值印出檢查。

XS編輯器裡也有內建的移動停損停利出場方式可以參考。

 

您的腳本判斷是否要移動停利時少了一個end; 並寫到腳本最後面,故導致

if max_profit_percent <> 0 then begin

以下的判斷會要在

if max_profit_percent = 0 and Close >= FilledAvgPrice*(1+0.01*loss_percent)

符合後才會進入。

所以在判斷要啟動停利並給max_profit_percent值以後,就不會用移動停利出場

 

建議您可以適當的使用縮排避免撰寫上的錯誤。

發表回覆
Close