XQ程式問題

  •   91 
  • 最後發表   diva0220  2025 九月 10
diva0220 發文於   2025/09/05

版主擬好,請問一下我的自動停利停損程式怎麼不會執行,策略部位四個選項都試過了,都不會執行,不管是手動下單,還是自動下單,都不會執行,可以幫我看一下是哪裡有問題嗎?

//  OCO 停利停損 (只針對新進場單)

// -----------------------------------

input: profit_points(500, "停利(點)"); 

input: loss_points(300, "停損(點)");

 

vars: entry_price(0), last_filled(0);

 

// 初始化

if CurrentBar = 1 then

    last_filled = Filled;

 

// 偵測新進場

if Filled <> last_filled then begin

    // 只記錄最新進場均價,不處理舊單

    entry_price = FilledAvgPrice;

    last_filled = Filled;

end;

 

// 有新單在跑才做判斷

if Filled > 0 then begin

    // 多單停利

    if profit_points > 0 and C >= entry_price + profit_points then

        SetPosition(0, label:="多單停利出場");

    // 多單停損

    if loss_points > 0 and C <= entry_price - loss_points then

        SetPosition(0, label:="多單停損出場");

end

else if Filled < 0 then begin

    // 空單停利

    if profit_points > 0 and C <= entry_price - profit_points then

        SetPosition(0, label:="空單停利出場");

    // 空單停損

    if loss_points > 0 and C >= entry_price + loss_points then

        SetPosition(0, label:="空單停損出場");

end;

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/09/05

(1)跑歷史K棒時,Filled都會是0。跑完歷史K棒後,才會抓庫存,因此即時資料進來之前,Filled 與 last_filled 都是0。

(2)若你先手動下單,成交之後再啟動策略,則策略部位選擇與庫存同步,其他三個核取方塊都不要打勾,且程式修改如下,就可在條件符合時出場。不過,這裡要注意,這樣做會將昨天的庫存一起平倉。

if Position > 0 then begin

    // 多單停利

    if profit_points > 0 and C >= filledAvgPrice + profit_points then

        SetPosition(0, label:="多單停利出場");

    // 多單停損

    if loss_points > 0 and C <= filledAvgPrice - loss_points then

        SetPosition(0, label:="多單停損出場");

end

else if Position < 0 then begin

    // 空單停利

    if profit_points > 0 and C <= filledAvgPrice - profit_points then

        SetPosition(0, label:="空單停利出場");

    // 空單停損

    if loss_points > 0 and C >= filledAvgPrice + loss_points then

        SetPosition(0, label:="空單停損出場");

end;

(3)若你是先啟動策略,然後才手動下單,則策略部位選擇與庫存同步,但執行商品不能有手動下單的商品,然後將庫存異動時自動加入執行打勾即可。這樣做的話,手動下單之後,該商品就會加入監控,且只針對剛下單的商品數量監控。

diva0220 發文於   2025/09/07

 

     謝謝教授,我今天試試看,但是你提到的說明是這個程式不能夠對自動下單的商品做監控是嗎?

虎科大許教授 發文於   2025/09/07

若你指的是(3)的說明,答案是的。手動下單成交後,策略就會將該商品加入執行商品。

XS小編 發文於   2025/09/10

Hello diva0220,

 

小編補充,如果您想要的是A策略進場,B策略出場的話,可以藉由將策略設定為與庫存同步且勾選庫存異動時自動同步數值。

這樣只要A和B策略執行相同的商品,A策略進場後B策略的庫存也會跟著異動。

發表回覆
Close