Chiến lược này kết hợp chiến lược đảo ngược ngưỡng kháng cự hỗ trợ quan trọng và chỉ số RSI tương đối mạnh để kiểm tra tín hiệu của chỉ số RSI khi ngưỡng kháng cự hỗ trợ được hình thành để phát hiện cơ hội đảo ngược xu hướng tiềm ẩn.
Chiến lược này đầu tiên tính toán các mức hỗ trợ và kháng cự quan trọng, tức là bằng cách xem một số đường K ở hai đầu bên trái và bên trái, để có được mức hỗ trợ giá cao nhất và mức kháng cự giá thấp nhất. Khi mức hỗ trợ và kháng cự được hình thành, kiểm tra thêm xem giá trị chỉ số RSI có phù hợp với điều kiện mua bán quá mức hay không.
Các chi tiết mã như sau:
Chiến lược này có những lợi thế chính như sau:
Xác minh xu hướng: Chỉ số RSI có thể lọc các đợt phá vỡ giả để tránh nhầm vào trong điều chỉnh tạm thời
Kiểm soát rủi ro: Cài đặt dừng lỗ gần kháng cự hỗ trợ quan trọng, thuận lợi cho kiểm soát rủi ro
Khả năng phổ biến: phù hợp với các giống và thời gian khác nhau
Dễ thực hiện: ít thiết lập chỉ số và tham số, dễ thực hiện
Yêu cầu dữ liệu thấp: Chỉ cần OHLC có sẵn, yêu cầu về chất lượng dữ liệu không cao
Chiến lược này cũng có những rủi ro sau:
Rủi ro thất bại của ngưỡng kháng cự hỗ trợ: Khi thị trường thay đổi mạnh mẽ, ngưỡng kháng cự hỗ trợ ban đầu có thể bị phá vỡ và dẫn đến thất bại của chiến lược. Rủi ro này có thể được giảm bớt bằng cách điều chỉnh các tham số để mở rộng phù hợp phạm vi của ngưỡng kháng cự hỗ trợ.
RSI phân tán rủi ro: Trong tình huống biến động, RSI có thể phân tán, quá mua quá bán bị coi là không có hiệu lực. Bạn có thể điều chỉnh RSI tham số thích hợp hoặc thêm các điều kiện bổ sung để xác minh tín hiệu RSI.
Giảm lỗ được đặt rủi ro: Trong quá trình chạy xu hướng, dừng lỗ có thể bị phá vỡ dẫn đến tổn thất mở rộng. Khoảng cách dừng lỗ có thể được nới lỏng thích hợp. Nhưng cần cân bằng lợi nhuận và kiểm soát rủi ro của xu hướng.
Rủi ro rút lui: Chiến lược này được thực hiện từng bước, có thể có một sự rút lui nhất định khi xu hướng không đảo ngược. Việc rút lui có thể được kiểm soát thông qua quản lý 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:
Tối ưu hóa các tham số tính toán điểm kháng cự hỗ trợ, cải thiện độ chính xác định vị. Bạn có thể thử nghiệm các giá trị khác nhau hoặc thêm các bộ lọc điều kiện.
Tối ưu hóa các tham số RSI, cải thiện độ chính xác của đánh giá mua bán quá mức. Bạn có thể kiểm tra độ dài RSI khác nhau và vị trí của đường mua bán quá mức.
Thêm các điều kiện xác minh bổ sung để tránh bị mắc kẹt trong tình huống chấn động. Ví dụ: kết hợp với chỉ số tỷ lệ dao động.
Tối ưu hóa chiến lược dừng lỗ để đạt được sự cân bằng giữa việc theo đuổi lợi nhuận và kiểm soát rủi ro. Có thể giới thiệu các phương thức dừng động như trailing stop.
Tiến hành dừng dựa trên phân tích thống kê, xác định phạm vi dừng bằng cách tính toán dựa trên dữ liệu lịch sử.
Kết hợp nhiều chu kỳ thời gian để xác minh và sử dụng nhiều chu kỳ để xác minh tỷ lệ thắng.
Chiến lược này có thể cải thiện tính hệ thống và ổn định so với việc sử dụng chỉ số kỹ thuật như kháng cự hoặc RSI hoặc chỉ số hỗ trợ một mình. Bằng cách liên tục tối ưu hóa các tham số và điều kiện lọc, chiến lược này có thể nâng cao hơn nữa tỷ lệ thắng và tỷ lệ thu hồi lợi nhuận. Nhìn chung, chiến lược này là một hệ thống đảo ngược xu hướng ngắn hạn theo dõi thực tế.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Pivot Point Reversal + RSI Strategy", shorttitle = 'PP + RSI Strategy', overlay=true)
////////////
// Inputs //
leftBars = input(3, title = 'PP - Left Bars')
rightBars = input(3, title = 'PP - Right Bars')
rsi_length = input(14, title = "RSI - Length")
rsi_long = input(70, title = "RSI - Overbought level")
rsi_short = input(30, title = "RSI - Overold level")
//////////////////
// Calculations //
// Pivot Points
swh = pivothigh(leftBars, rightBars)
swl = pivotlow(leftBars, rightBars)
// Pivot High
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
// Pivot Low
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
// RSI
rsi = rsi(close, 14)
//////////////
// STRATEGY //
if (le and rsi[rightBars] < rsi_long )
strategy.entry("PivRevLE", strategy.long, comment = "PivRSI Long", stop = hprice + syminfo.mintick)
if (se and rsi[rightBars] > rsi_short)
strategy.entry("PivRevSE", strategy.short, comment = "PivRSI Short", stop = lprice - syminfo.mintick)