이 전략은 라구레 RSI 지표를 사용하여 구매 및 판매 신호를 생성하고 ADX 지표를 사용하여 신호를 필터합니다. 라구레 RSI가 미리 정의된 구매 및 판매 수준을 넘거나 그 이하로 넘어서 ADX가 설정된 임계 이상에있을 때, 전략은 구매 또는 판매 신호를 생성합니다. 빠른 지표와 느린 지표를 결합하는이 접근 방식은 트렌드 강도가 충분할 때 거래 기회를 적시에 포착 할 수 있으며 트렌드가 불분명 할 때 거래를 피합니다.
라구레 RSI는 가격 변화의 속도와 강도를 측정하는 데 사용되는 모멘텀 지표입니다. 그것은 라구레 필터에 기반하고 전통적인 RSI에 비해 가격 변화에 더 반응합니다. 전략은 사전에 정의된 구매 및 판매 수준과 라구레 RSI를 비교하여 신호를 생성합니다.
ADX 지표는 가격 트렌드의 강도를 측정하며, 더 높은 값은 더 강한 트렌드를 나타냅니다. 전략은 트렌드 강도가 충분할 때만 거래를 시작하고 트렌드가 명확하지 않을 때 측면에 머물러있는 ADX 임계치를 설정합니다. 이것은 신호의 신뢰성을 향상시키고 빈번한 거래를 피하는 데 도움이됩니다.
이 전략은 라구레 RSI의 크로스오버를 사용하여 구매 및 판매 신호를 유발합니다. 지표가 구매 수준을 넘어서면 긴 포지션과 판매 수준을 넘어서면 짧은 포지션으로 진입합니다. 동시에 ADX는 트렌드 강도를 확인하기 위해 미리 설정된 임계 이상에 있어야합니다. 이 이중 조건 디자인은 강한 트렌드에서 거래 기회를 포착하는 것을 목표로합니다.
ADX 필터링 트레이딩 전략과 함께 Laguerre RSI는 트렌드를 따르는 접근법이다. 느린 지표로 트렌드 강도를 확인하는 동시에 가격 변화를 포착하기 위해 빠른 지표를 사용합니다. 이 조합은 트렌드가 명확할 때 적절한 시간에 거래 할 수 있으며 트렌드가 불확실할 때 측면에 머물 수 있습니다. 전략의 장점은 단순성과 광범위한 적용 가능성에 있습니다. 그러나 빈번한 거래 및 불충분한 위험 통제와 같은 문제도 있습니다. 향후 개선은 신호 최적화, 위험 관리 개선 및 더 강력한 수익을 달성하기 위해 포지션 사이징에 초점을 맞출 수 있습니다.
/*backtest start: 2023-05-11 00:00:00 end: 2024-05-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Laguerre RSI with Buy/Sell Signals and ADX Filter', shorttitle='LaRSI_ADX Signals', overlay=false) // Kullanıcı girdileri src = input(title='Source', defval=close) alpha = input.float(title='Alpha', minval=0, maxval=1, step=0.1, defval=0.2) buyLevel = input(20, title='Buy Level') sellLevel = input(80, title='Sell Level') adxLength = input(14, title='ADX Length') adxSmoothing = input(14, title='ADX Smoothing') adxLevel = input(20, title='ADX Level') // adxLevel tanımlamasını ekledik // ADX hesaplaması [diPlus, diMinus, adx] = ta.dmi(adxLength, adxSmoothing) // Laguerre RSI hesaplamaları 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 // Alım ve satım sinyalleri longCondition = ta.crossover(100 * LaRSI, buyLevel) and adx > adxLevel shortCondition = ta.crossunder(100 * LaRSI, sellLevel) and adx > adxLevel // Strateji giriş ve çıkışları strategy.entry('Long', strategy.long, when=longCondition) strategy.entry('Short', strategy.short, when=shortCondition) // Göstergeleri çizme plot(100 * LaRSI, title='LaRSI', linewidth=2, color=color.new(color.blue, 0)) hline(buyLevel, title='Buy Level', color=color.new(color.green, 0), linestyle=hline.style_dotted) hline(sellLevel, title='Sell Level', color=color.new(color.red, 0), linestyle=hline.style_dotted) plot(adx, title='ADX', color=color.new(color.orange, 0))