小幫手您好,
今日指標腳本在 1分K 處理 3693.TW 時,發生指標無法運算完成的狀況,經過小小測試後,測試腳本如下,發現 Cross Above在 2022/12/16 09:05:00 時無法正確執行完成:
SetBackBar (0);
var: dayOpenBar (0);
if isSessionFirstBar then
begin
dayOpenBar = CurrentBar;
end;
var: BBAND_LENGTH (20), BBAND_BAND (2);
var: BBandLength (BBAND_LENGTH), BBandSD (0);
var: BBandMA (0), BBandUpper (0), BBandLower (0);
BBandLength = IFF (CurrentBar - dayOpenBar < BBAND_LENGTH, CurrentBar - dayOpenBar + 1, BBAND_LENGTH);
BBandMA = Average (Close, BBandLength);
BBandSD = StandardDev (Close, BBandLength, 1);
BBandUpper = BBandMA + BBAND_BAND * BBandSD;
BBandLower = BBandMA - BBAND_BAND * BBandSD;
PRINT (File ("[Date][StartTime]_[Symbol]_[StrategyName].log")
, NumToStr (CurrentBar, 0)
, DateToString (Date)
, TimeToString (Time)
, NumToStr (Open, 2)
, NumToStr (High, 2)
, NumToStr (Low, 2)
, NumToStr (Close, 2)
, NumToStr (Volume, 0)
, NumToStr (BBandUpper, 3)
);
PRINT (File ("[Date][StartTime]_[Symbol]_[StrategyName].log")
, NumToStr (CurrentBar, 0)
, DateToString (Date)
, TimeToString (Time)
, "Close Cross Above BBandUpper"
, Close Cross Above BBandUpper
);
相關的 PRINT 輸出如下,在 09:05:00 發生錯誤後,下一根K棒的CurrentBar已經重頭變成1了
1 2022/12/16 09:00:00 115.00 115.00 115.00 115.00 209 115.000 1 2022/12/16 09:00:00 Close crosses Above BBandUpper FALSE 2 2022/12/16 09:01:00 115.00 115.00 115.00 115.00 0 115.000 2 2022/12/16 09:01:00 Close crosses Above BBandUpper FALSE 3 2022/12/16 09:02:00 115.00 115.00 115.00 115.00 0 115.000 3 2022/12/16 09:02:00 Close crosses Above BBandUpper FALSE 4 2022/12/16 09:03:00 115.00 115.00 115.00 115.00 0 115.000 4 2022/12/16 09:03:00 Close crosses Above BBandUpper FALSE 5 2022/12/16 09:04:00 115.00 115.00 115.00 115.00 0 115.000 5 2022/12/16 09:04:00 Close crosses Above BBandUpper FALSE 6 2022/12/16 09:05:00 116.00 116.00 116.00 116.00 96 115.912 <=== 錯誤發生在此根K棒 1 2022/12/16 09:06:00 116.00 116.00 116.00 116.00 0 116.000
請小幫手協助確認,謝謝。
8 評論