Sumber daya yang dimuat... Pemuatan...

Triple Bottom Rebound Momentum Strategi Terobosan

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

 Triple Bottom Rebound Momentum Breakthrough Strategy

Gambaran umum

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan analisis teknis, terutama berfokus pada mengidentifikasi pola triple bottom dan sinyal terobosan momentum di pasar. Strategi ini menggabungkan beberapa indikator teknis termasuk Moving Average (MA) crossover, Average True Range (ATR), dan saluran harga untuk membangun sistem perdagangan yang lengkap.

Prinsip Strategi

Logika inti mencakup elemen kunci berikut: 1. Menggunakan crossover rata-rata bergerak cepat (5 periode) dan lambat (20 periode) untuk mengkonfirmasi arah tren pasar 2. Secara otomatis mengidentifikasi tiga titik rendah berturut-turut (low1, low2, low3) untuk membentuk pola bawah tiga Menggunakan indikator ATR untuk menghitung volatilitas dan menetapkan tingkat stop-loss dan take profit yang dinamis 4. Mengkonfirmasi sinyal masuk panjang ketika harga pecah di atas rebound tinggi sebelumnya setelah terendah ketiga, dikombinasikan dengan sinyal crossover MA Membuat saluran paralel untuk memvisualisasikan kisaran pergerakan harga untuk referensi pasar tambahan 6. Menerapkan kondisi stop loss dan take profit dinamis berbasis ATR selama eksekusi perdagangan

Keuntungan Strategi

  1. Menggabungkan beberapa indikator teknis untuk meningkatkan keandalan sinyal
  2. Menggunakan ATR untuk menyesuaikan secara dinamis tingkat stop loss dan take profit, beradaptasi dengan perubahan volatilitas pasar
  3. Mengotomatiskan identifikasi pola triple bottom, mengurangi penilaian subjektif
  4. Menerapkan pembatasan interval perdagangan untuk mencegah overtrading
  5. Memberikan referensi struktur pasar yang jelas melalui alat visualisasi (saluran paralel dan label)
  6. Fitur logika strategi yang jelas untuk pemeliharaan dan optimasi yang mudah

Risiko Strategi

  1. Dapat menghasilkan sinyal palsu di pasar yang sangat volatile
  2. Proses identifikasi pola triple bottom dapat dipengaruhi oleh kebisingan pasar
  3. Pengganda ATR tetap mungkin tidak sesuai dengan semua kondisi pasar
  4. Kemungkinan mengalami kerugian berturut-turut selama periode pembalikan tren
  5. Pengaturan interval perdagangan mungkin kehilangan beberapa sinyal yang valid

Arah Optimasi Strategi

  1. Masukkan indikator volume untuk mengkonfirmasi validitas rebound
  2. Sesuaikan secara dinamis pengganda ATR berdasarkan kondisi pasar yang berbeda
  3. Tambahkan filter kekuatan tren untuk meningkatkan kualitas sinyal perdagangan
  4. Mengoptimalkan algoritma identifikasi triple bottom untuk meningkatkan akurasi
  5. Menggabungkan analisis siklus pasar untuk mengoptimalkan pengaturan interval perdagangan
  6. Pertimbangkan untuk menambahkan analisis simetri pola harga

Ringkasan

Strategi ini mengimplementasikan sistem perdagangan terobosan rebound triple bottom secara programatis, menggabungkan beberapa indikator teknis dan langkah-langkah manajemen risiko dengan kepraktisan yang baik. Melalui optimasi dan perbaikan terus-menerus, strategi menunjukkan janji untuk kinerja yang lebih baik dalam perdagangan aktual.


/*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 banyak