Strategi hentikan kerugian berdasarkan purata bergerak berganda dinamik


Tarikh penciptaan: 2024-02-26 11:13:17 Akhirnya diubah suai: 2024-02-26 11:13:17
Salin: 0 Bilangan klik: 594
1
fokus pada
1617
Pengikut

Strategi hentikan kerugian berdasarkan purata bergerak berganda dinamik

Gambaran keseluruhan

Strategi ini adalah strategi pengesanan hentian dinamik berdasarkan garis rata-rata EMA ganda. Ia menggunakan garis 9 dan 20 untuk menentukan arah trend pasaran, digabungkan dengan RSI yang menyaring pecahan palsu. Ia juga menggunakan ATR untuk mengira titik hentian dan hentian dinamik.

Prinsip Strategi

Strategi ini menggunakan EMA 9 hari sebagai garis purata jangka pendek, dan EMA 20 hari sebagai garis purata jangka pertengahan, untuk menentukan trend harga. Apabila harga naik melalui garis purata jangka pendek, dan harga penutupan berada di atas harga tertinggi hari sebelumnya, dan RSI lebih tinggi daripada 30, buat lebih banyak; apabila harga turun melalui garis purata jangka pendek, dan harga penutupan berada di bawah harga terendah hari sebelumnya, dan RSI lebih rendah daripada 70, buat kosong.

Stop loss ditetapkan sebagai harga penutupan tolak 1.5 kali nilai ATR, dan stop loss ditetapkan sebagai harga penutupan ditambah ATR dikalikan dengan faktor stop. Pada masa yang sama menggunakan 2 kali ATR untuk menetapkan trend track stop.

Kelebihan Strategik

  1. Menggunakan EMA ganda untuk menilai trend utama pasaran dan mengelakkan kebosanan bunyi
  2. Menambah keakuratannya dengan penapis RSI
  3. Dinamika Stop Loss Stop, yang boleh disesuaikan dengan turun naik pasaran
  4. Mengikuti Trend, Hentikan Kerugian, dan Maksimumkan Keuntungan

Analisis risiko

  1. EMA rata-rata ketinggalan dan mungkin terlepas peluang jangka pendek
  2. RSI parameter yang tidak betul boleh menyebabkan peluang masuk yang hilang
  3. Rasio stop loss yang tidak betul, mungkin terlalu longgar atau ketat
  4. Stop loss boleh ditembusi apabila keadaan berubah-ubah.

Arah pengoptimuman

  1. Uji kombinasi EMA dengan parameter yang berbeza untuk mencari parameter yang optimum
  2. Mengoptimumkan parameter RSI, mengimbangi hubungan antara ketepatan masuk dan peluang
  3. Uji peratusan stop loss yang berbeza untuk mencari konfigurasi yang optimum
  4. Tambah lebih banyak syarat penapis untuk mengurangkan kemungkinan penembusan

ringkaskan

Strategi ini secara keseluruhan merupakan strategi memegang kedudukan yang lebih stabil. Ia menggabungkan trend utama pasaran yang dinilai oleh EMA ganda, untuk mengelakkan keputusan yang dipengaruhi oleh kebisingan pasaran jangka pendek. Penambahan indikator RSI juga menapis penembusan palsu hingga ke tahap tertentu.

Kod sumber strategi
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("CJTrade", overlay=true)

short = ema(close, 9)
medium = ema(close, 20)
long = ema(close, 50)
very_long = ema(close, 200)

plot(short, color=color.gray, linewidth=1)
plot(medium, color=color.red, linewidth=1)
plot(long, color=color.black, linewidth=1)
plot(very_long, color=color.blue, linewidth=1)

rsiValue = rsi(close, 14)

near20EMA = close > medium - atr(14)

longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA
shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA

strategy.entry("Long", strategy.long, when=longCond)
strategy.entry("Short", strategy.short, when=shortCond)

atrValue = atr(14)
stopLossLevel = close - atrValue * 1.5

// Dynamic take profit level based on ATR
takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1)
takeProfitLevel = close + atrValue * takeProfitMultiplier

// Trailing stop loss for long positions
longTrailingStop = close - atrValue * 2
strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop)

// Trailing stop loss for short positions
shortTrailingStop = close + atrValue * 2
strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop)

strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)