回測無資料

  •   290 
  • 最後發表   乾麵  2025 二月 16
乾麵 發文於   2025/02/16

請教大神,以下是否有錯誤的寫法導致回測無交易,感謝

 

// 宣告參數

Input: Length(34, "期數"), UpperBand(2.5, "通道上緣"), LowerBand(2.5, "通道下緣");

Variable: mid(0), up(0), down(0),            

          early_high(0),            

          early_low(0),            

          current_price(0), 

          trailing_stop(0),  // 移動止損變數

          pullback_confirmed(0);

 

// 資料讀取筆數設定

SetTotalBar(10);  // 設定資料讀取範圍為 10 根 K 棒

 

// 計算布林通道

up = BollingerBand(Close, Length, UpperBand);      // 上軌

down = BollingerBand(Close, Length, -1 * LowerBand); // 下軌

mid = (up + down) / 2;                             // 中間線

 

// 取最近 10 根 K 棒的最高點和最低點

early_high = Highest(GetField("最高價"), 10);   

early_low = Lowest(GetField("最低價"), 10);      

 

// 當前收盤價

current_price = GetField("收盤價");

 

// -------------------- 多單邏輯 --------------------

 

// 多單回踩確認

If current_price > early_high Then

Begin

    If GetField("收盤價")[1] < early_high And current_price >= early_high Then

        pullback_confirmed = 1;  // 多單確認

End;

 

// 多單進場條件

If Position = 0 And pullback_confirmed = 1 And current_price >= down And current_price < mid Then begin

    SetPosition(1);  // 做多

    trailing_stop = current_price - 50;  // 初始化移動止損(固定點數)

    pullback_confirmed = 0;  // 重置回踩確認

end;

 

// 多單平倉條件

If Position = 1 And current_price >= up And current_price > mid Then begin

    SetPosition(0);  // 平倉多單

end;

 

// 多單移動止損

If Position = 1 Then begin

    trailing_stop = MaxList(trailing_stop, current_price - 70);  // 更新移動止損

    If current_price < trailing_stop Then begin

        SetPosition(0);  // 平倉多單

    end;

end;

 

// -------------------- 空單邏輯 --------------------

 

// 空單回踩確認

If current_price < early_low Then

Begin

    If GetField("收盤價")[1] > early_low And current_price <= early_low Then

        pullback_confirmed = -1;  // 空單確認

End;

 

// 空單進場條件

If Position = 0 And pullback_confirmed = -1 And current_price <= up And current_price > mid Then begin

    SetPosition(-1);  // 做空

    trailing_stop = current_price + 50;  // 初始化移動止損(固定點數)

    pullback_confirmed = 0;  // 重置回踩確認

end;

 

// 空單平倉條件

If Position = -1 And current_price <= down And current_price < mid Then begin

    SetPosition(0);  // 平倉空單

end;

 

// 空單移動止損

If Position = -1 Then begin

    trailing_stop = MinList(trailing_stop, current_price + 70);  // 更新移動止損

    If current_price > trailing_stop Then begin

        SetPosition(0);  // 平倉空單

    end;

end;

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

目前的價格current_price不可能大於這10期的最高價early_high,亦即current_price > early_high不可能成立。同樣的道理,current_price < early_low也不可能成立。

乾麵 發文於   2025/02/16

感謝教授指導,我再試試

發表回覆
Close