Stratégie de négociation de renversement basée sur l'indice RSI à plusieurs périodes

Auteur:ChaoZhang est là., Date: le 14 septembre 2023 à 20h42h55
Les étiquettes:

Cet article explique en détail une stratégie de trading quantitative qui utilise des indicateurs RSI multipériodiques pour identifier les points d'inversion.

I. Logique stratégique

La stratégie utilise 3 groupes d'indicateurs RSI avec différents paramètres:

  1. Les valeurs RSI sont calculées pour les périodes 2, 7 et 14 respectivement.

  2. Lorsque le RSI-2 est inférieur à 10, le RSI-7 inférieur à 20 et le RSI-14 inférieur à 30, un fond est identifié.

  3. Lorsque le RSI-2 est supérieur à 90, le RSI-7 supérieur à 80 et le RSI-14 supérieur à 70, un sommet est identifié.

  4. Générer des signaux d'achat/vente basés sur l'unanimité du RSI.

  5. Paramètres réglables prédéfinis pour le consensus des indicateurs, contrôle de la fréquence du signal.

En analysant collectivement les indicateurs RSI à travers les périodes, la précision du point d'inversion peut être améliorée.

II. Avantages de la stratégie

Le plus grand avantage est que l'utilisation d'une analyse RSI sur plusieurs délais améliore l'identification des points clés et filtre les faux signaux.

Un autre avantage est la flexibilité d'ajustement des paramètres de consensus et d'adaptation aux différents environnements du marché.

Enfin, les combinaisons RSI offrent également plus d'options de réglage.

III. Risques potentiels

Cependant, les risques suivants existent:

Tout d'abord, l'indicateur RSI lui-même a un retard inhérent dans l'identification des renversements.

Deuxièmement, les indicateurs multiples introduisent une ambiguïté des signaux qui nécessite des règles claires.

Enfin, les opérations de renversement ont un taux d'échec qui nécessite une préparation psychologique.

IV. Résumé

En résumé, cet article a expliqué une stratégie quantitative d'identification des renversements basée sur l'analyse RSI multi-période. Il améliore la reconnaissance des points tournants du marché en jugeant l'unanimité RSI. Mais les risques tels que le retard et les mauvais signaux doivent être gérés. Dans l'ensemble, il fournit une approche d'optimisation de la stratégie RSI flexible.


/*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()

Plus de