This strategy uses the crossover of two Exponential Moving Averages (EMAs) as the main trading signal, combined with the Relative Strength Index (RSI), Moving Average Convergence Divergence (MACD), and Average True Range (ATR) as auxiliary indicators to improve the reliability of trading signals. When the fast EMA crosses above the slow EMA, RSI is below 70, MACD line is above the signal line, and ATR value increases by more than 10% compared to the previous period, a long signal is generated; conversely, when the fast EMA crosses below the slow EMA, RSI is above 30, MACD line is below the signal line, and ATR value increases by more than 10% compared to the previous period, a short signal is generated. The strategy also sets fixed-point stop loss and take profit to control risk.
This strategy generates relatively reliable trading signals by combining multiple technical indicators such as EMA, RSI, MACD, and ATR, while controlling risk by setting fixed-point stop loss and take profit. Although the strategy still has some shortcomings, it can be improved through further optimization, such as introducing more indicators, optimizing stop loss and take profit, and combining fundamental analysis. Overall, the strategy is clear in its logic, easy to understand and implement, and suitable for beginners to learn and use.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Enhanced EMA Crossover Strategy", overlay=true) // Indicators ema_fast = ema(close, 8) ema_slow = ema(close, 14) rsi = rsi(close, 14) // Correcting the MACD variable definitions [macd_line, signal_line, _] = macd(close, 12, 26, 9) atr_value = atr(14) // Entry conditions with additional filters long_condition = crossover(ema_fast, ema_slow) and rsi < 70 and (macd_line > signal_line) and atr_value > atr_value[1] * 1.1 short_condition = crossunder(ema_fast, ema_slow) and rsi > 30 and (macd_line < signal_line) and atr_value > atr_value[1] * 1.1 // Adding debug information plotshape(series=long_condition, color=color.green, location=location.belowbar, style=shape.xcross, title="Long Signal") plotshape(series=short_condition, color=color.red, location=location.abovebar, style=shape.xcross, title="Short Signal") // Risk management based on a fixed number of points stop_loss_points = 100 take_profit_points = 200 // Order execution if (long_condition) strategy.entry("Long", strategy.long, comment="Long Entry") strategy.exit("Exit Long", "Long", stop=close - stop_loss_points, limit=close + take_profit_points) if (short_condition) strategy.entry("Short", strategy.short, comment="Short Entry") strategy.exit("Exit Short", "Short", stop=close + stop_loss_points, limit=close - take_profit_points) // Plotting EMAs for reference plot(ema_fast, color=color.blue, title="Fast EMA") plot(ema_slow, color=color.orange, title="Slow EMA")template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6