Strategi EMA dengan ATR Stop Loss

Penulis:ChaoZhang, Tanggal: 2023-12-11 16:00:09
Tag:

img

Gambaran umum

Strategi ini menggunakan EMA golden cross untuk menghasilkan sinyal perdagangan, yaitu sinyal beli dihasilkan ketika garis EMA cepat melintasi di atas garis EMA lambat, dan sinyal jual dihasilkan ketika garis EMA cepat melintasi di bawah garis EMA lambat.

Prinsip Strategi

  1. Tentukan periode EMA cepat sebagai 13 dan periode EMA lambat sebagai 48.
  2. Ketika garis EMA cepat melintasi di atas garis EMA lambat, sinyal beli dihasilkan; ketika garis EMA cepat melintasi di bawah garis EMA lambat, sinyal jual dihasilkan.
  3. Gunakan fungsi ta.crossover dan ta.crossunder untuk menentukan golden cross dan death cross dari moving average.
  4. Gunakan indikator ATR untuk menghitung stop loss dinamis, yang 1,5 kali jarak ATR dari close.
  5. Secara intuitif menampilkan sinyal perdagangan dan tingkat stop loss melalui perubahan warna, tanda beli / jual dan garis stop loss.

Analisis Keuntungan

  1. Sinyal dihasilkan berdasarkan EMA golden cross dan death cross, yang menghindari kehilangan tren pasar utama dan pengembalian yang cukup besar.
  2. ATR trailing stop loss memastikan keuntungan yang sesuai dengan tren sambil mengendalikan drawdown, mencapai rasio risiko-manfaat yang seimbang.
  3. Tampilan sinyal yang intuitif dan tampilan stop loss, mudah dioperasikan, cocok untuk kebanyakan orang.
  4. Beberapa parameter yang dapat disesuaikan, mudah dipahami dan dioptimalkan.

Analisis Risiko

  1. Flash crash bisa memicu stop loss.
  2. Sinyal tidak valid yang sering dapat terjadi di pasar yang bervariasi.
  3. Pengaturan parameter yang tidak benar dapat mengakibatkan masuk yang terlalu agresif atau stop loss yang longgar.
  4. Parameter EMA dan ATR perlu dioptimalkan dengan benar.

Solusi:

  1. Luangkan pengganda ATR dengan tepat untuk meninggalkan beberapa buffer dari puncak baru-baru ini.
  2. Pertimbangkan mekanisme konfirmasi setelah sinyal terjadi, seperti harga yang melanggar tertinggi sebelumnya dll.
  3. Optimasi parameter harus memperhitungkan berbagai kondisi pasar.

Arahan Optimasi

  1. Uji kombinasi parameter yang berbeda untuk menemukan parameter yang optimal.
  2. Pertimbangkan untuk menambahkan indikator lain untuk penyaringan sinyal, seperti volume, indikator volatilitas dll untuk meningkatkan kualitas sinyal.
  3. Sesuaikan parameter EMA sesuai dengan tren utama untuk lebih menangkap tren utama.
  4. Pertimbangkan untuk menyesuaikan secara dinamis ATR stop loss multiplier untuk memperluas stop range selama tren pasar.
  5. Menggabungkan algoritma pembelajaran mesin untuk optimasi parameter adaptif.

Kesimpulan

Strategi ini relatif sederhana dan mudah digunakan. Strategi ini menghasilkan sinyal berdasarkan EMA crossover, mengikuti tren, dan menggunakan ATR trailing stop loss untuk mengontrol risiko secara efektif. Meskipun mungkin ada beberapa sinyal palsu, strategi ini memiliki kemampuan yang kuat dalam menangkap tren utama dan pengembalian relatif stabil.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © byee322

/// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss
//@version=5
strategy("EMA Strategy with ATR Stop Loss", overlay=true)

// Define the EMA lengths as input parameters
emaLength1 = input(13, "EMA Length 1")
emaLength2 = input(48, "EMA Length 2")

// Define the moving averages
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)

// Buy signal: EMA 1 crosses above EMA 2
buy = ta.crossover(ema1, ema2)

// Sell signal: EMA 1 crosses below EMA 2
sell = ta.crossunder(ema1, ema2)

// Define the state variable
state = 0
state := buy ? 1 : sell ? -1 : nz(state[1])

// Change the color of the candles
color = state == 1 ? color.green : state == -1 ? color.red : na

// Plot the colored candles
plotcandle(open, high, low, close, color=color)

// Plot the signals on the chart with text labels
plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy")
plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell")

// Calculate the ATR
atrVal = ta.atr(14)

// Calculate the stop loss level for buy
stopLossBuy = buy ? close[1] - 1.5 * atrVal : na

// Calculate the stop loss level for sell
stopLossSell = sell ? close[1] + 1.5 * atrVal : na

// Plot the stop loss level for buy
plot(stopLossBuy,  color=color.new(color.green, 50), linewidth=3)

// Plot the stop loss level for sell
plot(stopLossSell, color=color.new(color.red, 50), linewidth=3)

if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Lebih banyak