该策略使用Laguerre RSI指标生成买卖信号,并结合ADX指标对信号进行过滤。当Laguerre RSI越过预设的买卖级别,且ADX高于设定的阈值时,策略会产生买卖信号。这种结合快速和慢速指标的方法,可以在趋势强度足够时及时捕捉交易机会,同时避免在趋势不明朗的情况下交易。
Laguerre RSI是一种动量指标,用于衡量价格变化的速度和强度。它基于Laguerre滤波器,相比传统RSI对价格变化的反应更加灵敏。策略通过比较Laguerre RSI与预设的买卖级别,产生对应的信号。
ADX指标衡量价格趋势的强度,数值越大表明趋势越强。策略通过设定ADX阈值,在趋势强度达标时开仓,而在趋势不明显时保持观望。这有助于提高信号的可靠性,避免频繁交易。
策略使用Laguerre RSI的交叉来触发买卖信号,当指标上穿买入水平时开多仓,下穿卖出水平时开空仓。同时,ADX需高于预设的阈值,以确认趋势强度。这种双重条件的设计,旨在捕捉强势趋势中的交易机会。
Laguerre RSI结合ADX过滤的交易策略,是一种趋势跟踪方法。它利用快速指标捕捉价格变化,同时通过慢速指标确认趋势强度。这种组合可以在趋势明确时及时交易,又能在趋势不明朗时保持观望。策略优势在于逻辑简单,适用范围广,但也存在频繁交易和风险控制不足的问题。未来可以从信号优化、风控完善、仓位管理等方面对策略进行提升,以期获得更加稳健的收益。
/*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))