Esta estrategia utiliza la cruz dorada de la EMA para generar señales de negociación, es decir, se genera una señal de compra cuando la línea rápida de la EMA cruza por encima de la línea lenta de la EMA, y se genera una señal de venta cuando la línea rápida de la EMA cruza por debajo de la línea lenta de la EMA. Pertenece a una estrategia típica de seguimiento de tendencias. Al mismo tiempo, la estrategia utiliza el indicador ATR para establecer un stop loss dinámico para controlar los riesgos y garantizar las ganancias.
Soluciones:
La estrategia es relativamente simple y fácil de usar. Genera señales basadas en cruces EMA, sigue la tendencia y utiliza ATR para controlar los riesgos. Aunque puede haber algunas señales falsas, tiene fuertes capacidades para capturar las tendencias principales y los rendimientos son relativamente estables. Es adecuado como una estrategia comercial cuantitativa básica. También hay un gran potencial para mejoras a través de la optimización de parámetros y extensiones de funciones.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © byee322 /// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss //@version=5 strategy("EMA Strategy with ATR Stop Loss", overlay=true) // Define the EMA lengths as input parameters emaLength1 = input(13, "EMA Length 1") emaLength2 = input(48, "EMA Length 2") // Define the moving averages ema1 = ta.ema(close, emaLength1) ema2 = ta.ema(close, emaLength2) // Buy signal: EMA 1 crosses above EMA 2 buy = ta.crossover(ema1, ema2) // Sell signal: EMA 1 crosses below EMA 2 sell = ta.crossunder(ema1, ema2) // Define the state variable state = 0 state := buy ? 1 : sell ? -1 : nz(state[1]) // Change the color of the candles color = state == 1 ? color.green : state == -1 ? color.red : na // Plot the colored candles plotcandle(open, high, low, close, color=color) // Plot the signals on the chart with text labels plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy") plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell") // Calculate the ATR atrVal = ta.atr(14) // Calculate the stop loss level for buy stopLossBuy = buy ? close[1] - 1.5 * atrVal : na // Calculate the stop loss level for sell stopLossSell = sell ? close[1] + 1.5 * atrVal : na // Plot the stop loss level for buy plot(stopLossBuy, color=color.new(color.green, 50), linewidth=3) // Plot the stop loss level for sell plot(stopLossSell, color=color.new(color.red, 50), linewidth=3) if buy strategy.entry("Enter Long", strategy.long) else if sell strategy.entry("Enter Short", strategy.short)