想問多條件判斷停損失效

  •   243 
  • 最後發表   yunqq  2021 八月 06
yunqq 發文於   2021/08/05

小幫手您好 我改寫移動停利(做空) 的語法時
回測2021/8/4的商品6164 (尾盤拉高應該要停損)
無論時停損條件1發生或停損條件2發生都無法成功停損
不知道我是哪邊寫錯? 請小幫手幫我看看
Q2 我是想寫 如果還達不到停利標準 ,股價反轉,看哪個條件停損條件先發生就觸發平倉 不知道這樣寫對不對

if position=floor(value99) and Filled = floor(value99) then begin
    { 依照成本價格設定停損/停利 }
    var: intrabarpersist stoploss_percent(0);

    { 計算停損價格 }
    if stoploss_percent = 0 then begin
        stoploss_percent = FilledAvgPrice + loss_percent;
    end;

    { 如果價格下跌的話, 則往下挪動停損價格. 停損價格只會越來越低 }
    if Close < FilledAvgPrice then begin
        if Close + loss_percent < stoploss_percent then begin
            stoploss_percent = Close + loss_percent;
        end;    
    end;    

    if profit_percent > 0 and Close <= FilledAvgPrice - profit_percent then begin
        { 停利 }
        SetPosition(0);
        stoploss_percent = 0;
    end else if Close >= stoploss_percent then begin     
        SetPosition(0);
        stoploss_percent = 0;
    
end else if Close >= FilledAvgPrice*1.015 then begin
{ 停損1 }
SetPosition(0); stoploss_percent = 0; alert("停損1 ");
end else if Close >= FilledAvgPrice and C>=AH then begin { 停損2 } SetPosition(0); stoploss_percent = 0; alert("停損2 "); end; end; //**無論如何都早上盤收盤前平倉** if position<>0 and Time>=out_time then SetPosition(0);

 

XQ小幫手 發文於   2021/08/06

Hello yunqq,

 

請您附上交易腳本時只要附上有問題部分的其中1個腳本即可。

不需要將全部附上。

小幫手不確定您敘述的問題是發生在哪一個腳本,所以針對您文章內的程式碼進行說明。

首先這個腳本只貼了一部份,因為很多變數參數都沒有命名。

接下來 stoploss_percent = FilledAvgPrice + loss_percent;

小幫手建議您不要用 percent 當作變數名字,因為由您的計算是來看您是直接加上點數的。

假設您在150時放空,且loss_percent設為10的話,這代表您的停損點會是 150 + 10 = 160,而不是 150 * 1.1 = 165。

小幫手看了一下您附上的腳本大多設為10點,換句話說,您需要向上拉10點才會停損。

就您提到的6164來看移動停損出場這應該是不可能達成的。

 

另外兩個停損  Close >= FilledAvgPrice*1.015 和 Close >= FilledAvgPrice and C>=AH。 

小幫手會建議您將其直接print出來看是否有達成卻沒有觸發的狀況。

您可以加一行 print(date, time, close, FilledAvgPrice, FilledAvgPrice*1.015, AH);

來看是否有發生觸發但沒有出場的狀況。

您的寫法看起來是沒有問題的,問題應該是出在沒有觸發條件上。

小幫手另外建議在判斷進出場的時候一律加上部位條件(像是 position <> 0)會比較好,避免快市時頻繁重複取消掛單的動作。

 

至於時間限制的話,這會取決於您是實際交易還是模擬,您用的是什麼頻率影響。

由於XQ的time回傳的時當根Bar開始的時間。

如果您用的時間頻率為15分鐘或以上的話,會因為最後一根Bar的時間小於131500而導致出不了場。

另外收盤前的一段時間6164漲到了當日的漲停價,這也有可能是造成您出不了場的狀況。(尤其是實際交易的話)

 

如果您還是有問題的話,麻煩您提供 有問題的交易中心匯出檔勾選(包含)交易腳本、當日交易的設定與進場時間、以及XQ Log 來檢驗。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。

您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw且附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

發表回覆
Close