Esta estrategia es un sistema de negociación basado en múltiples promedios móviles exponenciales (EMA). Utilizando tres EMA con diferentes períodos (10, 30, 50), combinados con cruces de precios y análisis de la dirección de la tendencia, construye un sistema completo de señales de compra y venta.
La estrategia emplea un mecanismo de juicio jerárquico para determinar las señales comerciales: 1. Capa de determinación de tendencia: utiliza las posiciones relativas de tres EMA (10/30/50) para juzgar la dirección de la tendencia. Se identifica una tendencia alcista cuando EMA10 > EMA30 > EMA50; una tendencia bajista cuando EMA50 > EMA30 > EMA10. 2. Capa de activación de señales: una vez que se establece una tendencia, las señales de negociación se activan por cruces de precios con la EMA30. 3. Capa de gestión de posiciones: cuando el EMA30 cruza el EMA50 en la dirección opuesta, desencadena las señales de cierre de posición correspondientes, proporcionando un mecanismo de salida sistemático.
Esta es una tendencia bien diseñada siguiendo una estrategia con lógica clara. La combinación de múltiples EMAs asegura tanto la estabilidad de la estrategia como señales comerciales claras. Si bien hay algunos riesgos de retraso inherentes, la estrategia demuestra un buen valor práctico a través de medidas razonables de optimización y control de riesgos. Es particularmente adecuada para los operadores que buscan retornos estables con riesgo controlado.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © banyat6913 //@version=5 strategy("EMA Trend Strategy", overlay=true) // Input Parameters ema_short_length = input.int(10, title="EMA Short Length", minval=1) ema_mid_length = input.int(30, title="EMA Mid Length", minval=1) ema_long_length = input.int(50, title="EMA Long Length", minval=1) // Calculate EMA ema_short = ta.ema(close, ema_short_length) ema_mid = ta.ema(close, ema_mid_length) ema_long = ta.ema(close, ema_long_length) // **TREND UP** // 1. EMA 10 > EMA 30 > EMA 50 uptrend_condition = ema_short > ema_mid and ema_mid > ema_long // 2. Bullish Candle Crossing Up EMA 30 bullish_candle = close > open cross_up_ema_mid = ta.crossover(close, ema_mid) // 3. If EMA 30 crosses down EMA 50 -> Close Buy Order ema_30_cross_down_50 = ta.crossunder(ema_mid, ema_long) // Buy Signal buy_signal = uptrend_condition and cross_up_ema_mid // Sell Signal for closing Buy Order close_buy_signal = ema_30_cross_down_50 // **TREND DOWN** // 1. EMA 50 > EMA 30 > EMA 10 downtrend_condition = ema_long > ema_mid and ema_mid > ema_short // 2. Bearish Candle Crossing Down EMA 30 bearish_candle = close < open cross_down_ema_mid = ta.crossunder(close, ema_mid) // 3. If EMA 30 crosses up EMA 50 -> Close Sell Order ema_30_cross_up_50 = ta.crossover(ema_mid, ema_long) // Sell Signal sell_signal = downtrend_condition and cross_down_ema_mid // Buy Signal for closing Sell Order close_sell_signal = ema_30_cross_up_50 // Backtesting Logic if (buy_signal) strategy.entry("Buy", strategy.long) if (close_buy_signal) strategy.close("Buy") if (sell_signal) strategy.entry("Sell", strategy.short) if (close_sell_signal) strategy.close("Sell") // Plot EMA Lines plot(ema_short, color=color.blue, title="EMA 10") plot(ema_mid, color=color.orange, title="EMA 30") plot(ema_long, color=color.green, title="EMA 50") // Plot Buy and Sell Signals on Chart plotshape(buy_signal, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), text="BUY", title="Buy Signal") plotshape(close_buy_signal, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), text="CLOSE BUY", title="Close Buy Signal") plotshape(sell_signal, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), text="SELL", title="Sell Signal") plotshape(close_sell_signal, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), text="CLOSE SELL", title="Close Sell Signal")