이 전략은 300주기 기하급수적 이동 평균 (EMA) 에 기반한 변동성 대역 거래 시스템이다. EMA와 표준편차를 결합함으로써 시장의 과잉 구매 및 과잉 판매 기회를 포착하기 위해 볼링거 대역과 같은 동적 변동성 대역을 형성한다. 이 전략은 변동성 대역과 가격 교차를 통해 거래 신호를 생성하고 비율 이득에 기반한 수익 목표를 설정한다.
전략의 핵심은 300주기 EMA를 사용하여 가격 중심부를 설정하고 표준편차를 사용하여 변동성 대역을 구성합니다. 가격이 하위 대역 (oversold) 아래로 넘어갈 때 긴 신호를 생성하고 가격이 상위 대역 (overbought) 위로 넘어갈 때 짧은 신호를 생성합니다. 구체적으로:
이 전략은 EMA 변동성 대역을 통해 시장 과반 구매 및 과반 판매 기회를 포착하며 명확한 거래 규칙과 간단한 운영을 제공합니다. 그러나 위험 통제는 실질적인 응용에 주의가 필요하며 추가 지표 및 매개 변수 최적화를 통해 전략 안정성을 강화하는 것이 좋습니다. 전반적인 설계는 합리적이며 실용적 가치와 최적화 잠재력이 좋습니다.
/*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)