Strategi perdagangan adaptif turun naik purata bergerak berganda dan sistem pengoptimuman keuntungan berbilang peringkat

EMA RSI ATR SL TP
Tarikh penciptaan: 2025-02-25 11:16:55 Akhirnya diubah suai: 2025-02-27 16:38:38
Salin: 4 Bilangan klik: 812
2
fokus pada
319
Pengikut

Strategi perdagangan adaptif turun naik purata bergerak berganda dan sistem pengoptimuman keuntungan berbilang peringkat Strategi perdagangan adaptif turun naik purata bergerak berganda dan sistem pengoptimuman keuntungan berbilang peringkat

Gambaran keseluruhan

Strategi perdagangan beradaptasi sendiri dengan sistem pengoptimuman keuntungan pelbagai peringkat adalah strategi perdagangan kuantitatif yang cekap yang direka khas untuk pedagang garis pendek. Inti strategi ini bergantung pada isyarat silang antara garis rata-rata cepat (EMA5) dan garis rata-rata lambat (EMA15), digabungkan dengan pengesahan momentum RSI, dan secara dinamik menyesuaikan tahap stop loss dan keuntungan melalui indikator kadar pergerakan ATR.

Prinsip Strategi

Strategi ini menggunakan persilangan dua purata bergerak indeks (EMA) sebagai isyarat masuk asas, ditambah dengan pengesahan kedua indeks relatif kuat (RSI), dan kemudian digabungkan dengan purata gelombang sebenar (ATR) untuk menetapkan sasaran stop loss dan keuntungan yang dinamik. Prinsip pelaksanaan khusus adalah sebagai berikut:

Syarat penyertaan:

  • Sinyal beli: apabila EMA 5 kitaran dikenakan EMA 15 kitaran, dan RSI lebih besar daripada 50, menunjukkan bahawa momentum jangka pendek meningkat dan cukup kuat
  • Sinyal jual: apabila EMA 5 kitaran di bawah EMA 15 kitaran, dan RSI kurang daripada 50, yang menunjukkan bahawa momentum jangka pendek ke bawah dan trend menurun disahkan

Pengurusan risiko dinamik:

  • Stop loss ((SL): ditetapkan sebagai harga semasa tolak 1 kali nilai ATR ((multihead) atau tambah 1 kali nilai ATR ((head kosong)
  • Objektif keuntungan pertama (TP1): ditetapkan sebagai harga semasa ditambah 1.5 kali ATR (Total) atau dikurangkan 1.5 kali ATR (Total kosong), di mana kedudukan 50% kosong
  • Matlamat keuntungan kedua ((TP2)): ditetapkan sebagai harga semasa ditambah 3 kali ATR ((multihead) atau tolak 3 kali ATR ((head kosong), di mana kosongkan baki 50% kedudukan

Konsep reka bentuk strategi ini adalah untuk menangkap titik perubahan trend melalui EMA, menapis kualiti isyarat melalui RSI, dan menggunakan ATR untuk menyesuaikan tahap keluar secara dinamik, yang membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza.

Kelebihan Strategik

  1. Pengurusan risiko dinamik: menggunakan ATR sebagai rujukan kadar turun naik, membolehkan strategi menyesuaikan diri secara automatik dengan keadaan kadar turun naik yang berbeza, secara automatik meningkatkan ruang berhenti dan keuntungan di pasaran yang bergelombang tinggi, dan secara automatik mengetatkan tahap berhenti dan keuntungan di pasaran yang bergelombang rendah.

  2. Struktur keuntungan bertingkat: Strategi menggunakan mod keuntungan dua peringkat ((1.5 kali ATR dan 3 kali ATR), 50% posisi kosong apabila sasaran peringkat pertama dicapai, yang menjamin penguncian cepat sebahagian daripada keuntungan dan membolehkan baki kedudukan untuk terus menangkap pergerakan yang lebih besar.

  3. Mekanisme pengesahan berganda: Pengesahan berganda pada EMA dan RSI secara berganda telah menyaring banyak isyarat palsu dan meningkatkan ketepatan dagangan.

  4. Pengurusan dagangan visual: Strategi menandai dengan jelas isyarat jual beli di carta dan tahap stop loss dan keuntungan yang dikira secara dinamik, yang sangat meningkatkan kebolehgunaan dan ketelusan perdagangan.

  5. Sistem amaran automatik: Syarat amaran terbina dalam dapat memberitahu peniaga secara automatik apabila isyarat perdagangan dicetuskan, untuk mengelakkan peluang perdagangan yang terlewatkan.

  6. Parameter yang boleh disesuaikan: Strategi menyediakan tetapan tersuai untuk ATR, yang membolehkan peniaga menyesuaikan secara fleksibel mengikut keutamaan risiko mereka.

Risiko Strategik

  1. Risiko pembalikan pasaran yang cepat: Kerana strategi ini berdasarkan EMA yang berkisar jangka pendek, pembalikan isyarat yang kerap mungkin berlaku dalam keadaan pasaran yang bergolak atau pecah palsu, yang menyebabkan kerugian berturut-turut. Penyelesaian adalah dengan menghentikan perdagangan dengan pengumuman berita utama atau pasaran yang bergolak secara melampau, atau dengan menambah syarat penapisan persekitaran pasaran tambahan.

  2. Penutupan kadar tetap tidak mencukupi: Walaupun penyesuaian ATR dinamik memberikan beberapa kesesuaian, penutupan ATR 1 kali ganda mungkin tidak mencukupi untuk melindungi dana dalam keadaan perubahan struktur pasaran (seperti melompat). Adalah disyorkan untuk menyesuaikan ATR kali ganda mengikut ciri-ciri turun naik sejarah produk tertentu dalam saham.

  3. Sensitiviti parameter: Pilihan kitaran EMA dan nilai terendah RSI mempunyai kesan yang besar terhadap prestasi strategi, parameter optimum mungkin berubah dalam keadaan pasaran yang berbeza. Ia disyorkan untuk menentukan kombinasi parameter yang sesuai untuk pasaran sasaran melalui pengulangan data sejarah.

  4. Risiko kecairan dalam saham: Pada masa pasaran yang kurang bergolak, ATR mungkin mempunyai jangkauan stop yang terlalu kecil, yang menyebabkan stop yang dicetuskan oleh pergerakan harga yang sedikit. Anda boleh menetapkan titik stop minimum sebagai perlindungan garis bawah.

  5. Kesan kos dagangan: Strategi ini direka untuk perdagangan garis pendek, perdagangan yang kerap akan menghasilkan kos dagangan yang lebih tinggi. Dalam aplikasi sebenar, ia perlu mengimbangi perbezaan titik dan komisen yang mengikis keuntungan.

Arah pengoptimuman strategi

  1. Memperkenalkan penapisan masa perdagangan: Perdagangan pada masa yang bergelombang tinggi (seperti masa persimpangan London-New York) telah disyorkan dalam kod, tetapi batasan ini tidak dikodkan secara keras dalam algoritma. Penapis berdasarkan masa pasaran boleh ditambah, menghasilkan isyarat hanya pada masa perdagangan yang optimum, untuk mengelakkan isyarat palsu semasa turun naik rendah.

  2. Mengoptimumkan kitaran RSI dan ambang: RSI semasa menggunakan 14 kitaran standard dan ambang pertengahan 50, dan kitaran RSI boleh disesuaikan dengan ciri-ciri pasaran tertentu ke nilai yang lebih sesuai dengan bingkai masa yang digunakan, sambil mempertimbangkan untuk menggunakan ambang asimetris (seperti menggunakan 55 kepala, menggunakan 45 kepala kosong) untuk menyesuaikan diri dengan kecenderungan pasaran yang mungkin ada.

  3. Menambah penapis trend: Walaupun EMA bersilang sudah dapat memberikan petunjuk arah trend, anda boleh mempertimbangkan untuk menambah indikator trend untuk tempoh yang lebih lama (seperti 50 kitaran EMA) sebagai penapis trend global, hanya melakukan satu pada arah trend yang lebih besar, meningkatkan kadar kejayaan.

  4. Pengurusan kedudukan dinamik: Strategi semasa menggunakan kedudukan tetap ((0.1), boleh mencapai pengurusan kedudukan dinamik berdasarkan ATR atau nisbah baki, menyesuaikan saiz kedudukan secara automatik dalam persekitaran kadar turun naik yang berbeza, mengekalkan kecergasan risiko yang konsisten.

  5. Mekanisme kawalan penarikan balik: menambah logik kawalan penarikan balik berdasarkan hak dan kepentingan akaun, secara automatik mengurangkan saiz urus niaga atau menghentikan urus niaga setelah mencapai had penarikan balik tertentu, melindungi keselamatan dana.

  6. Kualiti isyarat yang diberi berat: isyarat boleh diberi nilai kualiti (seperti berdasarkan sudut EMA, intensiti bacaan RSI, dan sebagainya), dan menyesuaikan kedudukan atau lebar berhenti mengikut dinamika penilaian, memberi lebih banyak berat kepada isyarat berkualiti tinggi.

ringkaskan

Strategi dagangan yang menyesuaikan diri dengan kadar turun naik dua hala dengan sistem pengoptimuman keuntungan bertingkat adalah sistem dagangan garis pendek yang menggabungkan secara organik petunjuk teknikal, pengurusan risiko dinamik dan sasaran keuntungan bertingkat. Kelebihan utamanya adalah fleksibiliti yang kuat, kawalan risiko yang ketat dan mempunyai ciri penglihatan dan automasi yang baik.

Strategi ini sangat sesuai untuk digunakan oleh peniaga garis pendek di pasaran yang sangat cair dan tidak menentu, tetapi pengguna perlu berhati-hati dengan penyaringan keadaan pasaran dan pengoptimuman parameter untuk bertindak balas terhadap perubahan dalam persekitaran pasaran yang berbeza. Dengan arah pengoptimuman yang dicadangkan, strategi ini mempunyai ruang untuk meningkatkan prestasi lebih lanjut, terutama dalam menambah penapisan trend dan pengurusan kedudukan dinamik.

Kod sumber strategi
/*backtest
start: 2024-02-26 00:00:00
end: 2025-02-23 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Scalping XAUUSD with Alerts By Fahrizal", overlay=true, default_qty_type=strategy.fixed, default_qty_value=0.1)

// Custom Inputs
tpMultiplier1 = input.float(1.5, "TP1 Multiplier (ATR)", minval=0.5, step=0.1) 
tpMultiplier2 = input.float(3.0, "TP2 Multiplier (ATR)", minval=1.0, step=0.1) 
slMultiplier = input.float(1.0, "SL Multiplier (ATR)", minval=0.5, step=0.1)   

// Indicator Definitions
emaFast = ta.ema(close, 5)   
emaSlow = ta.ema(close, 15)  
rsi = ta.rsi(close, 14)      
atr = ta.atr(14)             

// Variables to store levels
var float longSL = na
var float longTP1 = na
var float longTP2 = na
var float shortSL = na
var float shortTP1 = na
var float shortTP2 = na

// Plot to chart
plot(emaFast, color=color.green, title="EMA5")
plot(emaSlow, color=color.red, title="EMA15")

// Buy/Sell conditions
buySignal = ta.crossover(emaFast, emaSlow) and rsi > 50
sellSignal = ta.crossunder(emaFast, emaSlow) and rsi < 50

// Calculate and store TP and SL levels when signals trigger
if (buySignal)
    longSL := close - (atr * slMultiplier) 
    longTP1 := close + (atr * tpMultiplier1)
    longTP2 := close + (atr * tpMultiplier2)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TP1 Long", "Buy", qty_percent=50, limit=longTP1) 
    strategy.exit("TP2 Long", "Buy", qty_percent=50, limit=longTP2) 
    strategy.exit("SL Long", "Buy", stop=longSL)                    

if (sellSignal)
    shortSL := close + (atr * slMultiplier)     
    shortTP1 := close - (atr * tpMultiplier1)   
    shortTP2 := close - (atr * tpMultiplier2)   
    strategy.entry("Sell", strategy.short)
    strategy.exit("TP1 Short", "Sell", qty_percent=50, limit=shortTP1)  
    strategy.exit("TP2 Short", "Sell", qty_percent=50, limit=shortTP2)  
    strategy.exit("SL Short", "Sell", stop=shortSL)                    

// Display signals on the chart
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Display levels on chart using labels
if (buySignal)
    label.new(bar_index, high, "SL: " + str.tostring(longSL, "#.##") + "\nTP1: " + str.tostring(longTP1, "#.##") + "\nTP2: " + str.tostring(longTP2, "#.##"), 
              color=color.blue, textcolor=color.white, style=label.style_label_down)
if (sellSignal)
    label.new(bar_index, low, "SL: " + str.tostring(shortSL, "#.##") + "\nTP1: " + str.tostring(shortTP1, "#.##") + "\nTP2: " + str.tostring(shortTP2, "#.##"), 
              color=color.red, textcolor=color.white, style=label.style_label_up)

// Simple notifications when positions are opened
alertcondition(buySignal, title="Buy Alert", message="Buy Signal Detected! Check chart for SL, TP1, TP2 levels.")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal Detected! Check chart for SL, TP1, TP2 levels.")

// Plot levels (optional)
plot(buySignal ? longTP1 : na, "TP1 Long", color=color.green, style=plot.style_cross)
plot(buySignal ? longTP2 : na, "TP2 Long", color=color.lime, style=plot.style_cross)
plot(buySignal ? longSL : na, "SL Long", color=color.red, style=plot.style_cross)
plot(sellSignal ? shortTP1 : na, "TP1 Short", color=color.green, style=plot.style_cross)
plot(sellSignal ? shortTP2 : na, "TP2 Short", color=color.lime, style=plot.style_cross)
plot(sellSignal ? shortSL : na, "SL Short", color=color.red, style=plot.style_cross)