이 전략은 QQE 지표와 RSI 지표에 기초한다. 그것은 긴 짧은 신호 간격을 구성하기 위해 RSI 지표의 평탄한 이동 평균과 동적 오스실레이션 범위를 계산한다. RSI 지표가 상부 레일을 뚫을 때 긴 신호를 생성하고, 하부 레일을 뚫을 때 짧은 신호를 생성한다. 전략의 주요 아이디어는 RSI 지표의 트렌드 특성과 QQE 지표의 변동성 특성을 사용하여 시장 트렌드와 변동성 기회의 변화를 포착하는 것이다.
이 전략은 RSI 지표와 QQE 지표에 기반하여 긴 짧은 신호를 구성하며 트렌드 캡처 및 변동성 파악의 특성을 가지고 있습니다. 전략 논리는 더 적은 매개 변수와 함께 명확하며 추가 최적화 및 개선에 적합합니다. 그러나 전략에는 또한 마감 제어 및 매개 변수 설정과 같은 특정 위험이 있습니다. 향후 전략의 견고성과 수익성을 향상시키기 위해 정지 손실 메커니즘, 매개 변수 최적화, 신호 풍부화 및 다른 시장에 적응력과 같은 측면에서 전략을 최적화 할 수 있습니다.
/*backtest start: 2023-05-21 00:00:00 end: 2024-05-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Binance","currency":"BTC_USDT"}] */ //@version=4 // modified by swigle // thanks colinmck strategy("QQE signals bot", overlay=true) RSI_Period = input(14, title='RSI Length') SF = input(5, title='RSI Smoothing') QQE = input(4.236, title='Fast QQE Factor') ThreshHold = input(10, title="Thresh-hold") src = close Wilders_Period = RSI_Period * 2 - 1 Rsi = rsi(src, RSI_Period) RsiMa = ema(Rsi, SF) AtrRsi = abs(RsiMa[1] - RsiMa) MaAtrRsi = ema(AtrRsi, Wilders_Period) dar = ema(MaAtrRsi, Wilders_Period) * QQE longband = 0.0 shortband = 0.0 trend = 0 DeltaFastAtrRsi = dar RSIndex = RsiMa newshortband = RSIndex + DeltaFastAtrRsi newlongband = RSIndex - DeltaFastAtrRsi longband := RSIndex[1] > longband[1] and RSIndex > longband[1] ? max(longband[1], newlongband) : newlongband shortband := RSIndex[1] < shortband[1] and RSIndex < shortband[1] ? min(shortband[1], newshortband) : newshortband cross_1 = cross(longband[1], RSIndex) trend := cross(RSIndex, shortband[1]) ? 1 : cross_1 ? -1 : nz(trend[1], 1) FastAtrRsiTL = trend == 1 ? longband : shortband // Find all the QQE Crosses QQExlong = 0 QQExlong := nz(QQExlong[1]) QQExshort = 0 QQExshort := nz(QQExshort[1]) QQExlong := FastAtrRsiTL < RSIndex ? QQExlong + 1 : 0 QQExshort := FastAtrRsiTL > RSIndex ? QQExshort + 1 : 0 //Conditions qqeLong = QQExlong == 1 ? FastAtrRsiTL[1] - 50 : na qqeShort = QQExshort == 1 ? FastAtrRsiTL[1] - 50 : na // Plotting plotshape(qqeLong, title="QQE long", text="Long", textcolor=color.white, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny) plotshape(qqeShort, title="QQE short", text="Short", textcolor=color.white, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny) // trade //if qqeLong > 0 strategy.entry("buy long", strategy.long, 100, when=qqeLong) if qqeShort > 0 strategy.close("buy long") // strategy.exit("close_position", "buy long", loss=1000) // strategy.entry("sell", strategy.short, 1, when=strategy.position_size > 0)