Trong lĩnh vực giao dịch định lượng, các chiến lược theo xu hướng luôn là một trong những phương pháp giao dịch phổ biến nhất.
Chiến lược này sử dụng đường trung bình động theo hàm số (EMA) 20 ngày và 200 ngày làm chỉ số chính, kết hợp với tỷ lệ rủi ro-lợi nhuận 3:1 cho các quyết định giao dịch. Các tín hiệu mua được tạo ra khi giá vượt qua đường EMA 20 ngày và đường EMA 20 ngày vượt quá đường EMA 200 ngày. Mỗi giao dịch có mức dừng lỗ (-0,5%) và mức lợi nhuận (1,5%) cố định để đảm bảo rủi ro được kiểm soát.
Logic cốt lõi bao gồm một số yếu tố chính:
Đây là một xu hướng được cấu trúc tốt theo chiến lược với logic rõ ràng. Bằng cách kết hợp một hệ thống trung bình động kép với tỷ lệ rủi ro-lợi nhuận cố định, chiến lược đạt được lợi nhuận tốt trong khi duy trì kiểm soát rủi ro. Mặc dù có các lĩnh vực tối ưu hóa, nhưng nói chung nó là một hệ thống giao dịch xứng đáng nghiên cứu và cải tiến thêm.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estrategia de Compra con Ratio 3:1", overlay=true) // Parámetros de la temporalidad diaria y las EMAs ema20 = ta.ema(close, 20) ema200 = ta.ema(close, 200) // Condiciones para la entrada en largo cierre_por_encima_ema20 = close > ema20 ema20_mayor_ema200 = ema20 > ema200 // Variable para registrar si ya se realizó una compra var bool compra_realizada = false // Condición para registrar una compra: primera vez que cierra por encima de EMA 20 con EMA 20 > EMA 200 if (cierre_por_encima_ema20 and ema20_mayor_ema200 and not compra_realizada) // Abrir una operación de compra strategy.entry("Compra", strategy.long) compra_realizada := true // Registrar que se realizó una compra // Definir los niveles de stop loss y take profit basados en el ratio 3:1 stop_loss = strategy.position_avg_price * 0.995 // -0.50% (rendimiento) take_profit = strategy.position_avg_price * 1.015 // +1.50% (3:1 ratio) // Establecer el stop loss y take profit strategy.exit("Take Profit / Stop Loss", from_entry="Compra", stop=stop_loss, limit=take_profit) // Condición para resetear la compra: cuando el precio cierra por debajo de la EMA de 20 if (close < ema20) compra_realizada := false // Permitir una nueva operación // Ploteo de las EMAs plot(ema20, title="EMA 20", color=color.blue, linewidth=2) plot(ema200, title="EMA 200", color=color.red, linewidth=2) // Colorear el fondo cuando el precio está por encima de ambas EMAs bgcolor(cierre_por_encima_ema20 and ema20_mayor_ema200 ? color.new(color.green, 80) : na)