
Chiến lược xoay vòng động lực là một chiến lược giao dịch định lượng dựa trên chỉ số tương đối mạnh (RSI). Chiến lược này gửi tín hiệu mua và bán thông qua các chỉ số RSI chéo, để thực hiện lợi nhuận. Khi RSI vượt qua ngưỡng thiết lập của người dùng, nó tạo ra tín hiệu mua; Khi RSI vượt qua ngưỡng, nó tạo ra tín hiệu bán, thực hiện lợi nhuận dần dần.
Chiến lược này dựa trên các chỉ số RSI được tùy chỉnh. Chỉ số RSI phản ánh động lực thị trường của cổ phiếu và tình trạng mua bán quá mức. Chiến lược này đầu tiên tính toán giá trị RSI, sau đó giao dịch dựa trên RSI và thiết lập mối quan hệ mua và bán threshold.
Cụ thể, nếu RSI vượt qua ngưỡng mua đã đặt ((đặc định 60), sẽ tạo ra tín hiệu mua. Chiến lược tại thời điểm này sẽ mở vị trí mua cổ phiếu. Nếu sau đó RSI vượt qua ngưỡng bán đã đặt ((đặc định 80), sẽ tạo ra tín hiệu bán.
Chiến lược được viết bằng ngôn ngữ Pine Script, cấu trúc mã rõ ràng. Sử dụng cấu trúc phán đoán điều kiện hiện đại để thực hiện logic nhập và thoát của chiến lược. Đồng thời vẽ đường cong chỉ số RSI và đánh dấu tín hiệu mua và bán.
Đối với các rủi ro trên, chúng ta có thể thiết lập đường dừng lỗ, tối ưu hóa các tham số RSI, kết hợp với các chỉ số khác để lọc các phương pháp cải tiến.
Chúng ta có thể tiếp tục tối ưu hóa chiến lược này bằng cách:
Chiến lược này là một ví dụ cơ bản cho thấy cách sử dụng chỉ số RSI để định lượng giao dịch. Chúng ta có thể mở rộng trên cơ sở này, kết hợp nhiều chỉ số và phương tiện kiểm soát rủi ro để xây dựng hệ thống giao dịch. Trong thực tế, các tham số cần được kiểm tra tối ưu hóa nhiều lần và điều chỉnh phù hợp với sở thích rủi ro cá nhân.
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI Cross 60/80 Strategy", overlay=true)
// Input for RSI period
rsiPeriod = input.int(14, title="RSI Period", minval=1)
// Calculate RSI
rsiValue = ta.rsi(close, rsiPeriod)
// Input for RSI thresholds
rsiBuyThreshold = input(60, title="RSI Threshold for Buy")
rsiSellThreshold = input(80, title="RSI Threshold for Sell")
// Conditions for Buy and Sell signals
buySignal = ta.crossover(rsiValue, rsiBuyThreshold)
sellSignal = ta.crossunder(rsiValue, rsiSellThreshold)
// Plot RSI on the chart
plot(rsiValue, title="RSI", color=color.blue)
// Strategy entry and exit
if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.close("Buy")
// Plot Buy and Sell signals on the chart
plotshape(series=buySignal, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellSignal, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)