如何避免同一條件被連續觸發

  •   248 
  • 最後發表   dansync  2021 十月 01
dansync 發文於   2021/09/26

以下是我自己嘗試寫的無限網格語法

但是我在回測中發現,有時會在同一天內重複觸發賣出或買入好幾張,

請問要如何調整,才能讓觸發買進或賣出時,確實更新lastprice、sprice、bprice,

以避免重複買賣呢? 謝謝!

 

    input: gridsize(10, "網格大小(%)");

    var:lastprice(0);
    var:sprice(0);
    var:bprice(0);

    if Position = 0 then begin
    SetPosition(10, MARKET);
    end;

    if FilledRecordCount > 0 then begin
    lastprice = FilledRecordPrice(FilledRecordCount);
    sprice = lastprice*(1+0.01*gridsize);
    bprice = lastprice/(1+0.01*gridsize);
    end;

    if Position <> Filled then begin
    Return;
    end;


    if close > sprice then begin
    Sell(Filled/100*gridsize, sprice);
    Return;
    End
    Else
    if close < bprice then begin
    Buy(Filled/100*gridsize, bprice);
    Return;
    end;

XQ小幫手 發文於   2021/10/01

Hello dansync,

 

由於 sell 跟 buy 是達成條件就會觸發,且不像 setposition 是將部位調整成指定口數,而是增減固定口數。

所以使用的時候需要多加注意。

小幫手這邊測試 lastprice、sprice、bprice 會更新沒有問題,您可以實際print出來觀察。

如果要限制一天只交易一次的話,可以設變數紀錄今天是否有交易過,然後每天重置該變數。

另外您 sell 跟 buy 的口數部分 Filled/100*gridsize  是否有寫錯?

依據您腳本上來看, 您一開始會買10口,所以filled會是10。

10 / 100 * 10(預設) 會是 1/100 似乎有點問題?

如果還是有問題的話,需要麻煩您提供回測相關的設定,並告訴小幫手是哪部分您覺得有誤,應該怎麼運作,讓小幫手來檢驗修正。

感謝。

發表回覆
Close