라게르 RSI 거래 전략은 RSI 지표에 적용된 존 EHLERS
이 전략의 핵심 지표는 Laguerre RSI입니다. 계산 공식은 다음과 같습니다.
L0 = (1-γ)Src + γL0[1] L1 = -γL0 + L0[1] + γL1 [1] L2 = -γL1 + L1[1] + γL2 [1] L3 = -γL2 + L2[1] + γL3[1]
여기서 γ=1-α, α는 조정 가능한 계수, Src는 가격을 나타냅니다. L0에서 L3은 재귀 관계를 포함하는 4 개의 지표입니다. 이 기초에서 현재 상향 통합 cu와 하향 통합 cd를 계산할 수 있습니다.
cu = (L0>L1? L0-L1 : 0) + (L1>L2? L1-L2 : 0) + (L2>L3? L2-L3 : 0) cd = (L0
그러면 Laguerre RSI는 cu와 cd를 사용하여 계산할 수 있습니다.
LARSI = cu / (cu + cd)
재귀 필터 구조를 통해 Laguerre RSI는 많은 무작위 잡음을 필터링하면서 RSI의 트렌드 식별 기능을 유지하며 더 명확하고 부드러운 거래 신호를 생성합니다.
구체적인 거래 규칙은 다음과 같습니다. 라구에르 RSI가 20을 넘으면 장거리, 라구에르 RSI가 80을 넘으면 단거리
라구레의 RSI 전략의 주요 장점은 다음과 같습니다.
효율적으로 라구레 필터 구조를 통해 RSI의 소음을 필터, 거래 신호를 더 명확하고 더 신뢰할 수 있도록
조정 가능한 α 계수는 더 많은 시장 환경에 적응하기 위해 최적화를 위해 전략 매개 변수를 유연하게 만듭니다.
RSI의 장기 유효성을 유지하면서 필터링, 트렌드 통합 및 과잉 구매/ 과잉 판매를 통해 동력을 식별 할 수 있습니다.
간단하고 직관적인 전략 규칙, 다양한 시장 환경에서 쉽게 구현하고 잘 수행
이 전략의 주요 위험은 다음과 같습니다.
α의 잘못된 설정은 과도한 지연 또는 과도한 필터링으로 이어질 수 있으며 따라서 가격 변화가 생략됩니다.
변동성 있는 시장에서 거래 손실이 자주 발생할 수 있습니다.
장기적으로 지속되는 황소 시장에서 일부 상승 기회는 놓칠 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
기계 학습 알고리즘을 사용하여 α 계수를 최적화합니다.
손실 위험을 줄이기 위해 손해 중지 메커니즘을 추가합니다.
잘못된 신호를 필터링하기 위해 다른 지표를 결합
특정 단계에서의 수익을 확보하기 위해 양적 완화 모델을 강화
라구레 RSI 전략은 필터링 메커니즘을 통해 과도한 구매 및 과도한 판매 상황을 효과적으로 식별하고 거래 신호를 발행할 때 소음의 간섭을 피합니다. 이 간단하고 실용적인 전략은 매개 변수에 대한 최적화 공간이 크고 다양한 시장 환경에 적응 할 수 있습니다. 그것은 권장되는 거래 전략입니다.
/*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))