Tangkapan aliran purata bergerak berganda dan sistem perdagangan pengesahan silang

EMA RSI MACD ATR 趋势跟踪 均线交叉 波动率过滤
Tarikh penciptaan: 2025-03-03 10:11:37 Akhirnya diubah suai: 2025-03-03 10:11:37
Salin: 0 Bilangan klik: 399
2
fokus pada
319
Pengikut

Tangkapan aliran purata bergerak berganda dan sistem perdagangan pengesahan silang Tangkapan aliran purata bergerak berganda dan sistem perdagangan pengesahan silang

Gambaran keseluruhan

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 Strategi

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:

  1. Mekanisme penilaian trend:

    • Keadaan trend ke atas: purata sesaat di atas purata jangka pendek, pertengahan dan panjang, dan purata jangka pendek di atas purata jangka menengah
    • Keadaan trend menurun: purata sesaat di bawah purata jangka pendek, pertengahan dan panjang, dan purata jangka pendek di bawah purata jangka panjang
  2. Isyarat masuk:

    • Masuk berbilang mata: apabila memenuhi syarat trend naik dan tidak memegang kedudukan semasa
    • Kemasukan kosong: apabila memenuhi syarat tren menurun dan tidak memegang kedudukan semasa, dan memenuhi syarat ATR minimum (cukup turun naik pasaran)
  3. Isyarat keluar:

    • Kedudukan rata berganda: apabila purata seketika jatuh di bawah purata jangka pendek
    • Posisi kosong: apabila rata-rata seketika melintasi rata-rata pertengahan
  4. Kawalan Risiko:

    • Menggunakan penunjuk ATR sebagai penapis turun naik, hanya untuk berdagang kosong apabila turun naiknya cukup ((ATR lebih besar daripada rata-rata)
    • Integrasi tahap RSI overbought dan oversold sebagai syarat penapisan tambahan yang berpotensi (walaupun ditakrifkan dalam kod tetapi tidak digunakan dalam logik perdagangan semasa)
  5. Pengesanan lokasi:

    • Strategi menggunakan pembolehubah Boolean untuk mengesan sama ada kedudukan semasa dan arah kedudukan ((multihead atau kosong)

Kelebihan Strategik

  1. Pengesahan garis rataan berganda: Mengakui trend bersama melalui garis rata-rata pelbagai kitaran, mengurangkan penembusan palsu dan isyarat salah, meningkatkan kualiti isyarat

  2. 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.

  3. 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.

  4. Isyarat perdagangan visualStrategi: Menunjukkan pembelian, penjualan, dan kedudukan kosong dengan jelas melalui tanda grafik untuk memudahkan analisis dan pemantauan masa nyata.

  5. 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.

  6. 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.

  7. 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.

Risiko Strategik

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

Arah pengoptimuman strategi

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. Tambah pengesahan jumlahGabungan penunjuk volum untuk mengesahkan kekuatan trend, hanya berdagang dalam trend yang disokong oleh volum, mengurangkan kerugian akibat pecah palsu.

  7. 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.

  8. 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.

ringkaskan

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.

Kod sumber strategi
/*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")