Esta estratégia é um sistema de negociação de bandas de volatilidade construído sobre uma média móvel exponencial (EMA) de 300 períodos. Combinando a EMA e o desvio padrão, ele forma uma faixa de volatilidade dinâmica semelhante às bandas de Bollinger para capturar oportunidades de sobrecompra e sobrevenda no mercado. A estratégia gera sinais de negociação através de cruzes de preços com as bandas de volatilidade e define metas de lucro com base em ganhos percentuais.
O núcleo da estratégia estabelece um centro de preços usando a EMA de 300 períodos e constrói bandas de volatilidade usando desvio padrão.
A estratégia capta oportunidades de sobrecompra e sobrevenda de mercado através de bandas de volatilidade da EMA, com regras de negociação claras e operação simples. No entanto, o controle de risco precisa de atenção na aplicação prática, e é recomendável melhorar a estabilidade da estratégia por meio de indicadores adicionais e otimização de parâmetros.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estrategia de Compra/Venta en Bandas de EMA 300", overlay=true) // Definir el período de la EMA periodo = input.int(300, title="Período de la EMA") // Calcular la EMA de 300 ema_300 = ta.ema(close, periodo) // Definir el número de desviaciones estándar num_desviaciones = input.float(2, title="Número de Desviaciones Estándar") // Calcular la desviación estándar de la EMA de 300 desviacion = ta.stdev(close, periodo) // Calcular los límites superior e inferior de las bandas banda_superior = ema_300 + desviacion * num_desviaciones banda_inferior = ema_300 - desviacion * num_desviaciones // Definir el porcentaje para las señales de compra y venta porcentaje = input.float(0.98, title="Porcentaje de Salida de Banda") // Definir señales de compra y venta compra = ta.crossover(close, banda_inferior) venta = ta.crossunder(close, banda_superior) // Calcular el precio de salida para las señales de compra y venta precio_salida_compra = close * (1 + porcentaje / 100) precio_salida_venta = close * (1 - porcentaje / 100) // Plotear las bandas plot(banda_superior, color=color.blue, linewidth=2, title="Banda Superior") plot(banda_inferior, color=color.red, linewidth=2, title="Banda Inferior") // Plotear las señales de compra y venta plotshape(compra, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Compra") plotshape(venta, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Venta") // Simular operaciones if (compra) strategy.entry("Compra", strategy.long) if (venta) strategy.entry("Venta", strategy.short) // Definir reglas de salida if (strategy.position_size > 0) strategy.exit("Exit Long", from_entry="Compra", limit=precio_salida_compra) if (strategy.position_size < 0) strategy.exit("Exit Short", from_entry="Venta", limit=precio_salida_venta) // Crear alertas alertcondition(compra, title="Alerta de Compra", message="¡Señal de Compra Detectada!") alertcondition(venta, title="Alerta de Venta", message="¡Señal de Venta Detectada!") // Mostrar alertas en el gráfico if (compra) label.new(bar_index, low, text="Compra", style=label.style_label_up, color=color.green, textcolor=color.white) if (venta) label.new(bar_index, high, text="Venta", style=label.style_label_down, color=color.red, textcolor=color.white)