Strategi ini adalah sistem perdagangan yang didasarkan pada beberapa sinyal crossover Exponential Moving Average (EMA), menggabungkan EMA dari periode yang berbeda dengan mekanisme stop-loss dinamis berbasis ATR. Strategi ini menggunakan EMA dari 10, 39, dan 73 periode sebagai indikator sinyal utama, sementara menggabungkan EMA jangka waktu 143 periode yang lebih tinggi sebagai filter tren, dan menerapkan target stop-loss dan take-profit dinamis menggunakan indikator ATR.
Logika inti didasarkan pada beberapa persilangan EMA dan konfirmasi tren. Sinyal panjang dihasilkan ketika EMA jangka pendek (10 periode) melintasi di atas EMA jangka menengah (39 periode), dan harga berada di atas EMA jangka panjang (73 periode) dan EMA jangka waktu yang lebih tinggi (143 periode). Sebaliknya, sinyal pendek dihasilkan ketika EMA jangka pendek melintasi di bawah EMA jangka menengah, dan harga berada di bawah kedua EMA jangka panjang. Strategi menerapkan rasio risiko-manfaat 1:2 menggunakan 1x ATR untuk target stop-loss dan 2x ATR untuk target take-profit.
Strategi ini membangun sistem perdagangan yang menggabungkan mengikuti tren dan manajemen risiko melalui beberapa penyeberangan EMA dan berhenti dinamis berbasis ATR. Kekuatannya utama terletak pada mekanisme konfirmasi beberapa kerangka waktu dan manajemen posisi dinamis, sambil memperhatikan berbagai risiko pasar dan lag. Stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut melalui konfirmasi volume, penyaringan kekuatan tren, dan optimalisasi lainnya. Dalam aplikasi praktis, parameter harus disesuaikan sesuai dengan lingkungan pasar yang berbeda dan karakteristik instrumen perdagangan.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-28 00:00:00 period: 2d basePeriod: 2d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced EMA Crossover Strategy", overlay=true) // Define the EMA lengths ema_short_length = 10 ema_long_length = 39 ema_filter_length = 73 ema_higher_tf_length = 143 // Calculate the EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) ema_filter = ta.ema(close, ema_filter_length) ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length)) // Calculate ATR for volatility-based stop loss and take profit atr_length = 14 atr = ta.atr(atr_length) // Plot the EMAs plot(ema_short, title="EMA 10", color=color.blue) plot(ema_long, title="EMA 35", color=color.red) plot(ema_filter, title="EMA 75", color=color.orange) plot(ema_higher_tf, title="EMA Higher TF", color=color.purple) // EMA crossover conditions with EMA 75 and higher timeframe EMA filter longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf // Execute long trade with dynamic stop loss and take profit if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr) // Execute short trade with dynamic stop loss and take profit if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr) // Plot signals on the chart plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")