抓取開盤第1.2根價格錯誤

  •   143 
  • 最後發表   Pierce  2022 三月 24
Pierce 發文於   2022/03/21

頻率3分鐘、沒有勾逐筆洗價、啟動後只觸發一次,執行商品5425。

我想抓取3分鐘K線開盤的第一根K棒與第二根K棒的櫃買價格、商品價格與均價,然後在第二根跑完(9:06)開始執行,print結果有誤,currentbar抓取的數字是7,應該是要2,也因此價格也不是第1.2根K的

 

variable: BarNumberOfToday(0);

variable: otcclose(0);

variable: avp(0);

settotalbar(5);

 

if  Barinterval=3 and barfreq ="Min" then begin  //適用於3分鐘線

 

otcclose = GetSymbolField("OTC.TW","收盤價");

avp = GetField("均價");

 

if Date <> Date[1] then 

BarNumberOfToday=1

else 

BarNumberOfToday+=1;{記錄今天的Bar數}

 

if BarNumberOfToday=2 then begin

 

Print(NumToStr(date, 0) , NumToStr(time,0), BarNumberOfToday, currentBar, otcclose[currentBar -1], otcclose[currentBar -2], close[currentBar -1], close[currentBar -2], avp[currentBar -1], avp[currentBar -2]);

 

end;

end;

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

Hello Pierce,

 

CurrentBar 是從資料預讀筆數開始計算,所以不會是您啟動當下的時候等於1。

另外,您的BarNumberOfToday是從1開始 (當天第1根就會是1),所以您在print的時候是要取1跟0,而不是currentBar-2跟currentBar -1。

然後您在print的時候可以同時把 date[1] 和 time[1] print出來,就可以確認是否是當天前兩根Bar。

為了避免剛開始運算時BarNumberOfToday的錯誤(開始計算時在盤中導致BarNumberOfToday等於2但並不是開盤第二根Bar),可以在print時多加上一個 currentbar > 2 的條件。

 

發表回覆
Close