Die Ressourcen sind geladen. Beförderung...

Auf QQE- und RSI-basierte Lang-Kurz-Signalstrategie

Schriftsteller:ChaoZhang, Datum: 2024-05-27 15:17:45
Tags:RSIQQE

img

Übersicht

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.

Strategieprinzip

  1. Die Berechnung des glatten gleitenden Durchschnitts RsiMa des RSI-Indikators dient als Grundlage für die Beurteilung des Trends.
  2. Der absolute Abweichungswert AtrRsi des RSI-Indikators und sein glätteter gleitender Durchschnitt MaAtrRsi werden als Grundlage für die Bewertung der Volatilität berechnet.
  3. Berechnen Sie den dynamischen Schwingungsbereich dar nach dem QQE-Faktor und kombinieren Sie ihn mit RsiMa, um die lang-kurzen Signalintervalle Longband und Shortband zu konstruieren.
  4. Beurteilen Sie die Beziehung zwischen dem RSI-Indikator und den lang-kurzen Signalintervallen. Wenn der RSI-Indikator über dem Langband überschreitet, erzeugt er ein langes Signal, und wenn er unter dem Kurzband überschreitet, erzeugt er ein kurzes Signal.
  5. Wenn ein langes Signal ausgelöst wird, öffnen Sie eine lange Position und wenn ein kurzes Signal ausgelöst wird, schließen Sie die Position.

Strategische Vorteile

  1. Er kombiniert die Merkmale des RSI-Indikators und des QQE-Indikators, mit denen Markttrends und Volatilitätschancen besser erfasst werden können.
  2. Es verwendet einen dynamischen Schwingungsbereich, um Signalintervalle zu konstruieren, die sich an Veränderungen der Marktvolatilität anpassen können.
  3. Es glättet den RSI-Indikator und den Volatilitätsbereich, wodurch die Lärmstörungen und der häufige Handel wirksam reduziert werden.
  4. Die Logik ist klar, mit weniger Parametern und für weitere Optimierung und Verbesserung geeignet.

Strategische Risiken

  1. Bei volatilen Märkten und Märkten mit geringer Volatilität ist die Leistung dieser Strategie möglicherweise nicht ideal.
  2. Es fehlt ein klarer Stop-Loss-Mechanismus und es kann ein größeres Drawdown-Risiko entstehen, wenn der Markt plötzlich umkehrt.
  3. Die Einstellungen der Parameter haben einen größeren Einfluss auf die Strategieergebnisse und müssen je nach verschiedenen Märkten und Sorten angepasst werden.

Strategieoptimierungsrichtlinien

  1. Einführung klarer Stop-Loss-Mechanismen, wie beispielsweise festes Stop-Loss-Prozentsatz, ATR-Stop-Loss usw. zur Kontrolle des Zugriffsrisikos.
  2. Die optimale Parameterkombination kann durch genetische Algorithmen, Rastersuche und andere Methoden gefunden werden.
  3. Überlegen Sie, andere Indikatoren wie Handelsvolumen und Positionsvolumen einzuführen, um Handelssignale zu bereichern und die Strategie-Stabilität zu verbessern.
  4. Bei volatilen Märkten sollten Sie eine Range- oder Swing-Trading-Logik einführen, um die Anpassungsfähigkeit der Strategie zu verbessern.

Zusammenfassung

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)
    


Verwandt

Mehr