關於刪單問題

  •   161 
  • 最後發表   SHANG  2022 八月 25
SHANG 發文於   2022/08/19

小幫手您好 想請教一下 我最後一行有一個刪單的語法

if trueall(position <> filled, 3) then setposition(filled); 

但今天這股出現一個小bug(畢竟也使用了好久才發現這個錯誤)

就是 當條件觸發了 結果都沒有成交 觸發刪單條件 到這都沒問題 平常都是到這

但過5分鐘 又再觸發一次條件 結果就出現問題了 如圖所示

會出現 條件觸發 掛單 但 trueall(position <> filled, 3) 是要過完3根變成又刪單

結果掛單 刪單 掛單 刪單 不小心掛單的成交了 他要把部位調整成filled 就變成又把它買回來

讓部位變成0 等於瞬間白賠手續費

請問我該怎麼增加條件或修正呢?謝謝

因為這種情況真的超級少發生,我也是用好久才發現,所以來請教一下 謝謝 

(環境是5分k,所以3根等於15分鐘)

附加文件

排序方式: 標準 | 最新
musashi 發文於   2022/08/19

只有看圖片很難得知那裏出問題,可以試著用放入print函數把數據資料印出來找看看

SHANG 發文於   2022/08/21

因為這也很少發生,大概跑了7.8個月才遇到,而且回測也測不出來當下刪單的情況,不知道該怎麼下手,而且還有及時洗價5分K的K棒不會完全跟回測類似,所以上來探討看看有什麼可能是互相衝到的,目前只知道在觸發一次時是完全沒有問題的,只有當條件觸發第二次,可能又剛好在刪單的時間範圍內(但我也不太想降低變成2,變太快刪單),才導致的BUG

XQ小幫手 發文於   2022/08/25

Hello SHANG,

 

小幫手會建議您可以改用變數紀錄進場日期時間,若超過N根Bar或換日且部位不等於庫存的話出場。

舉例來說:

var: intrabarpersist _time(0), intrabarpersist _date(0);

condition1 = 進場條件;

if condition1 then begin

    setposition(1, open);

    _time = time;

    _date = date;

    end;

 

if time[3] >= _time or date <> _date and position <> filled then begin

    setposition(Filled);

    _time = 0;

    _date = 0;

    end;

這樣就可以避免您的狀況。(因為連續的進場刪單,所以 trueall(position <> filled, 3)會符合)

或是您也可以在出場判斷的時候,加上進場條件是否還符合的條件。

發表回覆
Close