この戦略は,300期指数移動平均値 (EMA) に構築された波動性帯の取引システムである. EMAと標準偏差を組み合わせることで,市場過剰購入および過剰販売の機会を把握するためにボリンジャー帯のような動的波動性範囲を形成する.この戦略は,波動性帯との価格交差を通じて取引信号を生成し,パーセントの利益に基づいて利益目標を設定する.
戦略の核心は300期EMAを使用して価格センターを確立し,標準偏差を使用して波動性帯を構築する.価格が下帯を下回ると (oversold) 長い信号,価格が上帯を下回ると (oversold) ショート信号を生成する.具体的には:
この戦略は,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)