
Trong lĩnh vực giao dịch định lượng, chiến lược theo dõi xu hướng luôn là một trong những phương pháp giao dịch được ưa chuộng nhất. Bài viết này sẽ giới thiệu một chiến lược theo dõi xu hướng dựa trên hệ thống hai đường cong, chiến lược này giúp tăng hiệu quả giao dịch bằng cách tối ưu hóa tỷ lệ lợi nhuận rủi ro.
Chiến lược này sử dụng đường trung bình di chuyển của chỉ số 20 và 200 ngày (EMA) làm chỉ số chính, kết hợp với tỷ lệ lợi nhuận rủi ro 3: 1 để đưa ra quyết định giao dịch. Hệ thống sẽ phát ra tín hiệu mua khi giá vượt qua đường trung bình 20 ngày và đường trung bình 20 ngày nằm trên đường trung bình 200 ngày. Mỗi giao dịch được thiết lập mức dừng lỗ cố định (-0.5%) và lợi nhuận (-1.5%) để đảm bảo rủi ro có thể kiểm soát được.
Logic cốt lõi của chiến lược bao gồm các yếu tố chính sau:
Đây là một chiến lược theo dõi xu hướng có cấu trúc và logic rõ ràng. Bằng cách kết hợp hệ thống hai đường thẳng và tỷ lệ lợi nhuận rủi ro cố định, chiến lược này kiểm soát rủi ro tốt trong khi đảm bảo lợi nhuận. Mặc dù vẫn còn một số nơi cần được tối ưu hóa, nhưng nói chung đây là một hệ thống giao dịch đáng để nghiên cứu và cải thiện hơn nữa.
/*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)