請問XScript中,如何編寫 "單根K棒下,只觸發一次呢?

  •   562 
  • 最後發表   XUKG  2022 七月 19
XUKG 發文於   2022/07/07

請問各位賢達~

在期貨商品交易中,

如何撰寫程式,可以避免在同一根K棒內反覆觸發呢? (單根K棒內只觸發一次)

謝謝大家無私回覆

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

應該是這樣吧,沒有測試過,有問題再說。

    //環境設定:僅適用分鐘頻率(也可用於逐筆交易)

    var:intraBarPersist bar_once_ret(0),    //警示次數,0=尚未觸發警示,1=已觸發警示過一次
        _time(0);           //記錄K棒時間給下次跑腳本使用

    //在第一根K棒的時候,開始允許進入判斷
    if issessionFirstBar then begin bar_once_ret = 0;_time=time;end;

    //換K棒的時候,才可以進行if判斷
    if time<>_time then bar_once_ret = 0; 

    //觸發警示條件判斷(自行增加條件)
    if bar_once_ret = 0 
    then begin
        bar_once_ret= 1;    //只要觸發1次警示,下次就不進入判斷
        ret=1;
    end;

  • 按讚來自於
  • xukg8888
XQ小幫手 發文於   2022/07/12

Hello XUKG,

 

您可以使用intrabarpersist宣告的變數,來記錄觸發當下Bar的序號。

一個序號只能觸發一次即可。

舉例來說:

var: intrabarpersist _oncePerBar(0);

condition1 = ...觸發條件...;

if condiiton1 and _oncePerBar <> currentbar then begin

    ...觸發動作...

    _oncePerBar = currentbar;

    end;

這樣1根bar就只會執行一次觸發動作。

 

感謝 musashi 的熱心回覆。

XUKG 發文於   2022/07/13

感謝您的分享!! 非常有幫助!~ 謝謝!

 

XUKG 發文於   2022/07/13

小幫手總是不會讓人失望! 謝謝您~

只是這段有點看不太懂...這段是要放在策略什麼位置呢?

_oncePerBar = currentbar;

    end;

XQ小幫手 發文於   2022/07/19

Hello XUKG,

 

這是放在您希望1根Bar只想觸發1次地部分。

舉例來說,假設您是用策略雷達,然後條件是收盤價向上跨越10期均線的話:

var: intrabarpersist _oncePerBar(0);

condition1 = close cross over average(close, 10);

if condition1 and _oncePerBar <> currentbar then begin

    ret = 1;    //警示

    _oncePerBar = currentbar;   //更新 _oncePerBar 的數值

    end;

這樣1根Bar只會警示1次收盤價向上跨越10期均線。

發表回覆
Close