
Ini adalah strategi perdagangan yang didasarkan pada 15 siklus dan 50 siklus indeks moving average (EMA) silang. Strategi ini memungkinkan pengendalian optimal dari risiko-keuntungan rasio melalui pengaturan cerdas dari stop loss dan gain. Strategi ini tidak hanya dapat menangkap sinyal reversal tren, tetapi juga dapat secara otomatis menyesuaikan parameter perdagangan sesuai dengan fluktuasi pasar, sehingga meningkatkan stabilitas dan profitabilitas strategi.
Logika inti dari strategi ini didasarkan pada sinyal silang dari EMA cepat (siklus 15) dan EMA lambat (siklus 50). Ketika jalur cepat melewati jalur lambat, sistem menghasilkan sinyal multitasking; Ketika jalur lambat melewati jalur cepat, sistem menghasilkan sinyal stop-loss. Untuk mengoptimalkan manajemen risiko, strategi ini menggunakan metode pengaturan stop loss dinamis, yaitu harga pembukaan terendah dari 2 jalur K sebelumnya sebagai stop loss multitasking, harga pembukaan tertinggi sebagai stop loss kosong.
Ini adalah strategi yang terstruktur dengan struktur yang utuh dan logika yang jelas. Dengan menggabungkan metode analisis teknis klasik dengan teknologi manajemen risiko modern, strategi ini mencapai karakteristik keuntungan risiko yang lebih baik. Meskipun ada ruang untuk optimasi, kerangka dasar strategi ini memiliki kepraktisan dan skalabilitas yang baik.
/*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)