Stratégie de signaux longs et courts basée sur l'indicateur QQE et l'indicateur RSI

RSI QQE
Date de création: 2024-05-27 15:17:45 Dernière modification: 2024-05-27 15:17:45
Copier: 0 Nombre de clics: 830
1
Suivre
1617
Abonnés

Stratégie de signaux longs et courts basée sur l’indicateur QQE et l’indicateur RSI

Aperçu

La stratégie est basée sur l’indicateur QQE et l’indicateur RSI, en calculant la moyenne mobile lisse de l’indicateur RSI et l’amplitude d’oscillation dynamique, pour construire une zone de signal polyvalente. Lorsque l’indicateur RSI est en hausse, un signal polyvalent est généré, et lorsqu’il est en baisse, un signal de décalage est généré. L’idée principale de la stratégie est d’utiliser les caractéristiques de tendance de l’indicateur RSI et les caractéristiques de volatilité de l’indicateur QQE pour capturer les changements de tendance et les opportunités de volatilité du marché.

Principe de stratégie

  1. Calculer la moyenne mobile lisse de l’indicateur RSI, RsiMa, comme base pour juger de la tendance.
  2. Calculer la déviation absolue de l’indicateur RSI, AtrRsi, et sa moyenne mobile lisse, MaAtrRsi, comme base pour juger de la fluctuation.
  3. L’amplitude d’oscillation dynamique dar est calculée en fonction du facteur QQE et combinée avec RsiMa, pour construire une bande longue et une bande courte de la plage de signaux multi-espaces.
  4. Pour juger de la relation entre l’indicateur RSI et la plage de signaux blancs, un signal de blanchiment est généré lorsque l’indicateur RSI traverse la bande longue et un signal de blanchiment lorsque la bande courte est traversée.
  5. Le trading est effectué en fonction d’un signal de plus ou de moins, l’ouverture d’une position est effectuée au déclenchement d’un signal de plus ou d’un signal de moins.

Avantages stratégiques

  1. Le RSI est un indicateur de l’indice de la qualité de l’épargne (QQE) et de l’indice de l’indice de la qualité de l’épargne (RSI) qui se combinent pour mieux saisir les tendances et les occasions de fluctuation du marché.
  2. L’amplitude des oscillations dynamiques est utilisée pour construire une plage de signaux qui s’adapte aux variations de la volatilité du marché.
  3. Le traitement de l’indicateur RSI et de l’amplitude des fluctuations réduit efficacement les interférences de bruit et les transactions fréquentes.
  4. La logique est claire, avec moins de paramètres, ce qui permet d’optimiser et d’améliorer encore.

Risque stratégique

  1. Cette stratégie peut ne pas fonctionner de manière optimale pour les marchés volatiles et les marchés à faible volatilité.
  2. L’absence d’un mécanisme d’arrêt de perte clair peut entraîner un risque de retrait plus élevé en cas de reprise soudaine du marché.
  3. Les paramètres ont un impact significatif sur la performance de la stratégie et doivent être ajustés en fonction des différents marchés et variétés.

Orientation de l’optimisation de la stratégie

  1. Introduire des mécanismes de stop-loss explicites, tels que des stop-loss à pourcentage fixe, des stop-loss ATR, etc., pour contrôler le risque de retrait.
  2. Optimisation des paramètres, qui permet de trouver la combinaison optimale de paramètres par des méthodes telles que les algorithmes génétiques et la recherche de grille.
  3. Il faut envisager d’introduire d’autres indicateurs tels que le volume de transactions, le volume de positions, etc. afin d’enrichir les signaux de trading et d’améliorer la stabilité de la stratégie.
  4. Pour les marchés en choc, il est possible d’envisager d’introduire la logique de trading de portée ou d’opérations de bandes de fréquence, afin d’améliorer l’adaptabilité de la stratégie.

Résumer

La stratégie est basée sur l’indicateur RSI et l’indicateur QQE pour construire un signal polyvalent, avec des caractéristiques de capture de tendance et de saisie de la volatilité. La logique de la stratégie est claire, les paramètres sont moins nombreux et conviennent à une optimisation et à une amélioration supplémentaires.

Code source de la stratégie
/*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)