Chiến lược này là một hệ thống giao dịch dải biến động được xây dựng dựa trên trung bình chuyển động biểu số (EMA) 300 giai đoạn. Bằng cách kết hợp EMA và độ lệch chuẩn, nó tạo thành một phạm vi biến động năng động giống như Dải Bollinger để nắm bắt các cơ hội mua quá nhiều và bán quá nhiều của thị trường. Chiến lược tạo ra các tín hiệu giao dịch thông qua đường chéo giá với các dải biến động và đặt mục tiêu lợi nhuận dựa trên tỷ lệ phần trăm tăng.
Cốt lõi của chiến lược là thiết lập một trung tâm giá bằng cách sử dụng EMA 300 giai đoạn và xây dựng các dải biến động bằng cách sử dụng độ lệch chuẩn. Nó tạo ra các tín hiệu dài khi giá phá vỡ dưới dải dưới (đã bán quá mức) và các tín hiệu ngắn khi giá phá vỡ trên dải trên (đã mua quá mức).
Chiến lược này nắm bắt các cơ hội mua quá nhiều và bán quá nhiều trên thị trường thông qua các dải biến động EMA, với các quy tắc giao dịch rõ ràng và hoạt động đơn giản. Tuy nhiên, kiểm soát rủi ro cần chú ý trong ứng dụng thực tế, và khuyến cáo tăng cường tính ổn định của chiến lược thông qua các chỉ số bổ sung và tối ưu hóa tham số.
/*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)