小編你好 程式碼如下 執行商品為 台指近(一般) (日盤) 頻率為5分鐘 逐筆洗價
我想要計算開盤第一根5K的開盤價與收K價跟日夜盤的收盤比較
if (time=84500 and position = 0 and filled = 0) then begin KBarOfDay = 1; end
else begin KBarOfDay = KBarOfDay+1; end;
if KBarOfDay = 2 then //判斷是不是8:45第2根 判斷跳空點數
begin
//多方
condition1 = (open[KBarOfDay-1] > close[KBarOfDay]);
value1 = (ABSValue(open[KBarOfDay-1]-close[KBarOfDay]));
value2 = (GetSymbolField("FITXN*1.TF", "close")[KBarOfDay-1] - GetSymbolField("FITXN*1.TF", "close")[KBarOfDay]);
//空方
condition11 = (o[KBarOfDay-1] < close[KBarOfDay]) ;
value11 = (ABsValue(o[KBarOfDay-1]-c[KBarOfDay]));
value12 = (GetSymbolField("FITXN*1.TF", "close")[KBarOfDay-1] - GetSymbolField("FITXN*1.TF", "close")[KBarOfDay]);
if {條件} then begin
{...條件符合...}
end
else begin {...條件不符合...} end;
end;
以上的程式碼,都有利用print觀察變數,但發現一個問題是 回測的時候抓取的:
昨日夜盤收盤價(也就是04:55該K的收盤價) GetSymbolField("FITXN*1.TF", "close")[KBarOfDay] 是正確的
但盤中即時跑的print出來的是錯的 (會變成前一根04:50的收盤價)
GetSymbolField("FITXN*1.TF", "close")[KBarOfDay-1]
//以上語法也會抓到 04:55 的
//而不是如預期的在 KBarOfDay = 2 時(08:50) 抓前1根08:45 及前兩根 04:55
但同樣的寫法,在同商品(日盤)抓取的資料都是正確的。
0850 前一根 0845、前兩根為1340...就唯獨設定商品日盤、抓取全盤有誤
這個問題相當困擾,在回測的log檔是正確,但即時跑時會錯誤
該如何解決??
相當困擾....請幫忙解決
5 評論