Strategi Hentian Trailing Moving Average Dual Dinamis

Penulis:ChaoZhang, Tarikh: 2024-02-26 11:13:17
Tag:

img

Ringkasan

Ini adalah strategi hentian yang dinamik berdasarkan garis EMA berganda. Ia menggunakan EMA 9 hari dan 20 hari untuk menentukan arah trend pasaran, digabungkan dengan penunjuk RSI untuk menapis pecah palsu. Ia juga menggunakan penunjuk ATR untuk mengira stop loss dinamik dan mengambil tahap keuntungan. Strategi ini sesuai untuk pegangan jangka sederhana hingga panjang.

Logika Strategi

Strategi ini menggunakan EMA 9 hari sebagai garis jangka pendek dan EMA 20 hari sebagai garis jangka sederhana untuk menentukan trend harga. Ia pergi lama apabila harga melintasi di atas garis jangka pendek dan harga penutupan lebih tinggi daripada tinggi hari sebelumnya, dengan RSI lebih rendah daripada 70 dan menutup lebih tinggi daripada EMA 20 hari tolak 1 ATR. Ia pergi pendek apabila harga melintasi di bawah garis jangka pendek dan harga penutupan lebih rendah daripada rendah hari sebelumnya, dengan RSI lebih tinggi daripada 30 dan menutup lebih tinggi daripada EMA 20 hari tolak 1 ATR.

Stop loss ditetapkan pada harga penutupan tolak 1.5 kali ATR. Ambil keuntungan ditetapkan pada harga penutupan ditambah ATR didarabkan dengan pekali mengambil keuntungan. Ia juga menggunakan 2 kali ATR untuk menetapkan trend trailing stop loss.

Analisis Kelebihan

  1. Menggunakan EMA dua untuk menentukan trend pasaran utama, mengelakkan tekanan oleh bunyi bising
  2. Menggabungkan penunjuk RSI untuk menapis rehat palsu, meningkatkan ketepatan kemasukan
  3. Stop loss dan mengambil keuntungan dinamik menyesuaikan diri dengan turun naik pasaran
  4. Stop loss trend menyumbang kepada keuntungan

Analisis Risiko

  1. Barisan EMA mempunyai kesan kelewatan, mungkin terlepas peluang jangka pendek
  2. Tetapan parameter RSI yang tidak betul mungkin terlepas entri
  3. Nisbah stop loss/take profit yang tidak betul mungkin terlalu longgar atau ketat
  4. Stop loss boleh ditembusi semasa turun naik pasaran yang ganas

Arahan pengoptimuman

  1. Uji gabungan EMA yang berbeza untuk mencari parameter optimum
  2. Mengoptimumkan parameter RSI untuk menyeimbangkan ketepatan kemasukan dan peluang menangkap
  3. Uji nisbah stop loss / mengambil keuntungan yang berbeza untuk mencari konfigurasi yang optimum
  4. Tambah lebih banyak keadaan penapis untuk mengurangkan kebarangkalian penembusan stop loss

Ringkasan

Secara keseluruhan, ini adalah strategi pegangan jangka menengah hingga jangka panjang yang agak stabil. Ia menggunakan EMA berganda untuk menentukan trend pasaran utama, mengelak daripada dipengaruhi oleh bunyi bising jangka pendek. Penambahan RSI juga menapis pecah palsu hingga tahap tertentu. Di samping itu, mekanisme stop loss / take profit dinamik membolehkan strategi disesuaikan berdasarkan turun naik pasaran. Walau bagaimanapun, masih ada risiko seperti ketinggalan purata bergerak dan potensi penembusan stop loss. Kita perlu mencari konfigurasi yang optimum melalui penyesuaian parameter dan pengoptimuman semasa aplikasi praktikal.


/*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)


Lebih lanjut