Ini adalah strategi perdagangan yang didasarkan pada persilangan rata-rata bergerak eksponensial (EMA) 15 periode dan 50 periode. Strategi ini menerapkan level stop-loss dan take-profit yang cerdas untuk mengoptimalkan kontrol risiko-imbalan. Ini tidak hanya menangkap sinyal pembalikan tren tetapi juga secara otomatis menyesuaikan parameter perdagangan berdasarkan volatilitas pasar, sehingga meningkatkan stabilitas strategi dan profitabilitas.
Logika inti didasarkan pada sinyal silang antara EMA cepat (15 periode) dan EMA lambat (50 periode). Sinyal panjang dihasilkan ketika garis cepat melintasi di atas garis lambat, dan sinyal pendek ketika garis cepat melintasi di bawah. Untuk pengoptimalan manajemen risiko, strategi ini menggunakan metode pengaturan stop-loss dinamis, menggunakan harga pembukaan terendah dari 2 lilin sebelumnya sebagai stop-loss panjang dan harga pembukaan tertinggi sebagai stop-loss pendek. Target keuntungan ditetapkan pada dua kali risiko, memastikan rasio risiko-balasan yang menguntungkan. Strategi ini menggunakan 30% dari ekuitas akun untuk perdagangan, yang membantu mengendalikan paparan risiko.
Ini adalah strategi EMA yang terstruktur dengan baik dengan logika yang jelas. Dengan menggabungkan metode analisis teknis klasik dengan teknik manajemen risiko modern, strategi mencapai karakteristik risiko-pahala yang menguntungkan. Meskipun ada ruang untuk optimasi, kerangka kerja dasar menunjukkan kepraktisan dan ekstensibilitas yang baik. Melalui arah optimasi yang disarankan, kinerja strategi dapat ditingkatkan lebih lanjut.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30) // Input for EMAs ema_short_length = input(15, title="Short EMA Length") ema_long_length = input(50, title="Long EMA Length") // Calculate EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) // Plot EMAs plot(ema_short, color=color.blue, title="15 EMA") plot(ema_long, color=color.red, title="50 EMA") // Entry Conditions (Any EMA Cross) cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long) // Determine Trade Direction is_long = ta.crossover(ema_short, ema_long) is_short = ta.crossunder(ema_short, ema_long) // Stop Loss and Take Profit long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles long_take_profit = close + 2 * (close - long_stop_loss) short_take_profit = close - 2 * (short_stop_loss - close) // Execute Trades if (cross_condition) if (is_long) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit) else if (is_short) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit) // Plot Stop Loss and Take Profit Levels plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2) plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2) plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2) plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)