小幫手您好

  •   175 
  • 最後發表   小陽  2022 十月 28
小陽 發文於   2022/10/13

小幫手您好:

在5分K中 成交量大於過去5根K棒是這樣寫 然後RET → V> highest(V,5); RET=1;.

第一根5分K是090000 第二根是090500 第三根是091000 第四根是091500 第五根是092000~092459.

我想要在090959時 第二根5分K 090500跳出RET 也就是當日第二根5分K的成交量大於當日第一根5分K的成交量 就RET

但當下今天的5分K只有兩根 如果往前推五根5分K的話 會算到上個交易日的5分K嗎? 這問題只有在092459之前才會有..請問我該怎麼解決?

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/10/14

Hello 小陽,

 

是的,會算到前一天的Bar,因為該函數就是抓5根Bar。

您可以用變數計當日算過了幾根Bar,並以此判斷要取多少根Bar的Highest。

還有,成交量大於過去5根Bar應該是 volume > highest(volume[1], 5); 因為 highest 在運算的時候會包含當根Bar。

舉例來說:

if date <> date[1] then value1 = 0;  //用value1記錄當天過了幾根Bar

value1 += 1;

 

if value1 < 6 and value1 > 1 then begin

    value2 = simplehighest(volume[1], value1 - 1);

    end

else if value1 >= 6 then begin

    value2 = simplehighest(volume, 5);

    end

else if value1 = 1 then begin

    value2 = volume;

    end;

 

if volume > value2 then ret = 1;

 

需注意 highest 是以節省效能的方式撰寫,後面的期數不能為變數,所以改使用 simplehighest 避免運算錯誤。

 

小陽 發文於   2022/10/26

1.if date <> date[1] then value1 = 0;  //用value1記錄當天過了幾根Bar

2.value1 += 1;

請問第一行是什麼意思?

第二行累加我懂 但為什麼能把value1當作是今天經過幾根bar呢?

XQ小幫手 發文於   2022/10/28

Hello 小陽,

 

if date <> date[1] then value1 = 0; 是讓 value1 在換日的時候歸0。

或是您也可以參考 IsSessionFirstBar 函數,有類似的效果。

而每運算一次 value1 就會增加1,所以就相當於當天的第幾根Bar。

須注意這種狀況下每根Bar只會增加一次,原因可參考 IntrabarPersist 的說明。

您可以使用 print 函數將相關資訊給印出來,或許會比較好理解。

發表回覆
Close