
Chiến lược giao dịch RSI của Rahel là một chỉ số RSI dựa trên bộ lọc Rahel của John EHLERS. Chiến lược này làm tăng hoặc giảm độ trễ và độ trơn của chỉ số RSI bằng cách điều chỉnh hệ số α, do đó lọc ra tiếng ồn của chỉ số RSI và phát ra tín hiệu mua và bán rõ ràng hơn.
Chỉ số cốt lõi của chiến lược này là RSI của Raguel. Công thức tính toán của nó như sau:
L0 = (1-γ)*Src + γ*L0[1]
L1 = -γ*L0 + L0[1] + γ*L1[1]
L2 = -γ*L1 + L1[1] + γ*L2[1]
L3 = -γ*L2 + L2[1] + γ*L3[1]
Ở đây γ = 1-α, α là hệ số có thể điều chỉnh, Src đại diện cho giá. L0 đến L3 là 4 chỉ số bao gồm mối quan hệ trục xuất. Dựa trên đó, có thể tính toán tích cu tăng hiện tại và tích cd giảm:
cu = (L0>L1 ? L0-L1 : 0) + (L1>L2 ? L1-L2 : 0) + (L2>L3 ? L2-L3 : 0) cd = (L0
Sau đó sử dụng cu và cd để tính toán RSI của Raguel:
LaRSI = cu / (cu + cd)
Ở đây, thông qua cấu trúc của bộ lọc luân phiên, chỉ số RSI của Raguel đã lọc ra một lượng lớn tiếng ồn ngẫu nhiên, trong khi vẫn duy trì khả năng nhận dạng xu hướng của chỉ số RSI, tạo ra một tín hiệu giao dịch rõ ràng và mượt mà hơn.
Các quy tắc giao dịch cụ thể: Làm thêm khi Ragel mặc 20 trên RSI; làm trống khi Ragel mặc 80 dưới RSI.
Các lợi thế chính của chiến lược RSI của Raguel là:
RSI hiệu quả lọc thông qua cấu trúc bộ lọc Ragel để làm cho tín hiệu giao dịch rõ ràng hơn và đáng tin cậy hơn
Điều chỉnh hệ số α cho phép các tham số của chiến lược có thể được tối ưu hóa một cách linh hoạt để phù hợp với môi trường thị trường rộng lớn hơn
Giữ hiệu quả lâu dài của chỉ số RSI, đồng thời nhận diện động lực, tích hợp xu hướng và bán tháo qua bộ lọc
Quy tắc chiến lược đơn giản, trực quan, dễ thực hiện, hoạt động tốt trong nhiều môi trường thị trường
Chiến lược này có những rủi ro:
Cấu số α được thiết lập không đúng có thể dẫn đến quá chậm trễ hoặc quá lọc, bỏ lỡ sự thay đổi giá
Có thể xảy ra tổn thất giao dịch thường xuyên trong thị trường biến động mạnh
Thị trường bò kéo dài có thể bỏ lỡ một số cơ hội tăng giá
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Cài đặt để tối ưu hóa hệ số alpha bằng thuật toán học máy
Tăng cơ chế ngăn chặn thiệt hại, giảm rủi ro mất mát
Kết hợp các chỉ số khác để đánh giá các tín hiệu báo cáo sai lệch
Tăng chế độ nới lỏng định lượng, khóa lợi nhuận vào giai đoạn nhất định
Chiến lược RSI của Ragel thông qua cơ chế lọc hiệu quả nhận diện trường hợp quá mua quá bán, tránh bị nhiễu nhiễu trong khi phát tín hiệu giao dịch. Chiến lược này đơn giản, thực tế, có nhiều tham số tối ưu hóa, có thể thích ứng với nhiều môi trường thị trường, là một chiến lược giao dịch đáng khuyên.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mertriver1
// Developer: John EHLERS
//@version=3
// Author:Kıvanç Özbilgiç
strategy("Laguerre RSI", shorttitle="LaRSI", overlay=false)
src = input(title="Source", defval=close)
alpha = input(title="Alpha", type=float, minval=0, maxval=1, step=0.1, defval=0.2)
colorchange = input(title="Change Color ?", type=bool, defval=false)
Date1 = input(true, title = "=== Date Backtesting ===")
FromDay1 = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth1 = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear1 = input(defval = 2020, title = "From Year", minval = 2017)
ToDay1 = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth1 = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear1 = input(defval = 9999, title = "To Year", minval = 2017)
start1 = timestamp(FromYear1, FromMonth1, FromDay1, 00, 00)
finish1 = timestamp(ToYear1, ToMonth1, ToDay1, 23, 59)
window1() => time >= start1 and time <= finish1 ? true : false
gamma=1-alpha
L0 = 0.0
L0 := (1-gamma) * src + gamma * nz(L0[1])
L1 = 0.0
L1 := -gamma * L0 + nz(L0[1]) + gamma * nz(L1[1])
L2 = 0.0
L2 := -gamma * L1 + nz(L1[1]) + gamma * nz(L2[1])
L3 = 0.0
L3 := -gamma * L2 + nz(L2[1]) + gamma * nz(L3[1])
cu= (L0>L1 ? L0-L1 : 0) + (L1>L2 ? L1-L2 : 0) + (L2>L3 ? L2-L3 : 0)
cd= (L0<L1 ? L1-L0 : 0) + (L1<L2 ? L2-L1 : 0) + (L2<L3 ? L3-L2 : 0)
temp= cu+cd==0 ? -1 : cu+cd
LaRSI=temp==-1 ? 0 : cu/temp
Color = colorchange ? (LaRSI > LaRSI[1] ? green : red) : blue
plot(100*LaRSI, title="LaRSI", linewidth=2, color=Color, transp=0)
plot(20,linewidth=1, color=maroon, transp=0)
plot(80,linewidth=1, color=maroon, transp=0)
strategy.entry("Long", true, when = window1() and crossover(cu, cd))
strategy.entry("Short", false, when = window1() and crossunder(cu, cd))