Đây là một chiến lược giao dịch định lượng tiên tiến kết hợp chỉ số Supertrend với phân tích khối lượng. Chiến lược xác định các điểm đảo ngược xu hướng tiềm năng bằng cách theo dõi động sự chéo giá với đường Supertrend và hành vi khối lượng bất thường. Nó sử dụng các thiết lập dừng lỗ và lấy lợi nhuận năng động dựa trên phạm vi trung bình thực (ATR), đảm bảo cả tính linh hoạt giao dịch và kiểm soát rủi ro đáng tin cậy.
Logic cốt lõi của chiến lược dựa trên các yếu tố chính sau: 1. Sử dụng chỉ số Supertrend làm công cụ xác định xu hướng chính, được tính dựa trên ATR để thích nghi với biến động thị trường năng động. 2. Đặt khối lượng trung bình động 20 giai đoạn làm điểm chuẩn, với ngưỡng 1.5x để phát hiện sự bất thường khối lượng. Khởi động tín hiệu giao dịch khi giá vượt qua đường siêu xu hướng và các điều kiện khối lượng được đáp ứng. Thực hiện các thiết lập dừng lỗ động (1.5x ATR) và lấy lợi nhuận (3x ATR) để có tỷ lệ rủi ro-lợi nhuận tối ưu.
Chiến lược này xây dựng một hệ thống giao dịch đáng tin cậy và thích nghi bằng cách kết hợp chỉ số Supertrend với phân tích khối lượng.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend with Volume Strategy", overlay=true) // Input parameters for Supertrend atrLength = input(10, title="ATR Length") multiplier = input(3.0, title="Multiplier") // Calculate Supertrend [supertrend, direction] = ta.supertrend(multiplier, atrLength) // Plot Supertrend plot(supertrend, color=direction == 1 ? color.green : color.red, title="Supertrend") // Volume condition volumeThreshold = input(1.5, title="Volume Threshold (x Average)") avgVolume = ta.sma(volume, 20) // 20-period average volume highVolume = volume > (avgVolume * volumeThreshold) // Define entry conditions longCondition = ta.crossover(close, supertrend) and highVolume shortCondition = ta.crossunder(close, supertrend) and highVolume // Execute trades if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Optional: Add stop loss and take profit stopLoss = input(1.5, title="Stop Loss (in ATRs)") takeProfit = input(3.0, title="Take Profit (in ATRs)") if (longCondition) strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=close + (takeProfit * ta.atr(atrLength)), stop=close - (stopLoss * ta.atr(atrLength))) if (shortCondition) strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=close - (takeProfit * ta.atr(atrLength)), stop=close + (stopLoss * ta.atr(atrLength)))