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

Tác giả:ChaoZhang, Ngày: 2023-12-19 14:04:46
Tags:

img

Tổng quan

Chiến lược giao dịch Laguerre RSI dựa trên bộ lọc John EHLERS Laguerre được áp dụng cho chỉ số RSI. Bằng cách điều chỉnh hệ số α, chiến lược này làm tăng hoặc giảm độ trễ và độ mượt của RSI để lọc ra tiếng ồn và tạo ra các tín hiệu giao dịch rõ ràng hơn.

Chiến lược logic

Chỉ số cốt lõi của chiến lược này là Laguerre RSI. Công thức tính toán của nó là 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à một hệ số điều chỉnh, Src đại diện cho giá. L0 đến L3 là 4 chỉ số có mối quan hệ tái diễn. Trên cơ sở này, tích lũy lên cu và tích lũy xuống cd có thể được tính toán:

cu = (L0>L1? L0-L1 : 0) + (L1>L2? L1-L2 : 0) + (L2>L3? L2-L3 : 0) cd = (L0

Sau đó Laguerre RSI có thể được tính bằng cách sử dụng cu và cd:

LaRSI = cu / (cu + cd)

Thông qua cấu trúc bộ lọc tái diễn, Laguerre RSI giữ lại khả năng xác định xu hướng của RSI trong khi lọc ra rất nhiều tiếng ồn ngẫu nhiên, tạo ra các 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à: Đi dài khi Laguerre RSI vượt trên 20, và đi ngắn khi Laguerre RSI vượt dưới 80.

Phân tích lợi thế

Những lợi thế chính của chiến lược RSI Laguerre là:

  1. Hiệu quả lọc tiếng ồn của RSI thông qua cấu trúc bộ lọc Laguerre, làm cho tín hiệu giao dịch rõ ràng hơn và đáng tin cậy hơn

  2. Các hệ số α điều chỉnh làm cho các tham số chiến lược linh hoạt để tối ưu hóa để thích nghi với nhiều môi trường thị trường

  3. Giữ hiệu lực dài hạn của RSI trong khi cho phép xác định động lực thông qua lọc, tích hợp xu hướng và mua quá mức / bán quá mức

  4. Quy tắc chiến lược đơn giản và trực quan dễ thực hiện và hoạt động tốt trong các môi trường thị trường khác nhau

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Cài đặt không chính xác của α có thể dẫn đến sự chậm trễ quá mức hoặc lọc quá mức, do đó bỏ lỡ các thay đổi giá

  2. Các lỗ giao dịch thường xuyên có thể xảy ra trên các thị trường biến động

  3. Một số cơ hội tăng có thể bị bỏ lỡ trong các thị trường tăng bền vững dài hạn

Hướng dẫn tối ưu hóa

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

  1. Sử dụng thuật toán học máy để tối ưu hóa cài đặt hệ số α

  2. Thêm các cơ chế dừng lỗ để giảm rủi ro mất mát

  3. Kết hợp các chỉ số khác để lọc tín hiệu sai

  4. Tăng mô hình nới lỏng định lượng để giữ lợi nhuận ở các giai đoạn cụ thể

Kết luận

Chiến lược Laguerre RSI xác định hiệu quả các tình huống mua quá mức và bán quá mức thông qua các cơ chế lọc trong khi tránh sự can thiệp của tiếng ồn khi phát ra tín hiệu giao dịch. Chiến lược đơn giản và thực tế này có không gian tối ưu hóa lớn cho các thông số và có thể thích nghi với các môi trường thị trường khác nhau. Đây là một chiến lược giao dịch được khuyến cáo.


/*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))

Thêm nữa