寫了一個自動交易作回測時,發現不如我預期的,後來列印變數時,發現 HB[4], HB[9] 印出的都是 0,查不出來是哪裡寫錯了呢?如 2/27 『3131』的第一根 HB[4] 應該是 1310,收盤是 1290,預期結果應該是不能進場才是,但執行回測時卻進場了。

var: i(0), ma5(0), ma10(0);
array: HB[9](0);
ma5 = average(close, 5);
ma10 = average(close, 10);
if islastBar then begin
for i = 1 to 9 begin
value1 = swingHighBar(Volume, 240, 8, 8, i);
if value1 >= 0 and V[value1] > average(V[value1+1], 20) * 2
then HB[i] = value1 else HB[i] = -1;
end;
end;
if position=0 and close > open and ma5 > ma10 and ((HB[4] <> -1 and close > HB[4]) or (HB[9] <> -1 and close > HB[9]))
then setposition(2, Market, label:="突破大量高點進場");
Print(file("[StrategyName]_[Symbol]_[StartTime].log"),
"Date=", NumToStr(Date, 0),
"Time=", NumToStr(Time, 0),
"Close=", NumToStr(Close, 2),
"plot4=", NumToStr(HB[4], 2),
"plot9=", NumToStr(HB[9], 2)
);
2 評論