Diese Strategie basiert auf dem QQE-Indikator und dem RSI-Indikator. Sie berechnet den glatten gleitenden Durchschnitt und den dynamischen Schwingungsbereich des RSI-Indikators, um lange-kurze Signalintervalle zu konstruieren. Wenn der RSI-Indikator durch die obere Schiene bricht, erzeugt er ein langes Signal, und wenn er durch die untere Schiene bricht, erzeugt er ein kurzes Signal. Die Hauptidee der Strategie besteht darin, die Trendmerkmale des RSI-Indikators und die Volatilitätsmerkmale des QQE-Indikators zu verwenden, um Veränderungen der Markttrends und Volatilitätschancen zu erfassen.
Diese Strategie konstruiert lang-kurze Signale auf der Grundlage des RSI-Indikators und des QQE-Indikators und hat die Eigenschaften der Trend-Erfassung und Volatilitätsverständnis. Die Strategie Logik ist klar, mit weniger Parametern, und ist für weitere Optimierung und Verbesserung geeignet. Allerdings hat die Strategie auch bestimmte Risiken, wie Drawdown-Kontrolle und Parameter-Einstellung, die weiter verbessert werden müssen. In Zukunft kann die Strategie aus Aspekten wie Stop-Loss-Mechanismus, Parameter-Optimierung, Signalanreicherung und Anpassungsfähigkeit an verschiedene Märkte optimiert werden, um die Robustheit und Rentabilität der Strategie zu verbessern.
/*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)