Madrid Bands Strategi Arah EMA Berbilang Jangka Masa Dipertingkatkan RSI

EMA RSI MA 移动平均线 相对强弱指标 趋势跟踪 多时间框架分析 动量分析
Tarikh penciptaan: 2025-03-24 15:52:28 Akhirnya diubah suai: 2025-03-24 15:52:28
Salin: 0 Bilangan klik: 510
2
fokus pada
319
Pengikut

Madrid Bands Strategi Arah EMA Berbilang Jangka Masa Dipertingkatkan RSI Madrid Bands Strategi Arah EMA Berbilang Jangka Masa Dipertingkatkan RSI

Gambaran keseluruhan

Strategi EMA trend Madrid Ribbon RSI Enhanced Multi-Time Frame adalah sistem perdagangan kuantitatif yang komprehensif, yang menggabungkan sistem ribbon rata-rata bergerak (Madrid Ribbon) dengan penapis RSI yang agak kuat, untuk memberikan mekanisme pengesahan ganda untuk pengenalan trend dan pelaksanaan perdagangan. Inti strategi ini adalah struktur ribbon yang dibentuk oleh pemantauan EMA bergerak (RSI) dalam pelbagai tempoh yang berbeza (dari 5 hingga 90), sambil memperkenalkan RSI sebagai syarat penapisan, yang berkesan mengurangkan isyarat palsu.

Prinsip Strategi

Prinsip utama strategi ini adalah berdasarkan analisis kumpulan purata bergerak pada pelbagai jangka masa dan penapisan indikator RSI:

  1. Sistem pita purata bergerak pelbagai bingkai masaStrategi membina 18 purata bergerak dari 5 hingga 90 kitaran dan membandingkannya dengan garis asas 100 kitaran. Setiap purata bergerak diberi warna berdasarkan arah perubahannya dan kedudukan berbanding garis asas:

    • Naik dan terletak di atas garis asas: hijau terang ((lime)
    • Turun dan terletak di atas garis asas: merah gelap (maroon)
    • Turun dan terletak di bawah garis asas: merah ((red)
    • Naik dan terletak di bawah garis asas: hijau
  2. Kuantiti intensiti trendStrategi: Kuantifikasi kekuatan trend dengan mengira jumlah purata bergerak hijau (naik) dan merah (turun):

    • Apabila jumlah purata bergerak hijau adalah ≥13, ia dikenali sebagai aliran menaik yang kuat
    • Apabila jumlah purata bergerak merah ≥ 9, dikenali sebagai trend menurun yang kuat
  3. Mekanisme penapis RSIUntuk mengurangkan isyarat palsu, strategi memperkenalkan RSI sebagai syarat penapisan:

    • Isyarat beli perlu dipenuhi: Green Moving Average ≥13 dan RSI <30 (daerah oversold)
    • Isyarat menjual perlu dipenuhi: purata bergerak merah ≥9 dan RSI> 70 ((kawasan overbuy)
  4. Mekanisme pengurusan risiko: Strategi menetapkan parameter stop loss berdasarkan peratusan:

    • Perdagangan berbilang mata: Stop set pada harga masuk + 0.5%, Stop set pada harga masuk - 1%
    • Perdagangan kosong: Stop set pada harga kemasukan -0.5%, Stop set pada harga kemasukan + 1%
  5. Pengurusan wangStrategi: membolehkan pengguna menetapkan jumlah modal awal dan mengira saiz kedudukan secara automatik berdasarkan harga semasa.

Kelebihan Strategik

  1. Mekanisme pengesahan bergandaDengan menggabungkan sistem pita purata bergerak dan indikator RSI, strategi ini menyediakan mekanisme pengesahan berganda, yang secara signifikan mengurangkan kemungkinan isyarat salah. Kebolehpercayaan isyarat meningkat dengan ketara apabila kedua-dua kumpulan purata bergerak dan RSI memenuhi syarat.

  2. Kuantiti intensiti trendBerbeza dengan strategi simpul silang, strategi ini mengukur kekuatan trend dengan mengira jumlah purata bergerak warna yang berbeza, menjadikan keputusan perdagangan lebih objektif dan didorong oleh data.

  3. Isyarat perdagangan visualStrategi menunjukkan isyarat dengan jelas pada carta dengan perubahan warna latar belakang dan penanda bentuk, yang membolehkan peniaga mengenal pasti peluang perdagangan yang berpotensi secara intuitif.

  4. Pengurusan risiko dalamanStrategi ini secara default menyertakan mekanisme Stop Loss, yang mempunyai tetapan yang jelas mengenai keuntungan dan kerugian maksimum untuk setiap perdagangan, dan mengawal risiko dengan berkesan.

  5. Sangat boleh menyesuaikan diri: Strategi membolehkan pengguna memilih untuk menggunakan EMA atau SMA, yang boleh disesuaikan secara fleksibel mengikut keadaan pasaran yang berbeza. EMA lebih sensitif terhadap perubahan harga baru-baru ini, sementara SMA lebih lancar, dengan tetapan yang berbeza untuk keadaan pasaran yang berbeza.

  6. Pemantauan keadaan pasaran secara menyeluruhDengan memantau 18 purata bergerak untuk tempoh yang berbeza, strategi ini dapat menangkap pergerakan pasaran secara menyeluruh, mengurangkan titik buta yang mungkin disebabkan oleh analisis bingkai masa tunggal.

Risiko Strategik

  1. Keadaan bertukarOleh kerana strategi bergantung kepada banyak purata bergerak, reaksi terlewat mungkin berlaku apabila trend berbalik dengan cepat, yang menyebabkan masa masuk atau keluar tidak sesuai. Untuk menangani risiko ini, pertimbangkan untuk menambah indikator dengan kitaran yang lebih pendek atau menyesuaikan parameter RSI untuk meningkatkan kepekaan strategi terhadap perubahan pasaran.

  2. Syarat penapisan yang ketat menyebabkan kehilangan peluangPengaturan syarat penapis RSI lebih ketat ((<30 dan> 70), dan mungkin kehilangan beberapa peluang perdagangan yang berpotensi. Pengguna boleh menyesuaikan nilai had RSI sesuai dengan ciri-ciri pasaran tertentu, seperti meluaskan syarat membeli ke RSI <40, meluaskan syarat menjual ke RSI> 60.

  3. Batasan peratusan kerugian penghentian tetapStrategi menggunakan seting stop loss peratusan tetap ((0.5% dan 1%), yang mungkin tidak cukup fleksibel dalam pasaran dengan kadar turun naik yang berbeza. Adalah disyorkan untuk menyesuaikan tahap stop loss mengikut kadar turun naik rata-rata sebenar aset (ATR) yang dinamik.

  4. Risiko pasaran mendatarPada peringkat penyusunan pasaran, purata bergerak mungkin sering bercampur dengan satu sama lain, menyebabkan gangguan isyarat. Anda boleh mengelakkan perdagangan berlebihan dalam keadaan turun naik rendah dengan menambahkan mekanisme pengesanan silang tambahan (seperti indikator ADX).

  5. Kepekaan ParameterPrestasi strategi adalah sensitif terhadap pilihan parameter (seperti tempoh purata bergerak dan panjang RSI), pilihan parameter yang tidak betul boleh menyebabkan prestasi strategi yang tidak baik. Adalah disyorkan untuk mengoptimumkan parameter yang mencukupi dan pengujian semula sebelum digunakan secara langsung.

Arah pengoptimuman strategi

  1. Mekanisme Hentikan Kerosakan Dinamik: Penggantian seting stop loss dengan peratusan tetap dengan penunjuk ATR, yang dapat menyesuaikan diri dengan lebih baik dengan perubahan turun naik pasaran. Sebagai contoh, seting stop loss boleh 1.5*ATR, hentikan 1*ATR, untuk menjadikan pengurusan risiko lebih fleksibel dan bersesuaian dengan pasaran

  2. Menambah penapis kekuatan trendPendahuluan: memperkenalkan penunjuk ADX untuk mengukur kekuatan trend, hanya berdagang dalam persekitaran trend yang kuat di ADX> 25, dan mengelakkan terlalu banyak isyarat palsu di pasaran yang lemah atau berlainan arah.

  3. Optimumkan parameter RSIStrategi semasa menggunakan RSI 14 kitaran standard, boleh mempertimbangkan untuk menyesuaikan kitaran RSI mengikut ciri-ciri aset dan jangka masa tertentu, atau menggunakan sistem RSI berganda (seperti memeriksa RSI jangka pendek dan jangka panjang pada masa yang sama) untuk mengurangkan isyarat palsu.

  4. Pengenalan pengesahan kuantiti: Menambah dimensi analisis kuantiti transaksi untuk memastikan sokongan penyertaan pasaran yang mencukupi apabila isyarat berlaku, meningkatkan kebolehpercayaan isyarat perdagangan. Sebagai contoh, boleh meminta jumlah transaksi lebih tinggi daripada purata N hari apabila isyarat beli muncul.

  5. Mencapai penyesuaian kedudukan yang dinamik: Mengubah saiz kedudukan secara dinamik mengikut kekuatan trend (bilangan purata bergerak hijau atau merah), meningkatkan kedudukan dalam trend yang lebih kuat, mengurangkan kedudukan dalam trend yang lebih lemah, mengoptimumkan kecekapan penggunaan dana.

  6. Bergabung dengan penapis persekitaran pasaranMengesan keadaan pasaran semasa melalui indikator kadar turun naik (seperti VIX atau ATR), menyesuaikan parameter strategi atau menangguhkan perdagangan dalam keadaan turun naik yang tinggi, mengurangkan risiko dalam keadaan pasaran yang melampau.

ringkaskan

Strategi trend EMA pelbagai bingkai masa yang dipertingkatkan RSI Madrid adalah sistem perdagangan kuantitatif yang lengkap, yang menyediakan pedagang dengan alat pengesanan dan pelaksanaan perdagangan yang kuat dengan menggabungkan struktur pita rata-rata bergerak dan mekanisme penapisan RSI. Kelebihan utama strategi ini adalah mekanisme pengesahan berganda dan keupayaan untuk mengukur intensiti trend, yang menjadikan keputusan perdagangan lebih objektif dan didorong oleh data.

Walaupun strategi berfungsi dengan baik dalam pasaran yang sedang berkembang, ia mungkin menghadapi cabaran dalam pasaran yang berlainan arah dan persekitaran yang berbalik dengan cepat. Dengan memperkenalkan langkah-langkah pengoptimuman seperti berhenti berhenti dinamik, penapisan kekuatan trend, pengesahan jumlah transaksi, strategi dapat meningkatkan lagi kehandalan dan adaptasi.

Strategi ini sangat sesuai untuk pedagang trend jangka panjang dan jangka panjang, yang dapat mencari peluang perdagangan dengan kebarangkalian tinggi dalam pelbagai jenis persekitaran pasaran melalui penyesuaian parameter dan pengurusan risiko yang munasabah. Walau bagaimanapun, strategi perdagangan apa pun perlu disesuaikan dengan keutamaan risiko dan objektif pelaburan pedagang, dan disarankan untuk melakukan tinjauan dan pengoptimuman yang mencukupi sebelum digunakan di pasaran.

Kod sumber strategi
/*backtest
start: 2024-03-24 00:00:00
end: 2025-03-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("Madrid Ribbon Strategy with Backtesting", shorttitle="Madrid Ribbon Strat", overlay=true, default_qty_type=strategy.cash, default_qty_value=100000)

// Inputs
i_exp = input.bool(true, title="Use Exponential MA")
wallet_balance = input.float(100000, title="Starting Wallet Balance", minval=1000)

// RSI Settings
rsi_length = input.int(14, title="RSI Length")
rsi = ta.rsi(close, rsi_length)

// Profit Target & Stop Loss (%)
long_take_profit_perc = input.float(0.5, title="Long Take Profit (%)") / 100  // 0.5%
long_stop_loss_perc = input.float(1.0, title="Long Stop Loss (%)") / 100    // 1%
short_take_profit_perc = input.float(0.5, title="Short Take Profit (%)") / 100  // 0.5%
short_stop_loss_perc = input.float(1.0, title="Short Stop Loss (%)") / 100    // 1%

// Source
src = close

// Compute Moving Averages
ma05 = i_exp ? ta.ema(src, 5) : ta.sma(src, 5)
ma10 = i_exp ? ta.ema(src, 10) : ta.sma(src, 10)
ma15 = i_exp ? ta.ema(src, 15) : ta.sma(src, 15)
ma20 = i_exp ? ta.ema(src, 20) : ta.sma(src, 20)
ma25 = i_exp ? ta.ema(src, 25) : ta.sma(src, 25)
ma30 = i_exp ? ta.ema(src, 30) : ta.sma(src, 30)
ma35 = i_exp ? ta.ema(src, 35) : ta.sma(src, 35)
ma40 = i_exp ? ta.ema(src, 40) : ta.sma(src, 40)
ma45 = i_exp ? ta.ema(src, 45) : ta.sma(src, 45)
ma50 = i_exp ? ta.ema(src, 50) : ta.sma(src, 50)
ma55 = i_exp ? ta.ema(src, 55) : ta.sma(src, 55)
ma60 = i_exp ? ta.ema(src, 60) : ta.sma(src, 60)
ma65 = i_exp ? ta.ema(src, 65) : ta.sma(src, 65)
ma70 = i_exp ? ta.ema(src, 70) : ta.sma(src, 70)
ma75 = i_exp ? ta.ema(src, 75) : ta.sma(src, 75)
ma80 = i_exp ? ta.ema(src, 80) : ta.sma(src, 80)
ma85 = i_exp ? ta.ema(src, 85) : ta.sma(src, 85)
ma90 = i_exp ? ta.ema(src, 90) : ta.sma(src, 90)
ma100 = i_exp ? ta.ema(src, 100) : ta.sma(src, 100)

// Function for ribbon color
maColor(_ma, _maRef) =>
    diffMA = ta.change(_ma)
    resultColor = diffMA >= 0 and _ma > _maRef ? color.lime :
                  diffMA < 0 and _ma > _maRef ? color.maroon :
                  diffMA <= 0 and _ma < _maRef ? color.red :
                  diffMA >= 0 and _ma < _maRef ? color.green : color.gray
    resultColor

// Count Green and Red Ribbons
count_green = 0
count_red = 0

mas = array.new_float(18)
array.set(mas, 0, ma05)
array.set(mas, 1, ma10)
array.set(mas, 2, ma15)
array.set(mas, 3, ma20)
array.set(mas, 4, ma25)
array.set(mas, 5, ma30)
array.set(mas, 6, ma35)
array.set(mas, 7, ma40)
array.set(mas, 8, ma45)
array.set(mas, 9, ma50)
array.set(mas, 10, ma55)
array.set(mas, 11, ma60)
array.set(mas, 12, ma65)
array.set(mas, 13, ma70)
array.set(mas, 14, ma75)
array.set(mas, 15, ma80)
array.set(mas, 16, ma85)
array.set(mas, 17, ma90)

for i = 0 to array.size(mas) - 1
    ma = array.get(mas, i)
    col = maColor(ma, ma100)
    count_green += col == color.lime or col == color.green ? 1 : 0
    count_red += col == color.red or col == color.maroon ? 1 : 0

// Buy/Sell Conditions
buy_signal = count_green >= 13
sell_signal = count_red >= 9

// RSI Filtering
rsi_buy = buy_signal and rsi < 30
rsi_sell = sell_signal and rsi > 70

// Calculate Entry, Take Profit & Stop Loss for Long and Short
entry_price = close
long_take_profit = entry_price * (1 + long_take_profit_perc)  // +0.5%
long_stop_loss = entry_price * (1 - long_stop_loss_perc)      // -1%
short_take_profit = entry_price * (1 - short_take_profit_perc) // -0.5%
short_stop_loss = entry_price * (1 + short_stop_loss_perc)     // +1%

// Backtesting Orders
if rsi_buy
    strategy.entry("Buy", strategy.long, qty=wallet_balance / close)
    strategy.exit("Long Exit", from_entry="Buy", limit=long_take_profit, stop=long_stop_loss)
    alert("📈 Buy Signal! Entering long trade at " + str.tostring(entry_price), alert.freq_once_per_bar_close)

if rsi_sell
    strategy.entry("Sell", strategy.short, qty=wallet_balance / close)
    strategy.exit("Short Exit", from_entry="Sell", limit=short_take_profit, stop=short_stop_loss)
    alert("📉 Sell Signal! Entering short trade at " + str.tostring(entry_price), alert.freq_once_per_bar_close)

// Highlight Chart Background Based on Ribbon Counts
bgcolor(count_green >= 13 ? color.new(color.green, 90) : count_red >= 9 ? color.new(color.red, 90) : na, title="Ribbon Trend Highlight")

// Plot "B" when Buy Signal is active
plotshape(rsi_buy, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="B")

// Plot "S" when Sell Signal is active
plotshape(rsi_sell, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="S")

// Plot the Madrid Ribbon (all MAs)
plot(ma05, color=maColor(ma05, ma100), title="MA05", linewidth=1)
plot(ma10, color=maColor(ma10, ma100), title="MA10", linewidth=1)
plot(ma15, color=maColor(ma15, ma100), title="MA15", linewidth=1)
plot(ma20, color=maColor(ma20, ma100), title="MA20", linewidth=1)
plot(ma25, color=maColor(ma25, ma100), title="MA25", linewidth=1)
plot(ma30, color=maColor(ma30, ma100), title="MA30", linewidth=1)
plot(ma35, color=maColor(ma35, ma100), title="MA35", linewidth=1)
plot(ma40, color=maColor(ma40, ma100), title="MA40", linewidth=1)
plot(ma45, color=maColor(ma45, ma100), title="MA45", linewidth=1)
plot(ma50, color=maColor(ma50, ma100), title="MA50", linewidth=1)
plot(ma55, color=maColor(ma55, ma100), title="MA55", linewidth=1)
plot(ma60, color=maColor(ma60, ma100), title="MA60", linewidth=1)
plot(ma65, color=maColor(ma65, ma100), title="MA65", linewidth=1)
plot(ma70, color=maColor(ma70, ma100), title="MA70", linewidth=1)
plot(ma75, color=maColor(ma75, ma100), title="MA75", linewidth=1)
plot(ma80, color=maColor(ma80, ma100), title="MA80", linewidth=1)
plot(ma85, color=maColor(ma85, ma100), title="MA85", linewidth=1)
plot(ma90, color=maColor(ma90, ma100), title="MA90", linewidth=1)
plot(ma100, color=maColor(ma100, ma100), title="MA100", linewidth=2)