
Đây là một chiến lược giao dịch định lượng dựa trên các chỉ số RSI kết hợp với các chỉ số giao dịch song song, đồng thời tích hợp các cơ chế dừng lỗ động. Chiến lược sử dụng chỉ số chuyển động trung bình 9 chu kỳ và 21 chu kỳ (EMA) làm chỉ số định hướng chính, kết hợp với chỉ số tương đối mạnh (RSI) làm điều kiện lọc, để quản lý rủi ro và lợi nhuận bằng cách thiết lập điểm dừng lỗ động.
Chiến lược sử dụng giao dịch chéo giữa EMA nhanh (trong chu kỳ 9) và EMA chậm (trong chu kỳ 21) để nắm bắt sự thay đổi xu hướng. Khi đường nhanh đi lên vượt qua đường chậm và RSI thấp hơn 70, mở vị trí nhiều đầu; Khi đường nhanh đi xuống vượt qua đường chậm và RSI cao hơn 30, mở vị trí trống. Mỗi giao dịch được thiết lập với mức dừng 1.5% và 1% dừng lỗ.
Đây là một chiến lược giao dịch định lượng có cấu trúc rõ ràng, logic nghiêm ngặt. Có một số hạn chế, nhưng hướng tối ưu hóa được đề xuất có thể nâng cao hơn nữa sự ổn định và khả năng sinh lợi của chiến lược. Chiến lược phù hợp với khung hợp tác cơ bản, được tối ưu hóa theo mục tiêu tùy thuộc vào các loại giao dịch và tình hình thị trường cụ thể.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Estrategia BTC/USDT - Ajustada", overlay=true)
// Definición de las EMAs
emaRapida = ta.ema(close, 9)
emaLenta = ta.ema(close, 21)
// Cálculo del RSI
rsi = ta.rsi(close, 14)
// Condiciones de compra y venta
longCondition = ta.crossover(emaRapida, emaLenta) and rsi < 70
shortCondition = ta.crossunder(emaRapida, emaLenta) and rsi > 30
// Ajustes de Take Profit y Stop Loss
takeProfitLong = close * 1.015 // Take Profit del 1.5% para Long
stopLossLong = close * 0.99 // Stop Loss del 1% para Long
takeProfitShort = close * 0.985 // Take Profit del 1.5% para Short
stopLossShort = close * 1.01 // Stop Loss del 1% para Short
// Ejecución de la estrategia
if (longCondition)
strategy.entry("Compra", strategy.long)
strategy.exit("Take Profit Long", "Compra", limit=takeProfitLong, stop=stopLossLong)
if (shortCondition)
strategy.entry("Venta", strategy.short)
strategy.exit("Take Profit Short", "Venta", limit=takeProfitShort, stop=stopLossShort)
// Visualización de las EMAs
plot(emaRapida, color=color.green, linewidth=2, title="EMA Rápida")
plot(emaLenta, color=color.red, linewidth=2, title="EMA Lenta")