
Ini adalah strategi perdagangan yang berasaskan 15 kitaran dan 50 kitaran indeks bergerak rata-rata ((EMA) bersilang. Strategi ini mencapai kawalan optimum terhadap nisbah risiko dan keuntungan melalui tetapan berhenti dan keuntungan yang pintar. Strategi ini bukan sahaja dapat menangkap isyarat pembalikan trend, tetapi juga dapat menyesuaikan parameter perdagangan secara automatik mengikut turun naik pasaran, sehingga meningkatkan kestabilan dan keuntungan strategi.
Logik teras strategi adalah berdasarkan tanda silang EMA (15 kitaran) dan EMA (50 kitaran) yang cepat. Apabila laluan cepat melalui laluan lambat, sistem menghasilkan banyak isyarat; apabila laluan perlahan melalui laluan cepat, sistem menghasilkan isyarat kosong. Untuk mengoptimumkan pengurusan risiko, strategi menggunakan kaedah penyetempatan kerugian dinamik, iaitu, harga pembukaan terendah 2 K yang sebelumnya sebagai titik berhenti berganda, harga pembukaan tertinggi sebagai titik berhenti kosong.
Ini adalah strategi silang linear yang lengkap dan logik. Dengan menggabungkan kaedah analisis teknikal klasik dengan teknologi pengurusan risiko moden, strategi ini mencapai ciri-ciri keuntungan risiko yang lebih baik. Walaupun terdapat ruang untuk pengoptimuman, kerangka asas strategi ini mempunyai kegunaan dan skalabiliti 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)