Crossover purata bergerak berbilang digabungkan dengan strategi dagangan penunjuk momentum

EMA RSI MACD SL TP
Tarikh penciptaan: 2024-12-05 16:37:24 Akhirnya diubah suai: 2024-12-05 16:37:24
Salin: 0 Bilangan klik: 511
1
fokus pada
1617
Pengikut

Crossover purata bergerak berbilang digabungkan dengan strategi dagangan penunjuk momentum

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan kuantitatif yang menggabungkan pelbagai indeks moving averages (EMA), indeks yang agak kuat (RSI) dan pergerakan rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata rata-rata (MACD). Strategi ini membentuk kerangka keputusan perdagangan yang lengkap melalui kerjasama antara pelbagai petunjuk teknikal.

Prinsip Strategi

Logik teras strategi adalah berdasarkan elemen utama berikut:

  1. Sistem garis rata: menggunakan 4 EMA ((10/20/50/100) untuk membina sistem penilaian trend, garis rata-rata jangka pendek termasuk 10 dan 20 hari EMA, garis rata-rata jangka panjang adalah 50 dan 100 hari EMA
  2. Isyarat masuk: Melakukan lebih banyak memerlukan memenuhi EMA jangka pendek ke atas melalui EMA jangka panjang, sementara RSI berada di atas 50 dan melalui garis isyarat di MACD; melakukan shorting memerlukan syarat sebaliknya.
  3. Pengurusan risiko: 1.5% stop loss dan 3% stop loss telah ditetapkan, membentuk mekanisme pengurusan wang yang lengkap.
  4. Sistem pengesahan: Menggunakan RSI dan MACD sebagai alat pengesahan trend untuk meningkatkan ketepatan perdagangan.

Kelebihan Strategik

  1. Mekanisme pengesahan berganda: Dengan pengesahan tiga kali RSI dan MACD, pengesahan tiga kali RSI dan MACD, pengesahan tiga kali RSI dan MACD, pengesahan tiga kali RSI dan MACD, pengesahan tiga kali MACD, pengesahan tiga kali RSI dan MACD, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali RSI, pengesahan tiga kali R
  2. Kawalan risiko yang baik: Dengan seting stop loss yang jelas, risiko setiap perdagangan dapat dikawal dengan berkesan.
  3. Keupayaan untuk menjejaki trend: Dengan pelbagai sistem garis rata, lebih baik menangkap trend pasaran.
  4. Tetapan parameter yang fleksibel: parameter bagi setiap petunjuk boleh disesuaikan mengikut keadaan pasaran yang berbeza.
  5. Operasi sistematik: Strategi logik yang jelas, yang membolehkan transaksi berprogram sepenuhnya.

Risiko Strategik

  1. Risiko pasaran berombak: Isyarat palsu yang kerap mungkin dijana dalam pasaran mendatar dan berombak.
  2. Risiko keterbelakangan: Sistem garis rata mempunyai keterbelakangan tertentu dan mungkin terlepas masa kemasukan terbaik.
  3. Sensitiviti parameter: Kombinasi parameter yang berbeza boleh menyebabkan perbezaan dalam prestasi strategi.
  4. Ketergantungan kepada keadaan pasaran: Strategi berfungsi dengan baik dalam pasaran yang jelas bercenderungan, tetapi mungkin tidak berfungsi dengan baik dalam keadaan pasaran lain.

Arah pengoptimuman strategi

  1. Penyesuaian parameter dinamik: Anda boleh menyesuaikan kitaran garis purata dan nilai RSI mengikut pergerakan turun naik pasaran.
  2. Pengenalan keadaan pasaran: Tambah modul penilaian keadaan pasaran, menggunakan strategi perdagangan yang berbeza dalam keadaan pasaran yang berbeza.
  3. Pengoptimuman Hentikan Kerugian: Mekanisme Hentikan Kerugian yang boleh dikesan boleh diperkenalkan untuk melindungi keuntungan dengan lebih baik.
  4. Pengurusan kedudukan: Tambah modul pengurusan kedudukan dinamik, menyesuaikan peratusan pegangan kedudukan mengikut risiko pasaran.
  5. Penapisan isyarat: Indikator lain seperti jumlah trafik boleh ditambah sebagai syarat penapisan tambahan.

ringkaskan

Ini adalah strategi perdagangan kuantitatif yang dirancang dengan logik dan logik yang ketat. Dengan penggunaan gabungan pelbagai petunjuk teknikal, ia dapat menangkap trend pasaran dengan berkesan dan mempunyai mekanisme kawalan risiko yang lengkap.

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

//@version=5
strategy("4 EMA Strategy with RSI & MACD", shorttitle="4 EMA + RSI + MACD", overlay=true)

// Input EMA periods
ema1 = input(10, title="EMA 1")
ema2 = input(20, title="EMA 2")
ema3 = input(50, title="EMA 3")
ema4 = input(100, title="EMA 4")

// Input RSI & MACD settings
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="RSI Overbought")
rsiOversold = input(30, title="RSI Oversold")
macdFast = input(12, title="MACD Fast Length")
macdSlow = input(26, title="MACD Slow Length")
macdSignal = input(9, title="MACD Signal Length")

// Stop Loss and Take Profit Inputs
stopLossPct = input.float(1.5, title="Stop Loss %") / 100
takeProfitPct = input.float(3, title="Take Profit %") / 100

// Calculate EMAs
ema_1 = ta.ema(close, ema1)
ema_2 = ta.ema(close, ema2)
ema_3 = ta.ema(close, ema3)
ema_4 = ta.ema(close, ema4)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdFast, macdSlow, macdSignal)

// Plot EMAs
plot(ema_1, color=color.blue, title="EMA 10")
plot(ema_2, color=color.green, title="EMA 20")
plot(ema_3, color=color.orange, title="EMA 50")
plot(ema_4, color=color.red, title="EMA 100")

// Entry Conditions
longCondition = ta.crossover(ema_1, ema_4) and ta.crossover(ema_2, ema_3) and rsi > 50 and macdLine > signalLine
shortCondition = ta.crossunder(ema_1, ema_4) and ta.crossunder(ema_2, ema_3) and rsi < 50 and macdLine < signalLine

// Declare Stop Loss and Take Profit Variables
var float stopLossPrice = na
var float takeProfitPrice = na
var line stopLossLine = na
var line takeProfitLine = na

// Long Trade
if (longCondition)
    strategy.entry("Buy", strategy.long)
    stopLossPrice := strategy.position_avg_price * (1 - stopLossPct)
    takeProfitPrice := strategy.position_avg_price * (1 + takeProfitPct)
    // stopLossLine := line.new(bar_index, stopLossPrice, bar_index + 1, stopLossPrice, color=color.red, width=2, style=line.style_dotted)
    // takeProfitLine := line.new(bar_index, takeProfitPrice, bar_index + 1, takeProfitPrice, color=color.green, width=2, style=line.style_dotted)

// Short Trade
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    stopLossPrice := strategy.position_avg_price * (1 + stopLossPct)
    takeProfitPrice := strategy.position_avg_price * (1 - takeProfitPct)
    // stopLossLine := line.new(bar_index, stopLossPrice, bar_index + 1, stopLossPrice, color=color.red, width=2, style=line.style_dotted)
    // takeProfitLine := line.new(bar_index, takeProfitPrice, bar_index + 1, takeProfitPrice, color=color.green, width=2, style=line.style_dotted)

// Clear Lines on Trade Exit
// if (strategy.position_size == 0)
//     line.delete(stopLossLine)
//     line.delete(takeProfitLine)

// Exit Trades
if (strategy.position_size > 0)
    strategy.exit("Sell", from_entry="Buy", stop=stopLossPrice, limit=takeProfitPrice)

if (strategy.position_size < 0)
    strategy.exit("Cover", from_entry="Sell", stop=stopLossPrice, limit=takeProfitPrice)