Chiến lược giao dịch RSI của Laguerre


Ngày tạo: 2023-12-19 14:04:46 sửa đổi lần cuối: 2023-12-19 14:04:46
sao chép: 0 Số nhấp chuột: 1317
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch RSI của Laguerre

Tổng quan

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.

Nguyên tắc chiến lược

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.

Phân tích lợi thế

Các lợi thế chính của chiến lược RSI của Raguel là:

  1. 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

  2. Đ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

  3. 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

  4. 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

Phân tích rủi ro

Chiến lược này có những rủi ro:

  1. 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á

  2. 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

  3. Thị trường bò kéo dài có thể bỏ lỡ một số cơ hội tăng giá

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Cài đặt để tối ưu hóa hệ số alpha bằng thuật toán học máy

  2. Tăng cơ chế ngăn chặn thiệt hại, giảm rủi ro mất mát

  3. 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

  4. Tăng chế độ nới lỏng định lượng, khóa lợi nhuận vào giai đoạn nhất định

Tóm tắt

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.

Mã nguồn chiến lược
/*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))