
Strategi EMAx RSI adalah sistem perdagangan kuantitatif yang menggabungkan analisis teknikal dan pengurusan risiko. Strategi ini berpusat pada isyarat silang EMA, digabungkan dengan penunjuk RSI untuk pengesanan penapis, dan secara dinamik menyesuaikan tahap stop loss dengan ATR.
Strategi ini menggunakan gabungan pelbagai indikator teknikal untuk menilai trend pasaran dan masa masuk, dengan logik seperti berikut:
Penghakiman trend dan isyarat masuk:
RSI penapis disahkan:
Mekanisme pengurusan risiko:
Trend berbalik:
Analisis kod strategi ini dapat disimpulkan sebagai kelebihan utama:
Pengurusan risiko dinamikStrategi ini tidak menggunakan titik stop loss tetap, tetapi menyesuaikan jarak stop loss dengan ATR untuk menyesuaikan kadar turun naik pasaran, supaya tetapan stop loss tidak terlalu rapat dengan bunyi pasaran, atau terlalu longgar yang menyebabkan kerugian tunggal terlalu besar.
Pembahagian risiko perbandinganDengan mengira dengan tepat peratusan risiko untuk setiap urus niaga, memastikan kerugian urus niaga tunggal dikawal dalam peratusan yang ditetapkan dari jumlah modal (default 1%) dan berkesan mencegah risiko pecah kedudukan.
Mengikuti Trend dan BeradaptasiGabungan EMA silang dengan penapis RSI, dapat mengikuti trend utama dan mengelakkan dagangan berlawanan di kawasan overbought dan oversold, meningkatkan kualiti isyarat.
Risiko dan ganjaran berbanding optimum: Tetapkan jarak berhenti sebanyak 2 kali jarak berhenti untuk memastikan nisbah risiko dan keuntungan yang baik, yang merupakan faktor penting untuk keuntungan yang stabil dalam jangka masa panjang.
Trend berbalik perlindungan: Mekanisme kedudukan kosong automatik apabila trend berbalik, membantu mengunci keuntungan atau mengurangkan kerugian tepat pada masanya, untuk mengelakkan pemegang kedudukan menghadapi penarikan balik yang besar.
Walaupun strategi ini dirancang secara menyeluruh, terdapat beberapa risiko yang berpotensi:
Risiko penembusan palsuPersaingan EMA mungkin menghasilkan isyarat pecah palsu, terutamanya dalam pasaran yang bergolak. Penyelesaian adalah dengan mempertimbangkan untuk menambah pengesahan jumlah atau menambah syarat penapisan isyarat, seperti menggunakan penunjuk kekuatan trend ADX.
Titik tergelincir dan kesan perbezaan hargaStrategi ini tidak mengambil kira faktor slip dan perbezaan harga dalam perdagangan sebenar, yang boleh menyebabkan hasil pelaksanaan sebenar menyimpang dari hasil pengukuran semula. Penyelesaian adalah dengan menyesuaikan jarak berhenti dan berhenti ketika pengendalian sebenar, menyimpan ruang slip.
Kepekaan ParameterKesan strategi adalah sensitif terhadap parameter seperti kitaran EMA, nilai RSI, dan perkalian ATR. Penyelesaian adalah dengan melakukan pengoptimuman parameter yang komprehensif dan ujian kestabilan untuk memastikan parameter tidak terlalu sesuai dengan data sejarah.
Perubahan trend yang kerap berlakuDalam pasaran yang bergolak, EMA mungkin sering berselisih, yang menyebabkan overtrading dan pemusnahan yuran. Penyelesaian adalah dengan menambah syarat penapis untuk tempoh trend atau menyesuaikan parameter EMA untuk tempoh yang lebih lama.
Risiko pengurusan danaWalaupun terdapat mekanisme pengurusan wang dalaman dalam strategi, ia tidak mengambil kira kerugian pada aset yang berkaitan. Penyelesaian adalah dengan melaksanakan pengurusan risiko portfolio dan mengawal risiko keseluruhan aset yang berkaitan.
Berdasarkan analisis kod, strategi ini mempunyai beberapa arah pengoptimuman yang boleh dilaksanakan:
Penapisan intensiti trend meningkatPengenalan penunjuk ADX untuk menilai kekuatan trend, melakukan perdagangan hanya apabila trend jelas (seperti ADX> 25), dapat secara signifikan mengurangkan isyarat palsu dan perdagangan yang tidak perlu di pasaran goyah.
Optimumkan masa kemasukanPertimbangkan untuk menambah bentuk grafik atau tahap sokongan / rintangan yang disahkan, seperti menunggu harga untuk kembali ke purata bergerak dan kemudian masuk semasa rebound, dan bukannya masuk secara langsung di titik persimpangan, untuk mendapatkan harga masuk yang lebih baik.
Tetapan parameter bersesuaianBerasaskan pada keadaan pasaran, ia secara automatik menyesuaikan EMA kitaran dan nilai RSI yang rendah untuk membolehkan strategi lebih sesuai dengan keadaan pasaran yang berbeza.
Tambah waktu penapisanMenambah syarat penapisan masa dagangan, mengelakkan masa kurangnya likuiditi atau turun naik pasaran yang luar biasa, dapat meningkatkan kualiti dagangan.
Pengurusan wang yang optimum: Menerapkan pengurusan kedudukan progresif, meningkatkan saiz kedudukan secara sederhana selepas keuntungan berturut-turut, mengurangkan peluang risiko selepas kerugian berturut-turut, untuk mengoptimumkan kurva modal.
Mekanisme penguncian keuntungan separaMemperkenalkan strategi hentian bertingkat, seperti pergerakan hentian kepada harga kos atau kedudukan kosong secara berturut-turut apabila keuntungan mencapai tahap tertentu, untuk memastikan keuntungan terkunci dan tidak ketinggalan.
Strategi EMAx RSI adalah sistem perdagangan kuantitatif yang tersusun dengan struktur yang lengkap dan logik yang jelas, yang membentuk kerangka keputusan perdagangan yang berkesan melalui pengiktirafan trend dengan kombinasi indikator teknikal, yang digabungkan dengan pengurusan dana dinamik dan mekanisme kawalan risiko. Kelebihan strategi adalah menyesuaikan kedudukan dan saiz stop loss dan kedudukan dengan menyesuaikan diri dengan turun naik pasaran, sambil meningkatkan kualiti isyarat melalui penapisan RSI dan pengaliran trend. Walaupun terdapat risiko seperti pengaliran palsu dan kerentanan parameter, masalah ini dijangka dapat diselesaikan dengan cara yang disyorkan, seperti peningkatan kekuatan trend, pengoptimuman peluang masuk dan parameter penyesuaian.
/*backtest
start: 2024-04-07 00:00:00
end: 2025-04-06 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Kad_Sniper", overlay=true)
// Entrée Sniper avec Fermeture Tendance + Taille de Lot + SL et TP
// === Périodes des Moyennes Mobiles et RSI ===
shortEMALen = input.int(20, title="Période EMA 20")
longEMALen = input.int(50, title="Période EMA 50")
rsiLen = input.int(14, title="Période RSI")
rsiOverbought = input.int(70, title="RSI Suracheté")
rsiOversold = input.int(30, title="RSI Survendu")
// === Calcul des Moyennes Mobiles ===
ema20 = ta.ema(close, shortEMALen)
ema50 = ta.ema(close, longEMALen)
// === Calcul du RSI ===
rsi = ta.rsi(close, rsiLen)
// === Paramètres de Gestion de Risque ===
capital = input.float(1000, title="Capital Total ($)", minval=1) // Capital total alloué
risqueParTrade = input.float(1, title="Risque par Trade (%)", minval=0.1, maxval=100) // Risque par trade en %
stopLossMultiplier = input.float(1, title="Multiplier Stop Loss (en ATR)", minval=0.1, maxval=10) // Multiplier du stop-loss basé sur l'ATR
takeProfitMultiplier = input.float(2, title="Multiplier Take Profit (en ATR)", minval=0.1, maxval=10) // Multiplier du take-profit basé sur l'ATR
// === Calcul du Stop-Loss et Take Profit en Pips (en utilisant ATR pour déterminer la volatilité) ===
atr = ta.atr(14)
stopLossDistance = atr * stopLossMultiplier // Distance du stop-loss en pips, ajustée par ATR
takeProfitDistance = atr * takeProfitMultiplier // Distance du take-profit en pips, ajustée par ATR
// === Calcul de la Taille de Lot ===
montantRisque = capital * (risqueParTrade / 100) // Risque par trade en $ (capital * pourcentage de risque)
tailleLot = montantRisque / stopLossDistance // Taille du lot en fonction du risque et de la distance du stop-loss
// === Signaux de Croisement EMA et RSI ===
buySignal = ta.crossover(ema20, ema50) and rsi < rsiOverbought and close > ema50
sellSignal = ta.crossunder(ema20, ema50) and rsi > rsiOversold and close < ema50
// === Filtrage des Signaux ===
confirmedBuySignal = buySignal and rsi < rsiOverbought
confirmedSellSignal = sellSignal and rsi > rsiOversold
// === Fermeture des Positions lors du Changement de Tendance ===
// Fermer la position Buy si le signal Sell est détecté
if (confirmedSellSignal)
strategy.close("Buy", comment="Close Buy")
// Fermer la position Sell si le signal Buy est détecté
if (confirmedBuySignal)
strategy.close("Sell", comment="Close Sell")
// === Entrée dans les Positions avec SL et TP ===
// Entrée Buy lorsque les conditions sont validées
if (confirmedBuySignal)
strategy.entry("Buy", strategy.long, qty=tailleLot, comment="Buy")
strategy.exit("Exit", "Buy", stop=close - stopLossDistance, limit=close + takeProfitDistance)
// Entrée Sell lorsque les conditions sont validées
if (confirmedSellSignal)
strategy.entry("Sell", strategy.short, qty=tailleLot, comment="Sell")
strategy.exit("Exit", "Sell", stop=close + stopLossDistance, limit=close - takeProfitDistance )
// === Affichage des Signaux sous forme de points ultra petits ===
// Afficher un petit point vert (Buy) directement sous la bougie lorsque toutes les conditions sont validées
plotshape(series=confirmedBuySignal, location=location.belowbar, color=color.green, style=shape.circle, title="Signal Buy", size=size.tiny)
// Afficher un petit point rouge (Sell) directement au-dessus de la bougie lorsque toutes les conditions sont validées
plotshape(series=confirmedSellSignal, location=location.abovebar, color=color.red, style=shape.circle, title="Signal Sell", size=size.tiny)
// === Affichage de la Taille de Lot ===
if (confirmedBuySignal or confirmedSellSignal)
label.new(bar_index, close, "Taille Lot: " + str.tostring(tailleLot, "#.##"), color=color.blue, style=label.style_label_down, textcolor=color.white, size=size.small)
// === Affichage des Moyennes Mobiles ===
plot(ema20, color=color.blue, title="EMA 20")
plot(ema50, color=color.orange, title="EMA 50")
// === Affichage RSI pour la confirmation ===
hline(50, "RSI 50", color=color.gray)
plot(rsi, color=color.rgb(153, 124, 158), title="RSI", linewidth=2)