Chiến lược này là một phiên bản cải tiến của chỉ số RSI được phát triển bởi John Ehlers. Lợi thế lớn nhất của nó là làm giảm sự chậm trễ và đồng thời làm phẳng đường RSI.
Tính trung bình của 6 giá xValue.
Tổng tăng CU23 và tổng giảm CD23 được tính theo xValue.
Tính toán giá trị RES bình thường nRes, tức là CU23/(CU23 + CD23).
So sánh nRes với ngưỡng trên và dưới, tạo ra tín hiệu đa không.
Lựa chọn giao dịch ngược.
Giao dịch theo tín hiệu.
Chiến lược này đã làm mỏng đường cong một cách hiệu quả bằng cách cải thiện cách tính toán chỉ số RSI, giảm tín hiệu báo cáo sai lệch ở một mức độ nào đó. Cài đặt tham số tối ưu hóa và thêm các điều kiện lọc khác có thể giúp cải thiện hơn nữa hiệu suất của chiến lược.
/*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")