Les ressources ont été chargées... Je charge...

SPY RSI Stochastique Stratégie d'inversion de tendance croisée

Auteur:ChaoZhang est là., Date: 2024-02-23 14h38h49
Les étiquettes:

img

Résumé

La stratégie d'inversion de tendance de l'indicateur RSI est une stratégie de trading quantitative qui utilise des croisements d'indicateurs RSI entre les lignes rapides et lentes pour déterminer les inversions de prix.

La logique de la stratégie

La logique de base de cette stratégie est basée sur les croisements rapides et lents des lignes RSI. Le RSI s'inverse généralement dans les zones de surachat et de survente, de sorte qu'en déterminant les situations de croix dorée et de croix de mort entre les lignes rapides et lentes du RSI, nous pouvons identifier à l'avance les points d'inversion de prix possibles. Plus précisément, la stratégie repose principalement sur les indicateurs et conditions suivants:

  1. Ligne RSI lente: ligne RSI à 64 périodes
  2. Ligne RSI rapide: ligne RSI à 9 périodes
  3. RSI MA Line: moyenne mobile simple à 3 périodes de la ligne rapide du RSI
  4. RSI seuil de surachat: paramètre défini à 83
  5. RSI seuil de survente: paramètre défini à 25
  6. RSI Zone neutre: entre 39 et 61
  7. Heures de négociation: du lundi au vendredi de 9h à 9h du lendemain

Lorsque le RSI rapide traverse le RSI lent (croix dorée) et que la ligne rapide traverse la ligne MA, un signal d'achat est généré.

En outre, la logique suivante est configurée pour filtrer certains métiers du bruit:

  1. Aucun signal de négociation n'a été généré dans la zone RSI neutre
  2. Uniquement du lundi au vendredi de 9h à 9h du lendemain

Il y a deux conditions de sortie après l'entrée:

  1. Position fermée lorsque le RSI rapide entre dans la région opposée (suracheté ou survendu)
  2. Position de fermeture lorsque le signal de croisement RSI inverse se produit

Analyse des avantages

L'avantage le plus important de la stratégie de tendance d'inversion de l'intersection des stochastiques de SPY RSI est qu'elle peut capturer la tendance tôt avant que des inversions de prix significatives ne se produisent.

  1. Des règles claires de génération de signaux, faciles à comprendre et à suivre
  2. Filtres doubles conçus pour réduire les signaux sonores
  3. Des réglages flexibles de zone de surachat/survente s'adaptent à différents environnements de marché
  4. Combine à la fois les capacités de suivi de tendance et de capture d'inversion

En résumé, en combinant le suivi des tendances et l'analyse de l'inversion de la valeur, la stratégie peut capturer dans une certaine mesure le moment de l'inversion des prix et présente une grande praticité.

Analyse des risques

Bien que la stratégie d'inversion de tendance croisée de SPY RSI Stochastics présente certains avantages, elle comporte également les principaux risques suivants:

  1. Impossible d'éviter complètement les risques liés aux activités sonores malgré la conception de deux filtres
  2. Les croisements RSI ne sont pas parfaits pour prédire les points d'inversion réels, certaines difficultés existent
  3. Nécessite des paramètres raisonnables, sinon des transactions trop fréquentes ou rares peuvent se produire
  4. Les événements du cygne noir conduisant à de fausses éruptions ne peuvent pas être complètement évités

Pour faire face aux risques susmentionnés, la stratégie peut être optimisée et améliorée dans les aspects suivants:

  1. Utiliser des algorithmes d'apprentissage automatique pour former des paramètres optimaux et réduire les signaux sonores
  2. Incorporer d'autres indicateurs techniques pour améliorer la fiabilité des signaux croisés
  3. Ajouter des mécanismes de stop loss au contrôle par exposition au risque de transaction
  4. Optimiser la mise à jour adaptative des paramètres pour améliorer la capacité d'adaptation

Directions d'optimisation

La stratégie d'inversion de tendance croisée des stochastiques de SPY RSI peut être principalement optimisée dans les domaines suivants:

  1. Optimisation des paramètres: Trouvez des combinaisons optimales de paramètres de manière systématique par des méthodes telles que des algorithmes génétiques, une recherche en grille, etc.
  2. Ingénierie des caractéristiques: Incorporer davantage de facteurs influençant les prix tels que les variations de volume, la volatilité, etc. pour faciliter les décisions
  3. Apprentissage automatique: Trainer des critères de croisement avec des algorithmes d'apprentissage automatique pour améliorer la précision
  4. Optimisation des pertes par arrêt: Introduire des arrêts de retard, des arrêts de temps, etc. pour contrôler les risques
  5. Mise à jour adaptative: permettre aux paramètres clés de s'adapter en fonction des conditions du marché en temps réel

De telles optimisations peuvent rendre les paramètres de la stratégie plus intelligents, les signaux plus fiables et ajuster également les règles en fonction des changements du marché, améliorant ainsi considérablement la stabilité des bénéfices de la stratégie.

Conclusion

La Stratégie de tendance d'inversion de l'intersection des stochastiques du SPY RSI a conçu un système de stratégie de trading quantitative relativement simple et clair basé sur le jugement des croisements rapides et lents des lignes du RSI. Combinant les caractéristiques de suivi de tendance et de trading d'inversion, il peut capturer le timing de l'inversion des prix dans une certaine mesure. Mais la stratégie présente également quelques défauts inhérents, nécessitant une optimisation des paramètres, des fonctionnalités et des modèles pour contrôler les risques et améliorer la qualité du signal. Avec des optimisations continues, elle peut devenir un système quantitatif rentable stable.


/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SPY Auto RSI Stochastics", pyramiding = 3)


// Input parameters
slowRSILength = input(64, title="SLOW RSI Length")
fastRSILength = input(9, title="FAST RSI Length")
smaRSILength = input(3, title="RSI SMA Length")
RSIUpperThreshold = input(83, title="RSI Upper")
RSILowerThreshold = input(25, title="RSI Lower")
RSIUpperDeadzone = input(61, title='RSI Upper Deadzone')
RSILowerDeadzone = input(39, title='RSI Lower Deadzone')
blockedDays = (dayofweek(time) == 1 or dayofweek(time) == 7)
sessionMarket = input("0900-0900", title="Session Start")
allowedTimes() => time(timeframe = timeframe.period, session = sessionMarket, timezone = "GMT+1")
isvalidTradeTime =true

// RSI and ATR
slowRSI = ta.rsi(close, slowRSILength)
fastRSI = ta.rsi(close, fastRSILength)
smaRSI = ta.sma(fastRSI, smaRSILength)
rsi = fastRSI

// Entry condition
RSIUptrend() =>  ta.crossover(fastRSI, slowRSI) and ta.crossover(fastRSI, smaRSI)
RSIDowntrend() =>  ta.crossunder(fastRSI, slowRSI) and ta.crossunder(fastRSI, smaRSI)


isRSIDeadzone() =>
    rsi < RSIUpperDeadzone and rsi > RSILowerDeadzone

isBullishEngulfing() =>
    close > high[1]

isBearishEngulfing() =>
    close < low[1] 

// Declare variables
var float initialSLLong = na
var float initialTPLong = na
var float initialSLShort = na
var float initialTPShort = na
//var bool inATrade = false

entryConditionLong = RSIUptrend() and not isRSIDeadzone() and isvalidTradeTime
entryConditionShort = RSIDowntrend() and not isRSIDeadzone() and isvalidTradeTime

exitConditionLong = entryConditionShort or fastRSI > RSIUpperThreshold
exitConditionShort = entryConditionLong or fastRSI < RSILowerThreshold


if (entryConditionLong)
    strategy.entry(id = "Long", direction = strategy.long, alert_message = 'LONG! beep boop, all aboard the long train')

if (entryConditionShort)
    strategy.entry(id = "Short", direction = strategy.short, alert_message = 'Short! beep boop, all aboard the short train')

if (exitConditionLong)
    strategy.exit("Long", from_entry="Long", limit=close, alert_message = 'Stop Long, halt halt, take the profits and runnn')

if (exitConditionShort)
    strategy.exit("Short", from_entry="Short", limit=close, alert_message = 'Stop Short, halt halt, take the profits and runnn')


//plot(smaRSI, "RSI MA", color=color.red)
plot(slowRSI, "Slow RSI", color=color.green)
//plot(fastRSI, "Fast RSI", color=color.white)
plot(smaRSI, "SMA RSI", color=color.white)


Plus de