Stratégie de retournement basée sur l'indicateur RSI multi-périodes


Date de création: 2023-09-14 20:42:55 Dernière modification: 2023-09-14 20:42:55
Copier: 1 Nombre de clics: 735
1
Suivre
1617
Abonnés

Cet article détaille une stratégie de trading quantitatif qui utilise le RSI à plusieurs cycles pour déterminer le point de basculement. Cette stratégie analyse simultanément plusieurs RSI pour identifier la formation du point de basculement du marché.

Premièrement, les principes stratégiques

La stratégie utilise 3 ensembles d’indicateurs RSI avec différents paramètres, selon la logique suivante:

  1. Calculer les valeurs RSI pour les cycles 2, 7 et 14 respectivement;

  2. le RSI-2 est inférieur à 10, le RSI-7 est inférieur à 20 et le RSI-14 est inférieur à 30;

  3. Le RSI-2 est supérieur à 90, le RSI-7 est supérieur à 80 et le RSI-14 est supérieur à 70.

  4. Le RSI est un indicateur de convergence qui génère des signaux d’achat et de vente.

  5. Les paramètres de l’indicateur de cohérence peuvent être prédéfinis pour contrôler la fréquence du signal.

Ainsi, l’analyse collective des indicateurs RSI pluricycliques peut améliorer l’exactitude de la détermination du point de retournement.

Deux, les avantages stratégiques

Le plus grand avantage de cette stratégie est l’utilisation d’indicateurs RSI pluricycliques pour l’analyse des ensembles, ce qui peut améliorer l’exactitude des jugements sur les points clés et éliminer les faux signaux.

Un autre avantage est qu’il est possible d’adapter la fréquence des transactions à différents environnements de marché en ajustant les paramètres de cohérence.

Enfin, la combinaison de RSI à différentes périodes offre également plus d’espace de paramètres à optimiser.

Troisièmement, les risques potentiels

Mais cette stratégie comporte aussi les risques suivants:

Tout d’abord, le jugement du RSI sur le renversement des prix est lui-même retardé.

Deuxièmement, il est difficile de détecter les signaux générés par des combinaisons d’indicateurs multiples, ce qui nécessite de définir des règles de filtrage claires.

Enfin, le trading inverse est une stratégie qui implique une certaine probabilité d’échec, ce qui nécessite une préparation psychologique.

Quatrième partie, résumé

Cet article présente en détail une stratégie de trading quantitatif basée sur l’indicateur RSI à plusieurs périodes pour identifier les points de basculement. Elle améliore la capacité d’identification des points de basculement du marché en jugeant la cohérence de l’indicateur RSI. Mais elle nécessite également la prévention des problèmes de retard et des erreurs de jugement des signaux.

Code source de la stratégie
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Triple RSI Top/Bottom v1.1", shorttitle = "3RSI Top/Bottom 1.1", 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")
leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
indi = input(3, defval = 3, minval = 1, maxval = 3, title = "Indicators")
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))

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
acc = 10 - accuracy
signalup1 = fastrsi < (5 + acc) ? 1 : 0
signalup2 = middlersi < (10 + acc * 2) ? 1 : 0
signalup3 = slowrsi < (15 + acc * 3) ? 1 : 0

signaldn1 = fastrsi > (95 - acc) ? 1 : 0
signaldn2 = middlersi > (90 - acc * 2) ? 1 : 0
signaldn3 = slowrsi > (85 - acc * 3) ? 1 : 0

up = signalup1 + signalup2 + signalup3 >= indi
dn = signaldn1 + signaldn2 + signaldn3 >= indi
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 3

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1]

if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : lot)
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()