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:
Les valeurs RSI sont calculées pour les périodes 2, 7 et 14 respectivement.
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é.
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é.
Générer des signaux d'achat/vente basés sur l'unanimité du RSI.
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()