大量高點變數印出的總是 0

  •   300 
  • 最後發表   莊莊  2025 三月 01
莊莊 發文於   2025/03/01

寫了一個自動交易作回測時,發現不如我預期的,後來列印變數時,發現 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)
);

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/03/01

就我的理解,你打算計算9個轉折大量的最高價。不過,你程式計算的HB[4]並非價格,而是第4個轉折大量的K棒距離最後一根K棒的K棒數。要計算你圖片第一根最高價1310(假設這根的量是第4轉折大量),把HB[i] = value1改成HB[i] = h[value1]即可。

  • 按讚來自於
  • hohayo
莊莊 發文於   2025/03/01

謝謝許教授,後來看您寫的再回頭仔細看這程式碼,的確是應該要改成 H[HB[4]] 及 H[HB[9]] 才正確把值印出來了。

發表回覆
Close