Strategi dagangan momentum aliran purata berbilang bergerak digabungkan dengan sistem pengurusan risiko

EMA RSI ATR SMA STOCH
Tarikh penciptaan: 2024-12-05 14:52:06 Akhirnya diubah suai: 2024-12-05 14:52:06
Salin: 0 Bilangan klik: 420
1
fokus pada
1617
Pengikut

Strategi dagangan momentum aliran purata berbilang bergerak digabungkan dengan sistem pengurusan risiko

Gambaran keseluruhan

Ini adalah strategi perdagangan yang menggabungkan momentum dan trend untuk mengenal pasti trend dan dinamika pasaran melalui pelbagai indeks moving averages (EMA), indeks relatif kuat (RSI) dan penunjuk rawak (Stochastic). Strategi ini juga mengintegrasikan sistem pengurusan risiko berdasarkan purata gelombang sebenar (ATR), termasuk stop loss dinamik, sasaran keuntungan dan fungsi stop loss pengesanan, sambil menggunakan kaedah pengurusan kedudukan berasaskan risiko.

Prinsip Strategi

Strategi menggunakan 5 EMA yang berbeza tempoh ((8, 13, 21, 34, 55) untuk menentukan arah trend. Apabila EMA jangka pendek berada di atas EMA jangka panjang, ia dikenali sebagai uptrend; sebaliknya, ia adalah downtrend. RSI digunakan untuk mengesahkan momentum, menetapkan had masuk dan keluar yang berbeza.

Kelebihan Strategik

  1. Mekanisme pengesahan berganda: Mengurangkan risiko isyarat palsu dengan menggabungkan trend dan indikator momentum
  2. Pengurusan risiko dinamik: penyesuaian sasaran stop-loss dan profit berdasarkan turun naik pasaran
  3. Pengurusan kedudukan pintar: menyesuaikan saiz dagangan secara automatik mengikut risiko dan turun naik
  4. Perlindungan Keuntungan Lengkap: Menggunakan Tracking Stop Loss Lock untuk Menjana Keuntungan
  5. Mekanisme Keluar Fleksibel: Kombinasi pelbagai syarat untuk memastikan keluar pada masa yang tepat
  6. Pendedahan risiko rendah: maksimum 1% kerugian dalam akaun untuk setiap transaksi

Risiko Strategik

  1. Risiko pasaran yang bergolak: Sistem berbilang garis rata mungkin menghasilkan isyarat palsu yang kerap berlaku di pasaran horizontal
  2. Risiko tergelincir: tempoh turun naik yang tinggi boleh menyebabkan harga pelaksanaan sebenar menyimpang daripada jangkaan
  3. Risiko pengurusan wang: Walaupun kerugian tunggal terhad, kerugian berturut-turut masih boleh menjejaskan wang secara ketara
  4. Risiko pengoptimuman parameter: pengoptimuman berlebihan boleh menyebabkan overfit
  5. Ketinggalan dalam petunjuk teknikal: garis rata-rata dan pengayun mempunyai ketinggalan

Arah pengoptimuman strategi

  1. Penapisan keadaan pasaran: Tambah penapis kadar turun naik untuk menyesuaikan parameter strategi semasa turun naik tinggi
  2. Penapisan masa: menyesuaikan parameter dagangan mengikut ciri-ciri pasaran dalam tempoh masa yang berbeza
  3. Penyesuaian parameter dinamik: menyesuaikan kitaran EMA dan penurunan indikator secara automatik berdasarkan keadaan pasaran
  4. Peningkatan pengesahan jumlah transaksi: penambahan analisis jumlah transaksi untuk meningkatkan kebolehpercayaan isyarat
  5. Pengoptimuman mekanisme keluar: Kajian untuk penggandaan hentian yang lebih baik
  6. Memperkenalkan pembelajaran mesin: memilih parameter pengoptimuman menggunakan pembelajaran mesin

ringkaskan

Strategi ini menyediakan penyelesaian perdagangan yang menyeluruh dengan menggabungkan pelbagai petunjuk teknikal dan sistem pengurusan risiko yang baik. Kelebihan utamanya adalah mekanisme penapisan bertingkat dan pengurusan risiko yang dinamik, tetapi masih perlu dioptimumkan mengikut ciri-ciri pasaran tertentu. Pelaksanaan strategi yang berjaya memerlukan pemantauan dan penyesuaian berterusan, terutama untuk penyesuaian parameter dalam keadaan pasaran yang berbeza.

Kod sumber strategi
/*backtest
start: 2024-11-04 00:00:00
end: 2024-12-04 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Combined Strategy (Modernized)", overlay = true)

//----------//
// MOMENTUM //
//----------//
ema8 = ta.ema(close, 8)
ema13 = ta.ema(close, 13)
ema21 = ta.ema(close, 21)
ema34 = ta.ema(close, 34)
ema55 = ta.ema(close, 55)

// Plotting EMAs for visualization
plot(ema8, color=color.red, title="EMA 8", linewidth=1)
plot(ema13, color=color.orange, title="EMA 13", linewidth=1)
plot(ema21, color=color.yellow, title="EMA 21", linewidth=1)
plot(ema34, color=color.aqua, title="EMA 34", linewidth=1)
plot(ema55, color=color.lime, title="EMA 55", linewidth=1)

longEmaCondition = ema8 > ema13 and ema13 > ema21 and ema21 > ema34 and ema34 > ema55
exitLongEmaCondition = ema13 < ema55

shortEmaCondition = ema8 < ema13 and ema13 < ema21 and ema21 < ema34 and ema34 < ema55
exitShortEmaCondition = ema13 > ema55

// ----------  //
// OSCILLATORS //
// ----------- //
rsi = ta.rsi(close, 14)
longRsiCondition = rsi < 70 and rsi > 40
exitLongRsiCondition = rsi > 70

shortRsiCondition = rsi > 30 and rsi < 60
exitShortRsiCondition = rsi < 30

// Stochastic
k = ta.stoch(close, high, low, 14)
d = ta.sma(k, 3)

longStochasticCondition = k < 80
exitLongStochasticCondition = k > 95

shortStochasticCondition = k > 20
exitShortStochasticCondition = k < 5

//----------//
// STRATEGY //
//----------//

// ATR for dynamic stop loss and take profit
atr = ta.atr(14)
stopLossMultiplier = 2
takeProfitMultiplier = 4
stopLoss = atr * stopLossMultiplier
takeProfit = atr * takeProfitMultiplier

// Trailing stop settings
trailStopMultiplier = 1.5
trailOffset = atr * trailStopMultiplier

// Risk management: dynamic position sizing
riskPerTrade = 0.01  // 1% risk per trade
positionSize = strategy.equity * riskPerTrade / stopLoss

longCondition = longEmaCondition and longRsiCondition and longStochasticCondition and strategy.position_size == 0
exitLongCondition = (exitLongEmaCondition or exitLongRsiCondition or exitLongStochasticCondition) and strategy.position_size > 0

if (longCondition)
    strategy.entry("LONG", strategy.long, qty=positionSize)
    strategy.exit("Take Profit Long", "LONG", stop=close - stopLoss, limit=close + takeProfit, trail_offset=trailOffset)

if (exitLongCondition)
    strategy.close("LONG")
    
shortCondition = shortEmaCondition and shortRsiCondition and shortStochasticCondition and strategy.position_size == 0
exitShortCondition = (exitShortEmaCondition or exitShortRsiCondition or exitShortStochasticCondition) and strategy.position_size < 0

if (shortCondition)
    strategy.entry("SHORT", strategy.short, qty=positionSize)
    strategy.exit("Take Profit Short", "SHORT", stop=close + stopLoss, limit=close - takeProfit, trail_offset=trailOffset)

if (exitShortCondition)
    strategy.close("SHORT")