
Sistem perdagangan menangkap tren garis rata berganda dengan pengesahan silang adalah strategi perdagangan kuantitatif berdasarkan gabungan purata bergerak ((EMA) indeks pelbagai tempoh, yang menggabungkan indikator yang agak kuat ((RSI), perbezaan trend rata-rata bergerak ((MACD) dan julat sebenar rata-rata ((ATR) sebagai petunjuk tambahan. Inti strategi ini adalah untuk menentukan arah trend pasaran dengan membandingkan hubungan kedudukan garis rata dari tempoh masa yang berbeza, dan membuka kedudukan apabila trend jelas, dan meratakan kedudukan apabila trend melemah atau berbalik.
Prinsip teras strategi ini adalah menggunakan purata bergerak indeks ((EMA) dari beberapa kitaran yang berbeza untuk menilai trend pasaran dan menangkap peluang perdagangan. Lima EMA digunakan dalam strategi ini: purata seketika ((14 kitaran), purata pertengahan ((25 kitaran), purata jangka pendek ((50 kitaran), purata pertengahan ((100 kitaran) dan purata jangka panjang ((200 kitaran).
Logik utama strategi ini ialah:
Mekanisme penilaian trend:
Isyarat masuk:
Isyarat keluar:
Kawalan Risiko:
Pengesanan lokasi:
Pengesahan garis rataan berganda: Mengakui trend bersama melalui garis rata-rata pelbagai kitaran, mengurangkan penembusan palsu dan isyarat salah, meningkatkan kualiti isyarat
Pengesanan TrendBerbanding dengan sistem satu garis rata, sistem pelbagai garis rata dapat mengenal pasti titik perubahan trend pasaran dengan lebih tepat, terutamanya apabila garis rata seketika berubah berbanding dengan garis rata lain.
Pengurusan risiko yang fleksibelPerdagangan tanpa modal: menggunakan kriteria masuk dan keluar yang berbeza untuk mata wang berganda dan mata wang kosong, yang mencerminkan penanganan risiko yang berbeza terhadap arah pasaran, dengan penapis kadar turun naik tambahan untuk mata wang kosong.
Isyarat perdagangan visualStrategi: Menunjukkan pembelian, penjualan, dan kedudukan kosong dengan jelas melalui tanda grafik untuk memudahkan analisis dan pemantauan masa nyata.
Penglihatan latar belakang trend: Menggunakan warna latar belakang untuk membezakan trend naik dan turun, menunjukkan keadaan pasaran secara intuitif, memudahkan peniaga menilai keadaan pasaran semasa dengan cepat.
Potensi untuk diperluaskanPengiraan RSI dan MACD telah diintegrasikan, walaupun tidak digunakan dalam logik perdagangan pada masa ini, tetapi memberikan asas untuk pengoptimuman strategi pada masa depan.
Parameter yang boleh disesuaikan: Semua parameter utama boleh disesuaikan melalui kawalan input, termasuk kitaran purata, nilai RSI, parameter MACD dan tetapan ATR, untuk memudahkan pengoptimuman mengikut keadaan pasaran dan jenis perdagangan yang berbeza.
Ketinggalan garis purataSemua sistem yang berasaskan garis rata mempunyai ketinggalan, dan mungkin terdapat penarikan balik yang lebih besar dalam pasaran yang bergolak atau pergerakan berbalik dengan cepat. Penyelesaian adalah dengan menyesuaikan kitaran garis rata, atau menambah syarat penapisan pasaran bergolak tambahan.
Risiko perdagangan berlebihanDalam pasaran yang bergolak, rata-rata seketika mungkin sering melintasi rata-rata jangka pendek, menyebabkan perdagangan berlebihan. Anda boleh mengurangkan perdagangan yang tidak sah dengan meningkatkan masa pegangan minimum atau menambahkan penapis tambahan.
Masalah kesesuaian pasaran yang berbezaStrategi rata-rata garisan dengan parameter tetap menunjukkan perbezaan yang besar dalam prestasi di pelbagai persekitaran pasaran dan jenis perdagangan. Optimasi parameter harus dilakukan untuk pasaran tertentu, atau pertimbangkan untuk menggunakan parameter yang menyesuaikan diri.
Pertembungan isyarat: Walaupun RSI dan MACD dikira dalam kod, ia tidak diintegrasikan dengan berkesan dalam logik perdagangan, yang boleh menyebabkan konflik isyarat yang berpotensi atau kehilangan peluang pengoptimuman.
Kecenderungan berbilang kepalaStrategi semasa menggunakan piawaian yang berbeza untuk multihead dan head, dan tidak ada penapis kadar turun naik untuk multihead, dan head memerlukan syarat ATR minimum, yang mungkin menjadikan strategi lebih agresif dalam pasaran naik, meningkatkan peluang risiko.
Mekanisme keluar tetapStrategi menggunakan penyambungan penunjuk teknikal yang tetap sebagai titik permulaan, kekurangan mekanisme hentikan dan hentikan yang disesuaikan dengan keadaan pasaran yang dinamik, mungkin tidak dapat mengunci keuntungan atau mengawal risiko dengan berkesan.
Kepekaan ParameterStrategi bergantung kepada pelbagai parameter kitaran rata-rata, di mana perubahan kecil dalam parameter ini boleh menyebabkan perbezaan yang ketara dalam hasil perdagangan, meningkatkan risiko overfit.
Penunjuk yang dikiraStrategi telah mengira RSI dan MACD tetapi tidak memanfaatkan sepenuhnya. RSI boleh digunakan untuk menyaring keadaan pasaran yang melampau, dan MACD digunakan untuk mengesahkan arah trend dan meningkatkan kualiti isyarat. Sebagai contoh, RSI tidak boleh berada di kawasan yang terlalu banyak apabila masuk ke dalam banyak kepala dan RSI tidak berada di kawasan yang terlalu banyak apabila masuk ke dalam kepala kosong.
Sistem Hentikan Kerosakan Dinamik: Memperkenalkan mekanisme hentian dinamik berasaskan ATR, menyesuaikan jarak hentian secara automatik mengikut turun naik pasaran, meningkatkan keupayaan pengurusan risiko. Ini boleh dicapai dengan mengira nilai ATR pada titik masuk ditambah beberapa kali ganda.
Klasifikasi keadaan pasaranMenambah mekanisme penilaian keadaan pasaran (pasaran trend vs pasaran goyah), menggunakan strategi perdagangan yang berbeza dalam keadaan pasaran yang berbeza. Sebagai contoh, kekuatan trend pasaran dapat dinilai melalui kemerosotan garis rata-rata jangka panjang atau indikator ADX.
Analisis pelbagai kerangka masa: Mengintegrasikan maklumat trend untuk tempoh masa yang lebih tinggi, hanya berdagang apabila arah trend untuk tempoh masa yang lebih tinggi adalah sama, meningkatkan kadar kemenangan.
Optimumkan parameter rata-rataStrategi semasa menggunakan kitaran purata tetap ((14, 25, 50, 100, 200), yang boleh didapati dengan mengkaji semula kombinasi parameter yang berbeza untuk mencari parameter optimum yang lebih sesuai untuk pasaran tertentu.
Tambah pengesahan jumlahGabungan penunjuk volum untuk mengesahkan kekuatan trend, hanya berdagang dalam trend yang disokong oleh volum, mengurangkan kerugian akibat pecah palsu.
Syarat kemasukan: Mengoptimumkan logik kemasukan multihead dan kosong, menjadikannya lebih simetrik, atau membuat penyesuaian yang lebih halus untuk ciri-ciri arah pasaran yang berbeza. Sebagai contoh, anda boleh mempertimbangkan untuk meningkatkan penapis kadar turun naik semasa kemasukan multihead juga, atau menyesuaikan ketegasan pengesahan trend.
Tambah waktu penapisanMenambah penapis masa dagangan untuk mengelakkan turun naik pasaran atau turun naik pasaran yang lebih rendah, seperti pengumuman data penting atau penutupan pasaran.
Sistem perdagangan menangkap trend garis purata berganda dengan pengesahan silang adalah strategi perdagangan kuantitatif berdasarkan analisis teknikal untuk menilai trend pasaran melalui kombinasi garis purata dalam pelbagai kitaran yang berbeza, dan membuka kedudukan apabila trend jelas, dan menutup posisi apabila trend melemah. Kelebihan utama strategi ini adalah memanfaatkan trend pengesahan silang garis purata berganda, mengurangkan isyarat yang salah, dan meningkatkan kualiti perdagangan.
Strategi ini berfungsi dengan baik di pasaran yang jelas dalam trend, tetapi mungkin menghadapi risiko perdagangan berlebihan di pasaran yang bergolak. Kestabilan dan kesesuaian strategi dapat ditingkatkan lagi dengan mengintegrasikan RSI dan MACD yang telah dikira, memperkenalkan mekanisme hentian dinamik, mengoptimumkan kombinasi parameter rata-rata, dan meningkatkan klasifikasi keadaan pasaran.
Untuk aplikasi praktikal, disarankan untuk melakukan pengulangan yang mencukupi pada pelbagai persekitaran pasaran dan jenis perdagangan, menyesuaikan parameter untuk menyesuaikan diri dengan ciri-ciri pasaran tertentu, dan mengawal risiko perdagangan tunggal dalam kombinasi dengan strategi pengurusan wang. Di samping itu, anda boleh mempertimbangkan untuk menggunakan strategi ini sebagai sebahagian daripada portfolio, digunakan bersama dengan strategi pelengkap lain, untuk menyebarkan risiko perdagangan, meningkatkan kestabilan keseluruhan portfolio.
/*backtest
start: 2025-02-23 00:00:00
end: 2025-03-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("etude9", shorttitle="etude 9", overlay=true)
//on tente de comlbiner avec le RSi un stratégie pas si mauvaise sur les longs
// un d7 r rsi qui donne des indiciataions pas mal pour les short pour les long pas très concluant
// === Paramètres d'entrée ===
// Source de prix
// et merde rendement sur long est plus efficace sans condition sur ATR !!
// par contre j'ai l'imression que le rsi ça va être bien pour les shorts
// bon avec le RSi ça donne rien, et avec le macd, ç ce stade c'est foireux mmm
pricetype = input(close, title="Source de prix pour les moyennes mobiles")
// Périodes des moyennes mobiles
instant = input(14, title="Période de la moyenne instantanée (10)")
interm = input(25, title="Perdiode intermediaire (25)")
shortperiod = input(50, title="Période de la moyenne mobile courte (20)")
mediumperiod = input(100, title="Période de la moyenne mobile moyenne (50)")
longperiod = input(200, title="Période de la moyenne mobile longue (100)")
// Paramètres du RSI
rsi_length = input.int(14, title="Période RSI")
rsi_overbought = input.int(78, title="Niveau de surachat (RSI)")
rsi_oversold = input.int(30, title="Niveau de survente (RSI)")
// Paramètres pour le MACD
fast_length = input.int(12, title="Longueur Rapide MACD")
slow_length = input.int(26, title="Longueur Lente MACD")
signal_length = input.int(9, title="Longueur du Signal MACD")
// Paramètres de l'ATR
atr_length = input.int(14, title="Période ATR")
atr_multiplier = input.float(1.5, title="Multiplicateur ATR pour le Stop-Loss")
// Calcul de l'ATR
atr = ta.atr(atr_length)
// === Calcul des moyennes mobiles (EMA uniquement) ===
instant_ma = ta.ema(pricetype, instant) // Moyenne mobile instantanée
short_ma = ta.ema(pricetype, shortperiod) // Moyenne mobile courte (20)
medium_ma = ta.ema(pricetype, mediumperiod) // Moyenne mobile moyenne (50)
long_ma = ta.ema(pricetype, longperiod) // Moyenne mobile longue (100)
interm_ma = ta.ema(pricetype, interm)
// Calcul du RSI
rsi = ta.rsi(close, rsi_length)
// Calcul du MACD
[macd_line, signal_line, hist_line] = ta.macd(close, fast_length, slow_length, signal_length)
// Stocker les résultats de crossover et crossunder dans des variables globales
is_crossover = ta.crossover(macd_line, signal_line)
is_crossunder = ta.crossunder(macd_line, signal_line)
// Filtre ATR : on ne trade que si la volatilité est suffisante
min_atr = atr > ta.sma(atr, atr_length) // ATR supérieur à sa moyenne
// === Conditions de tendance ===
trending_up = instant_ma > short_ma and instant_ma > medium_ma and instant_ma > long_ma and short_ma > medium_ma // Tendance haussière
trending_down = instant_ma< short_ma and instant_ma<medium_ma and instant_ma<long_ma and short_ma<long_ma // Tendance baissière
// Filtre RSI
rsi_filter_buy = rsi < rsi_overbought // RSI n'est pas en surachat pour un achat
rsi_filter_sell = rsi > rsi_oversold // RSI n'est pas en survente pour une vente
// === Gestion des positions ===
var bool in_position = false // Variable pour suivre si une position est ouverte
var bool is_long = false // Variable pour suivre si la position est longue ou courte
// === Signaux d'ouverture et de fermeture ===
bool buy_signal = false // Signal d'ouverture d'une position longue
bool close_signal = false // Signal de fermeture d'une position longue
bool sell_signal = false // Signal d'ouverture d'une position courte
bool close_short_signal = false // Signal de fermeture d'une position courte
// Ouvrir une position longue
if (trending_up and not in_position)
strategy.entry("Long", strategy.long)
in_position := true
is_long := true
buy_signal := true // Signal d'ouverture
else
buy_signal := false
// Fermer la position longue si instant_ma < medium_ma
if (in_position and is_long and instant_ma < short_ma)
strategy.close("Long")
in_position := false
is_long := false
close_signal := true // Signal de fermeture
else
close_signal := false
// Ouvrir une position courte
if (trending_down and not in_position and min_atr)
strategy.entry("Short", strategy.short)
in_position := true
is_long := false
sell_signal := true // Signal d'ouverture
else
sell_signal := false
// Fermer la position courte si instant_ma > medium_ma
if (in_position and not is_long and instant_ma > medium_ma)
strategy.close("Short")
in_position := false
close_short_signal := true // Signal de fermeture
else
close_short_signal := false
// === Affichage des signaux sur le graphique ===
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", size=size.small)
plotshape(series=close_signal, title="Close Long Signal", location=location.abovebar, color=color.orange, style=shape.labeldown, text="Close Long", size=size.small)
plotshape(series=close_short_signal, title="Close Short Signal", location=location.belowbar, color=color.blue, style=shape.labelup, text="Close Short", size=size.small)
// === Affichage des moyennes mobiles sur le graphique ===
plot(short_ma, color=color.blue, title="Moyenne mobile courte (20)", linewidth=2)
plot(medium_ma, color=color.orange, title="Moyenne mobile moyenne (50)", linewidth=2)
plot(long_ma, color=color.red, title="Moyenne mobile longue (100)", linewidth=2)
plot(instant_ma, color=color.rgb(43, 14, 111), title="Moyenne mobile instantanée (10)", linewidth=2)
plot(interm_ma, color=color.rgb(26, 192, 34), title="Moyenne mobile instantanée (10)", linewidth=2)
// Coloration de fond pour les tendances
bgcolor(color=trending_up ? color.new(color.green, 90) : trending_down ? color.new(color.red, 90) : na, title="Coloration de fond")