Chiến lược này là một phiên bản nâng cao của chỉ số RSI được phát triển bởi John Ehlers. Ưu điểm chính của nó là làm mịn đường cong RSI trong khi giảm thiểu sự chậm trễ.
Tính toán giá trung bình xValue sử dụng 6 thanh.
Tính toán tổng tăng CU23 và tổng giảm CD23 dựa trên xValue.
Tính toán giá trị bình thường hóa RES nRes là CU23/(CU23 + CD23).
Tạo tín hiệu dài / ngắn bằng cách so sánh nRes với ngưỡng.
Tùy chọn để đảo ngược tín hiệu.
Nhập dài / ngắn dựa trên tín hiệu.
Chiến lược này có hiệu quả làm mịn đường cong RSI bằng cách tăng cường tính toán của nó, giảm các tín hiệu sai ở một mức độ nào đó. Việc lọc và tối ưu hóa tham số thêm có thể cải thiện hiệu suất. Nhưng một số sự chậm trễ vẫn tồn tại như một hệ thống động lực. Nhìn chung, một hệ thống đột phá đơn giản và đáng tin cậy đáng nghiên cứu và tối ưu hóa hơn nữa.
/*backtest start: 2023-09-13 00:00:00 end: 2023-09-19 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 20/11/2017 // This is new version of RSI oscillator indicator, developed by John Ehlers. // The main advantage of his way of enhancing the RSI indicator is smoothing // with minimum of lag penalty. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="Smoothed RSI Backtest ver.2") Length = input(10, minval=1) TopBand = input(0.8, step=0.01) LowBand = input(0.2, step=0.01) reverse = input(false, title="Trade reverse") hline(TopBand, color=red, linestyle=line) hline(LowBand, color=green, linestyle=line) xValue = (close + 2 * close[1] + 2 * close[2] + close[3] ) / 6 CU23 = sum(iff(xValue > xValue[1], xValue - xValue[1], 0), Length) CD23 = sum(iff(xValue < xValue[1], xValue[1] - xValue, 0), Length) nRes = iff(CU23 + CD23 != 0, CU23/(CU23 + CD23), 0) pos = iff(nRes > TopBand, 1, iff(nRes < LowBand, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nRes, color=blue, title="Smoothed RSI")