
Chiến lược này kết hợp các công cụ phân tích kỹ thuật như đường trung bình di chuyển (MA), chỉ số tương đối mạnh (RSI) và đường sóng thực trung bình (ATR) để nắm bắt cơ hội xu hướng của thị trường. Chiến lược này sử dụng đường giao thoa hai chiều để xác định hướng xu hướng và sử dụng chỉ số RSI để lọc động lực cho tín hiệu giao dịch, đồng thời sử dụng ATR làm cơ sở dừng lỗ để kiểm soát rủi ro.
Cốt lõi của chiến lược này là sử dụng đường trung bình di chuyển của hai chu kỳ khác nhau (đường nhanh và đường chậm) để đánh giá xu hướng thị trường. Khi đường nhanh đi qua đường chậm, cho thấy xu hướng tăng, chiến lược sẽ tạo ra nhiều tín hiệu; ngược lại, khi đường nhanh đi qua đường chậm, cho thấy xu hướng giảm, chiến lược sẽ tạo ra tín hiệu dừng.
Để tăng độ tin cậy của tín hiệu giao dịch, chiến lược này đã giới thiệu chỉ số RSI làm bộ lọc động lực. Chỉ khi RSI cao hơn một ngưỡng nhất định (ví dụ như 50), mở nhiều vị trí được cho phép; Khi RSI thấp hơn ngưỡng đó, mở vị trí trống được cho phép.
Ngoài ra, chiến lược sử dụng ATR làm cơ sở dừng lỗ, động điều chỉnh điểm dừng lỗ để thích ứng với các tình trạng thị trường khác nhau dựa trên sự biến động của giá trong một khoảng thời gian gần đây. Cách dừng tự điều chỉnh này có thể dừng lại nhanh chóng khi xu hướng không rõ ràng, kiểm soát rút lui; cho phép lợi nhuận lớn hơn khi xu hướng mạnh mẽ, tăng lợi nhuận chiến lược.
Chiến lược này kiểm soát rủi ro tốt hơn thông qua sự kết hợp hữu cơ của theo dõi xu hướng và lọc động lực, đồng thời nắm bắt các cơ hội xu hướng của thị trường. Logic của chiến lược rõ ràng, dễ thực hiện và tối ưu hóa. Tuy nhiên, trong ứng dụng thực tế, vẫn cần chú ý đến rủi ro thị trường và rủi ro tham số xung đột, và tùy thuộc vào đặc điểm của thị trường và nhu cầu của riêng mình, chiến lược điều chỉnh và tối ưu hóa linh hoạt. Nói chung, đây là một chiến lược cân bằng giữa nắm bắt xu hướng và kiểm soát rủi ro, đáng để khám phá và thực hành thêm.
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend-Following Strategy with MACD and RSI Filter", overlay=true)
// Input variables
fastLength = input(12, title="Fast MA Length")
slowLength = input(26, title="Slow MA Length")
signalLength = input(9, title="Signal Line Length")
stopLossPct = input(1.0, title="Stop Loss %") / 100
rsiLength = input(14, title="RSI Length")
rsiThreshold = input(50, title="RSI Threshold")
// Moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
// RSI
rsi = ta.rsi(close, rsiLength)
// Entry conditions with RSI filter
bullishSignal = ta.crossover(macdLine, signalLine) and rsi > rsiThreshold
bearishSignal = ta.crossunder(macdLine, signalLine) and rsi < rsiThreshold
// Calculate stop loss levels
longStopLoss = ta.highest(close, 10)[1] * (1 - stopLossPct)
shortStopLoss = ta.lowest(close, 10)[1] * (1 + stopLossPct)
// Execute trades
strategy.entry("Long", strategy.long, when=bullishSignal)
strategy.entry("Short", strategy.short, when=bearishSignal)
strategy.exit("Exit Long", "Long", stop=longStopLoss)
strategy.exit("Exit Short", "Short", stop=shortStopLoss)
// Plotting signals
plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Bullish Signal")
plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Bearish Signal")
// Plot MACD
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")
// Plot RSI
hline(rsiThreshold, "RSI Threshold", color=color.gray)
plot(rsi, color=color.purple, title="RSI")