Ini adalah strategi dagangan berdasarkan persilangan purata bergerak eksponen (EMA) 15 tempoh dan 50 tempoh. Strategi ini melaksanakan tahap stop-loss dan mengambil keuntungan yang pintar untuk mengoptimumkan kawalan risiko-balasan. Ia bukan sahaja menangkap isyarat pembalikan trend tetapi juga menyesuaikan parameter dagangan secara automatik berdasarkan turun naik pasaran, dengan itu meningkatkan kestabilan strategi dan keuntungan.
Logik terasnya adalah berdasarkan isyarat silang antara EMA cepat (15 tempoh) dan EMA perlahan (50 tempoh). Isyarat panjang dihasilkan apabila garis cepat melintasi di atas garis perlahan, dan isyarat pendek apabila garis pantas melintasi di bawah. Untuk pengoptimuman pengurusan risiko, strategi menggunakan kaedah penetapan stop-loss dinamik, menggunakan harga pembukaan terendah dari 2 lilin sebelumnya sebagai stop-loss panjang dan harga pembukaan tertinggi sebagai stop-loss pendek. Sasaran keuntungan ditetapkan pada dua kali risiko, memastikan nisbah risiko-balasan yang baik. Strategi menggunakan 30% ekuiti akaun untuk perdagangan, yang membantu mengawal pendedahan risiko.
Ini adalah strategi silang EMA yang terstruktur dengan baik dengan logik yang jelas. Dengan menggabungkan kaedah analisis teknikal klasik dengan teknik pengurusan risiko moden, strategi mencapai ciri-ciri risiko-balasan yang baik. Walaupun terdapat ruang untuk pengoptimuman, kerangka asas menunjukkan kepraktisan dan keluasan yang baik. Melalui arah pengoptimuman yang dicadangkan, prestasi strategi dapat ditingkatkan lagi.
/*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)