Stratégie de négociation à triple RSI extrême

Auteur:ChaoZhang est là., Date: 2023-11-02 14h34 et 21h
Les étiquettes:

img

Résumé

Cette stratégie utilise trois indicateurs RSI avec des périodes différentes pour déterminer si le marché a atteint des niveaux extrêmement surachetés ou survendus, et génère des signaux d'achat et de vente en conséquence.

La logique de la stratégie

La stratégie utilise simultanément des indicateurs RSI à 2 périodes, 7 périodes et 14 périodes.

Plus précisément, lorsque le RSI à 2 périodes est inférieur à 10, le RSI à 7 périodes est inférieur à 20 et le RSI à 14 périodes est inférieur à 30, le marché est considéré comme survendu et un signal d'achat est généré.

Le code utilise un paramètre de précision pour affiner les valeurs seuil de surachat/survente de l'indicateur RSI. Le défaut est 3, et des valeurs inférieures signifient des critères de surachat/survente plus stricts.

Lorsqu'un signal d'achat ou de vente est généré, si le prix s'inverse et dépasse le prix d'ouverture de la journée, la position actuelle sera fermée pour réaliser des profits ou réduire les pertes.

Analyse des avantages

  • L'utilisation d'une combinaison d'indicateurs RSI multipériodiques permet d'identifier plus précisément les conditions de surachat/survente et de filtrer les faux signaux.

  • Un ajustement des critères de surachat/survente avec des paramètres différents permet d'ajuster la sensibilité de la stratégie en fonction des conditions du marché.

  • La mise en œuvre d'arrêts de suivi des prix ouverts aide à verrouiller les bénéfices en temps opportun.

Analyse des risques

  • Les indicateurs RSI sont sujets à divergence, ce qui n'est pas efficace pour identifier les renversements de tendance.

  • Pour les périodes de forte volatilité, les paramètres du RSI doivent être ajustés, sinon il peut déclencher des arrêts trop fréquents.

  • Les signaux RSI triples déclenchés ensemble sont rares, ce qui peut manquer de bonnes opportunités de trading.

  • Les paramètres des critères de surachat/survente devraient être ajustés et testés sur différents marchés.

Directions d'optimisation

  • Il convient d'envisager d'ajouter d'autres indicateurs de confirmation, tels que les bandes de Bollinger, KDJ, etc., afin d'éviter les divergences du RSI.

  • Optimiser automatiquement les paramètres de l'indice de résistance basés sur différents régimes de marché.

  • Testez d'autres conditions de sortie d'arrêt, telles que les arrêts ATR.

  • Ajoutez des filtres pour éviter de négocier pendant les périodes inappropriées.

Conclusion

Cette stratégie identifie les zones de surachat/survente en utilisant une combinaison d'indicateurs RSI multipériodiques et implémente des arrêts de suivi de tendance. Les avantages incluent l'amélioration de la précision, l'arrêt rapide; Les inconvénients incluent les transactions manquantes, les mauvais jugements du RSI.


/*backtest
start: 2023-10-25 00:00:00
end: 2023-10-28 10:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Triple RSI Top/Bottom", shorttitle = "3RSI Top/Bottom", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")


//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))

//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
acc = 10 - accuracy
up = fastrsi < (5 + acc) and middlersi < (10 + acc * 2) and slowrsi < (15 + acc * 3)
dn = fastrsi > (95 - acc) and middlersi > (90 - acc * 2) and slowrsi > (85 - acc * 3)
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size > 0 and close > open)

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Plus de