라구에르 RSI 거래 전략

저자:차오장, 날짜: 2023-12-19 14:04:46
태그:

img

전반적인 설명

라게르 RSI 거래 전략은 RSI 지표에 적용된 존 EHLERS 라게르 필터를 기반으로합니다. α 계수를 조정함으로써이 전략은 소음을 필터링하고 더 명확한 거래 신호를 생성하기 위해 RSI의 지연과 부드러움을 증가 또는 감소시킵니다.

전략 논리

이 전략의 핵심 지표는 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 전략의 주요 장점은 다음과 같습니다.

  1. 효율적으로 라구레 필터 구조를 통해 RSI의 소음을 필터, 거래 신호를 더 명확하고 더 신뢰할 수 있도록

  2. 조정 가능한 α 계수는 더 많은 시장 환경에 적응하기 위해 최적화를 위해 전략 매개 변수를 유연하게 만듭니다.

  3. RSI의 장기 유효성을 유지하면서 필터링, 트렌드 통합 및 과잉 구매/ 과잉 판매를 통해 동력을 식별 할 수 있습니다.

  4. 간단하고 직관적인 전략 규칙, 다양한 시장 환경에서 쉽게 구현하고 잘 수행

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. α의 잘못된 설정은 과도한 지연 또는 과도한 필터링으로 이어질 수 있으며 따라서 가격 변화가 생략됩니다.

  2. 변동성 있는 시장에서 거래 손실이 자주 발생할 수 있습니다.

  3. 장기적으로 지속되는 황소 시장에서 일부 상승 기회는 놓칠 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 기계 학습 알고리즘을 사용하여 α 계수를 최적화합니다.

  2. 손실 위험을 줄이기 위해 손해 중지 메커니즘을 추가합니다.

  3. 잘못된 신호를 필터링하기 위해 다른 지표를 결합

  4. 특정 단계에서의 수익을 확보하기 위해 양적 완화 모델을 강화

결론

라구레 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))

더 많은