Return 應該是跳出整個執行 , 我用在停損判讀中 如下 :
if 停損條件 then begin
setposition(0);
return;
end;
但程式執行交易時 , 會停損但程式繼續執行不會停止腳本 .
是不是有使用限制呢?
Return 應該是跳出整個執行 , 我用在停損判讀中 如下 :
if 停損條件 then begin
setposition(0);
return;
end;
但程式執行交易時 , 會停損但程式繼續執行不會停止腳本 .
是不是有使用限制呢?
我又試了 if filled=0 then return ; 但結果仍然沒有中斷執行.
我再試試 , 謝謝.
我又試了 , 還是失敗 .
if 停損條件 then begin
setposition(0);
if filled=0 then raiseruntimeerror ;
end;
如果從安控中限制交易次數 , 是定義執行腳本觸發交易條件的(買+賣)總次數嗎 ?
Hello POP,
您可以參考 setposition 的說明,要該次腳本運算結束後系統才會依據交易指令去下單。
所以這種寫法並不會觸發 raiseruntimeerror。(停損執行時還有庫存,沒有庫存的時候不會執行停損)
小幫手會建議您改用變數來紀錄是否有停損出場過,如果有的話才raiseruntimeerror。
舉例來說:
var: intrabarpersist _stoploss(0);
if 停損條件 then begin
setposition(0);
_stoploss = 1;
end;
if _stoploss = 1 and filled = 0 then raiseruntimeerror("停損出場故中斷");
我再試試 , 感謝.
程式停損後還是沒有停 , 我再試試別的方式
程式如下:
condition21=停損條件;
if condition21 then
begin
setposition(0);
stoploss = 1;
end;
if stoploss = 1 and filled = 0 then raiseruntimeerror("停損出場");
Hello POP,
小幫手建議您可以使用 print 函數將相關變數印出檢查。
推測可能是因為您逐筆洗價導致變數在同根Bar的洗價當中數值沒有改變。
可參考 intrabarpersist 的說明。
問題解決了 , 謝謝.
9 評論