小幫手好,
我練習寫了一個腳本去計算漲停板持續的時間,用日線回測看結果
我的想法是:
因為日線的逐筆回測是用一分鐘K去模擬的,那我就加了一個計數器
日K棒的OHLCV會有270次資料的更新
當Close=漲停價時,我計數器就+1
這樣日K就能獲得漲停的時間累積(分鐘)
同理,漲停後若再打開,我再用一個計數器算出炸開的時間(分鐘)
可是寫這一步print出來發現確實漲停後的每分鐘都跳進if流程
如果某一天漲停持續30分鐘,就print結果30次
但是計數器的值卻都一直是1, 無法得到我想要的30
我以為是變數宣告問題,然而intrabarpersist不管加上與否都結果一樣
看了intrbarpersist範例,感覺越看越不懂
在日線回測條件下,time=0, 無法用timediff函數
那我這個計數器問題是什麼原因?
腳本需要改成以分鐘回測嗎?
我想寫一個警示腳本,能計算一天中漲停板的持續時間,還有中途漲停打開的累計時間
還有打開後又封回漲停板的次數累計
特別是一天中開開關關這種漲停板好難寫
settotalbar(Length + 3);
variable:intraBarPersist utime(0);
if date > date [1] then utime=0;
if BarFreq = "D" and OpenD(0) < GetField("漲停價", "D") then
if Close = GetField("漲停價", "D") then
begin
utime += 1;
print("Date",date,"time",time,"utime", numtostr(utime,1));
ret=1;
end;
2 評論