
Chiến lược giao dịch đảo ngược RSI của Connor kết hợp chỉ số tương đối mạnh (RSI) và đường trung bình để tìm kiếm cơ hội giao dịch đảo ngược có xác suất cao. Chiến lược này đánh giá và thiết lập vị trí khi xu hướng ngắn hạn và dài hạn bị đảo ngược.
Chiến lược này sử dụng cả RSI và đường hai chiều để xác định xu hướng thị trường. Đầu tiên, tính RSI 2 chu kỳ để xác định xu hướng ngắn hạn. Tiếp theo, tính trung bình di chuyển 200 chu kỳ để xác định hướng xu hướng dài hạn.
Tín hiệu đầu vào: RSI nhỏ hơn khu vực bán tháo (đặc biệt là 5) và giá ngắn hạn cao hơn giá dài hạn. RSI lớn hơn khu vực mua tháo (đặc biệt là 95) và giá ngắn hạn thấp hơn giá dài hạn.
Tín hiệu ra: 5 chu kỳ đường trung bình ngắn hạn ra tín hiệu ngược lại với tín hiệu vào; hoặc dừng lỗ (tín hiệu mất mát mặc định 3%)
Chiến lược này kết hợp nhiều chỉ số để xác định cấu trúc thị trường, giúp tăng độ chính xác của giao dịch. Các ưu điểm cụ thể như sau:
Chiến lược này cũng có một số rủi ro:
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Chiến lược giao dịch đảo ngược RSI hai chiều bằng cách lọc tín hiệu đảo ngược RSI và hai chiều bằng cách nắm bắt sự đảo ngược của thị trường ở vị trí có xác suất cao. Chiến lược này sử dụng nhiều phán đoán chỉ số, có thể giúp tăng hiệu quả sự ổn định của chiến lược giao dịch. Tiếp theo, bằng cách tối ưu hóa tham số và cải thiện kiểm soát rủi ro, hy vọng sẽ mở rộng hơn nữa lợi thế của chiến lược và đạt được hiệu quả giao dịch cao hơn.
/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Connors RSI-MA Strategy", overlay=true)
// Strategy parameters
rsiLength = input(2, title="RSI Length")
maLength = input(200, title="MA Length")
exitMaLength = input(5, title="Exit MA Length")
overboughtThreshold = input(95, title="Overbought Threshold")
oversoldThreshold = input(5, title="Oversold Threshold")
stopLossPercentage = input(3, title="Stop Loss Percentage")
// 2-period RSI
rsi2 = ta.rsi(close, rsiLength)
// 200-period MA
ma200 = ta.sma(close, maLength)
// 5-period MA for exit signals
ma5_exit = ta.sma(close, exitMaLength)
// Positive trend condition
positiveTrend = close > ma200
// Negative trend condition
negativeTrend = close < ma200
// Buy and sell conditions
buyCondition = rsi2 < oversoldThreshold and positiveTrend
sellCondition = rsi2 > overboughtThreshold and negativeTrend
// Exit conditions
exitLongCondition = close > ma5_exit
exitShortCondition = close < ma5_exit
// Stop Loss
stopLossLevelLong = strategy.position_avg_price * (1 - stopLossPercentage / 100)
stopLossLevelShort = strategy.position_avg_price * (1 + stopLossPercentage / 100)
// Strategy logic
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.entry("Sell", strategy.short)
if (exitLongCondition or close >= stopLossLevelLong)
strategy.close("Buy")
if (exitShortCondition or close <= stopLossLevelShort)
strategy.close("Sell")
// Plotting
plot(ma200, title="200 MA", color=color.blue)
plot(ma5_exit, title="Exit MA", color=color.red)
// Plot stop loss levels
plotshape(series=stopLossLevelLong, title="Long Stop Loss", color=color.green, style=shape.triangledown, size=size.small)
plotshape(series=stopLossLevelShort, title="Short Stop Loss", color=color.red, style=shape.triangleup, size=size.small)