Sumber dimuat naik... memuat...

Triple Bottom Rebound Momentum Strategy Terobosan

Penulis:ChaoZhang, Tarikh: 2025-01-10 15:49:30
Tag:EMAATRMASMA

 Triple Bottom Rebound Momentum Breakthrough Strategy

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan analisis teknikal, terutamanya memberi tumpuan kepada mengenal pasti corak triple bottom dan isyarat kejayaan momentum di pasaran. Strategi ini menggabungkan pelbagai penunjuk teknikal termasuk crossover Moving Average (MA), Average True Range (ATR), dan saluran harga untuk membina sistem perdagangan yang lengkap. Melalui pelaksanaan programatik, ia mencapai pengenalan automatik corak rebound triple bottom dan pelaksanaan perdagangan.

Prinsip Strategi

Logik teras merangkumi elemen utama berikut: 1. Menggunakan crossover purata bergerak pantas (5-periode) dan perlahan (20-periode) untuk mengesahkan arah trend pasaran 2. secara automatik mengenal pasti tiga titik rendah berturut-turut (low1, low2, low3) untuk membentuk corak bawah tiga 3. Menggunakan penunjuk ATR untuk mengira turun naik dan menetapkan tahap stop-loss dan mengambil keuntungan yang dinamik 4. Memastikan isyarat masuk panjang apabila harga memecahkan di atas kenaikan tinggi sebelumnya selepas bahagian bawah ketiga, digabungkan dengan isyarat silang MA 5. Menubuhkan saluran selari untuk memvisualisasikan julat pergerakan harga untuk rujukan pasaran tambahan 6. Melaksanakan keadaan stop-loss dan take-profit dinamik berdasarkan ATR semasa pelaksanaan perdagangan

Kelebihan Strategi

  1. Menggabungkan beberapa penunjuk teknikal untuk meningkatkan kebolehpercayaan isyarat
  2. Menggunakan ATR untuk menyesuaikan secara dinamik paras stop-loss dan mengambil keuntungan, menyesuaikan diri dengan perubahan turun naik pasaran
  3. Mengotomatiskan pengenalan corak bawah tiga, mengurangkan pertimbangan subjektif
  4. Melaksanakan sekatan selang perdagangan untuk mengelakkan perdagangan berlebihan
  5. Menyediakan rujukan struktur pasaran yang jelas melalui alat visualisasi (saluran dan label selari)
  6. Ciri logik strategi yang jelas untuk penyelenggaraan dan pengoptimuman yang mudah

Risiko Strategi

  1. Boleh menghasilkan isyarat palsu di pasaran yang sangat tidak menentu
  2. Proses pengenalan corak tiga bahagian bawah mungkin dipengaruhi oleh bunyi pasaran
  3. Pengganda ATR tetap mungkin tidak sesuai dengan semua keadaan pasaran
  4. Mungkin mengalami kerugian berturut-turut semasa tempoh pembalikan trend
  5. Tetapan selang perdagangan mungkin terlepas beberapa isyarat yang sah

Arahan Pengoptimuman Strategi

  1. Menggabungkan penunjuk jumlah untuk mengesahkan kesahihan rebound
  2. Sesuaikan secara dinamik pengganda ATR berdasarkan keadaan pasaran yang berbeza
  3. Tambah penapis kekuatan trend untuk meningkatkan kualiti isyarat perdagangan
  4. Mengoptimumkan algoritma pengenalan bahagian bawah tiga untuk meningkatkan ketepatan
  5. Menggabungkan analisis kitaran pasaran untuk mengoptimumkan tetapan selang perdagangan
  6. Pertimbangkan untuk menambah analisis simetri corak harga

Ringkasan

Strategi ini melaksanakan sistem perdagangan terobosan rebound bawah berganda secara programatik, menggabungkan pelbagai penunjuk teknikal dan langkah pengurusan risiko dengan kepraktisan yang baik. Melalui pengoptimuman dan peningkatan yang berterusan, strategi menunjukkan janji untuk prestasi yang lebih baik dalam perdagangan sebenar.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=5
strategy("反彈三次突破策略", overlay=true, initial_capital=100000, commission_value=0.001425, slippage=1)

// === 參數設定 ===
fast_length = input.int(5, title="快速均線週期")
slow_length = input.int(20, title="慢速均線週期")
atr_period = input.int(14, title="ATR 週期")
atr_factor = input.float(2.0, title="ATR 因子")
profit_factor = input.float(2.0, title="止盈因子")

// === 計算均線 ===
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.ema(close, slow_length)

// === 均線交叉訊號 ===
long_signal = ta.crossover(fast_ma, slow_ma)
short_signal = ta.crossunder(fast_ma, slow_ma)

// === 計算 ATR ===
atr = ta.atr(atr_period)

// === 反彈三次突破策略 ===
var float low1 = na
var float low2 = na
var float low3 = na
var bool trend_down = false
var bool long_breakout = false
var line lower_line = na
var line upper_line = na

if (na(low1) or na(low2) or na(low3))
    // 初始化低點
    low1 := na
    low2 := na
    low3 := na

if (close < low3 or na(low3))
    // 更新低點
    low1 := low2
    low2 := low3
    low3 := close
    trend_down := true

if (trend_down and close > low2 and close > low1)
    // 確認反轉且第三次反彈比第二次高
    trend_down := false
    long_breakout := true

// 清除前一個反彈通道
if (not na(lower_line))
    line.delete(lower_line)
if (not na(upper_line))
    line.delete(upper_line)

// 繪製新的反彈通道
if (not na(low1) and not na(low3))    
    lower_line := line.new(x1=bar_index[2], y1=low1, x2=bar_index, y2=low3, color=color.yellow, width=2)
    upper_line := line.new(x1=bar_index[2], y1=low1 + (low3 - low1), x2=bar_index, y2=low3 + (low3 - low1), color=color.yellow, width=2)

// === 進出場條件 ===
var float last_long_exit = na
var float last_short_exit = na
var float stop_loss_long = na
var float take_profit_long = na
var float stop_loss_short = na
var float take_profit_short = na

var label stop_loss_label_long = na
var label take_profit_label_long = na
var label stop_loss_label_short = na
var label take_profit_label_short = na

if (long_signal or long_breakout)
    if na(last_short_exit) or (time - last_short_exit) > 2 * 60 * 60 * 1000  // 確保多頭出場後有一段時間間隔
        // 做多
        strategy.entry("做多", strategy.long)
        // 止損設置為最近低點下方
        stop_loss_long := low3 - atr_factor * atr
        take_profit_long := close + profit_factor * atr  // 設定止盈位置
        strategy.exit("止盈/止損", "做多", stop=stop_loss_long, limit=take_profit_long)
        last_long_exit := time  // 記錄多頭出場時間

        // 刪除之前的止盈止損標籤
        if (not na(stop_loss_label_long))
            label.delete(stop_loss_label_long)
        if (not na(take_profit_label_long))
            label.delete(take_profit_label_long)

        // 繪製新的止盈止損標籤
        stop_loss_label_long := label.new(x=bar_index, y=stop_loss_long, text=str.tostring(math.round(stop_loss_long * 10) / 10), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)
        take_profit_label_long := label.new(x=bar_index, y=take_profit_long, text=str.tostring(math.round(take_profit_long * 10) / 10), color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)

if (short_signal)
    if na(last_long_exit) or (time - last_long_exit) > 2 * 60 * 60 * 1000  // 確保空頭出場後有一段時間間隔
        // 做空
        strategy.entry("做空", strategy.short)
        // 止損設置為最近高點上方
        stop_loss_short := high + atr_factor * atr
        take_profit_short := close - profit_factor * atr  // 設定止盈位置
        strategy.exit("止盈/止損", "做空", stop=stop_loss_short, limit=take_profit_short)
        last_short_exit := time  // 記錄空頭出場時間

        // 刪除之前的止盈止損標籤
        if (not na(stop_loss_label_short))
            label.delete(stop_loss_label_short)
        if (not na(take_profit_label_short))
            label.delete(take_profit_label_short)

        // 繪製新的止盈止損標籤
        stop_loss_label_short := label.new(x=bar_index, y=stop_loss_short, text=str.tostring(math.round(stop_loss_short * 10) / 10), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)
        take_profit_label_short := label.new(x=bar_index, y=take_profit_short, text=str.tostring(math.round(take_profit_short * 10) / 10), color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)

Berkaitan

Lebih lanjut