如何跨頻率抓取成交量

  •   378 
  • 最後發表   fancky  2022 三月 24
fancky 發文於   2022/03/17

請問小幫手,我在5分K的警示腳本寫以下程式,預估量大於平均周成交量,則跳出提醒,程式如下

可是放在雷達執行都會出現計算發生錯誤的問題,請幫我看一下是哪裡寫錯,以下是程式碼

 

input: Radarbar(8,"雷達起始K棒");

var: KBarOfDay(0);

if date<>date[1] then

begin

 

  KBarOfDay=1;

 

end else begin

 

  KBarOfDay+=1; //後面K棒都給他編碼

 

end;

 

if date = date[1] and KBarOfDay >= Radarbar then

begin

  value51 = q_EstimatedTotalVolume; //預估的成交量

  value52 = average(getField("volume","D")[1],5);

  value53 = average(getField("volume","D")[1],60);

end;

 

if date = date[1] and KBarOfDay = Radarbar then

begin

if value51 > value52*2 then

  ret =1;

if value51 > value53*2  then

  ret =1;

 

end;

 

附加文件

排序方式: 標準 | 最新
貓老大 發文於   2022/03/21

第二個 if 是錯的

if date = date[1] and KBarOfDay = Radarbar then

應該是

 

if date = date[1] and KBarOfDay >= Radarbar then

 

其實你把

if value51 > value52*2 then

  ret =1;

if value51 > value53*2  then

 

  ret =1;

直接搬到第一個 if 就好了

XQ小幫手 發文於   2022/03/24

 Hello fancky,

 

小幫手不太確定您腳本 date = date[1] and KBarOfDay = Radarbar 這一段是想要表達甚麼條件。

主要是您上面會在 KBarOfDay 大於等於 8 的時候才更新 value51 ~ value53 的值,但您只有在 KBarOfDay 等於8的時候檢查。

如果您只要在當天第8根Bar的時候檢查的話,那麼兩邊都包在 date = date[1] and KBarOfDay = Radarbar 裡面就可以了。

 

另外,小幫手覺得您的問題應該是出在資料筆數不足。

因為您使用5分鐘頻率,但value53卻要計算出60日的平均成交量。

您可以在腳本前面加上 setbackBar(65, "D"); 應該就可以解決問題。

 

感謝 貓老大 的熱心回覆。

發表回覆
Close