EMA trend following strategy adalah strategi pelacakan tren berdasarkan indikator EMA. Strategi ini menilai arah tren dengan menghitung garis EMA dari periode tertentu dan mengikuti tren. Strategi ini short ketika harga melintasi garis EMA dan long ketika harga melintasi garis EMA.
Inti dari strategi ini adalah untuk menentukan tren menggunakan indikator EMA. EMA adalah rata-rata bergerak eksponensial yang memberikan lebih banyak bobot pada harga baru-baru ini dan merespons perubahan harga lebih cepat. Dengan menghitung harga rata-rata selama periode EMA, ia menghasilkan kurva yang halus. Ketika harga melintasi di atas garis EMA dari bawah, itu menandakan tren naik; ketika harga melintasi di bawah garis EMA dari atas, itu menandakan tren menurun.
Berdasarkan logika ini, strategi ini short saat harga pecah di atas EMA dan long ketika harga pecah di bawah EMA, melacak tren dengan mengikuti garis EMA. Secara khusus, strategi ini menghitung EMA 8 periode pada harga penutupan - shorting ketika close pecah di atas EMA dan long ketika close pecah di bawah EMA.
EMA meringankan fluktuasi harga, menyaring kebisingan pasar dan mengikuti tren jangka menengah hingga panjang.
Frekuensi perdagangan yang wajar. Dibandingkan dengan indikator jangka pendek, EMA memiliki frekuensi penyesuaian yang sedang, menghindari perdagangan yang berlebihan.
Strategi ini hanya mengandalkan satu indikator EMA namun mencapai tujuan mengikuti tren.
Kemampuan untuk diperluas. Strategi dapat ditingkatkan dengan mengoptimalkan parameter EMA atau menambahkan indikator lain.
Ketika harga berbalik dengan cepat, EMA membutuhkan waktu untuk menyesuaikan dan mungkin melewatkan titik masuk terbaik. Solusinya adalah menggabungkan dengan indikator yang mengidentifikasi titik tuning.
Peningkatan kerugian. EMA mengikuti tren dan tidak dapat menentukan titik tuning dengan akurat. Pembalikan dapat menyebabkan kerugian besar. Solusi adalah dengan menetapkan stop loss yang wajar.
Frekuensi terlalu tinggi atau terlalu rendah. Periode EMA yang berbeda menyebabkan frekuensi perdagangan yang berbeda. Terlalu pendek dapat melakukan over-trade, terlalu lama dapat kehilangan peluang. Solusinya adalah dengan menguji periode EMA yang berbeda untuk menemukan yang optimal.
Optimalkan parameter EMA untuk menemukan keseimbangan terbaik.
Tambahkan indikator lain untuk menentukan titik penyesuaian. Gabungkan dengan indikator seperti RSI untuk lebih mendeteksi pembalikan.
Mengoptimalkan strategi stop loss untuk menemukan tingkat stop loss terbaik melalui backtesting.
Mengoptimalkan pemilihan simbol, menyesuaikan periode EMA berdasarkan karakteristik simbol untuk mencapai hasil terbaik.
EMA adalah strategi pelacakan tren yang sangat khas berdasarkan indikator. Ini sederhana dan mudah diterapkan, cocok untuk pemula untuk belajar. Sementara itu, ia memiliki kemampuan untuk memperluas untuk lebih meningkatkan strategi dengan menambahkan indikator atau mengoptimalkan parameter. Dengan perbaikan berkelanjutan, itu bisa menjadi alat pelacakan tren yang sangat praktis.
/*backtest start: 2022-10-09 00:00:00 end: 2023-10-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "EMA Close Strategy", shorttitle = "EMA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) EmaSource = input(defval = close, title = "EMA Source") EmaLength = input(defval = 8, title = "EMA Period", minval = 1) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") stopLoss = input(30, title = "Stop loss percentage(0.1%)") UseStopLoss = input(true,"UseStopLoss") window() => time >= timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false EMA = ema(EmaSource,EmaLength) plot(EMA, title = "EMA", color = green, linewidth = 2, style = line, transp = 50) long = crossunder(EMA, close) short= crossover(EMA, close) if (long) strategy.entry("LongId", strategy.long, when=window()) if (short) strategy.entry("ShortId", strategy.short, when=window()) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)