Stratégie de négociation quantitative basée sur le RSI de régression linéaire

Auteur:ChaoZhang est là., Date: 2024-01-24 11h35 et 19h
Les étiquettes:

img

Résumé

Cette stratégie est conçue sur la base de l'indicateur RSI de régression linéaire. Elle génère des signaux d'achat et de vente en calculant le croisement entre le RSI de régression linéaire et l'EMA. La stratégie fournit également deux options pour la logique d'achat qui peuvent être sélectionnées au besoin.

La logique de la stratégie

La stratégie calcule d'abord une régression linéaire de 200 périodes, puis calcule un RSI de 21 périodes basé sur le résultat de la régression linéaire. Après cela, une EMA de 50 périodes est calculée.

La stratégie propose deux types de logique d'achat:

  1. Acheter lorsque le RSI dépasse la EMA
  2. Acheter lorsque le RSI est au-dessus de la EMA et aussi au-dessus de la ligne de surachat

La logique d'achat appropriée peut être choisie en fonction des conditions du marché.

Analyse des avantages

Cette stratégie combine les atouts de la régression linéaire RSI et de l'EMA, ce qui filtre efficacement certains bruits de prix et génère des signaux de trading plus fiables.

Le RSI de régression linéaire capture mieux la tendance, et l'EMA aide à identifier les points de basculement.

La stratégie prévoit deux logiques d'achat facultatives pour plus de flexibilité pour s'adapter aux différentes étapes du marché.

Analyse des risques

Le principal risque de cette stratégie réside dans le changement potentiel de la relation entre le RSI et l'EMA, ce qui peut conduire à des signaux de trading incorrects.

En outre, le retard de l'indicateur RSI et de l'indicateur EMA peut également entraîner certains retards dans les entrées et les sorties, ne permettant pas de saisir parfaitement les points tournants.

Pour atténuer les risques, des paramètres tels que les longueurs du RSI et de l'EMA peuvent être optimisés pour une meilleure coordination entre les deux.

Directions d'amélioration

La stratégie peut être améliorée par les aspects suivants:

  1. Optimiser les longueurs de régression linéaire RSI et EMA pour trouver les meilleures combinaisons de paramètres
  2. Ajoutez d'autres indicateurs tels que le MACD, les bandes de Bollinger, etc. pour améliorer la qualité du signal
  3. Incorporer des indicateurs de volatilité pour ajuster la taille des positions
  4. Utiliser des techniques d'apprentissage automatique pour optimiser automatiquement les paramètres

Conclusion

Cette stratégie conçoit une stratégie de renversement moyen basée sur la régression linéaire RSI et EMA, identifiant les opportunités de renversement dans les plages en examinant les croisements RSI-EMA. Elle fournit également deux logiques d'achat optionnelles pour la flexibilité d'adaptation à différents marchés. Dans l'ensemble, en combinant plusieurs indicateurs, la stratégie peut effectivement détecter les chances de renversement. Avec l'ajustement des paramètres et des filtres supplémentaires, elle a le potentiel de meilleures performances.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Linear RSI")

startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() => true

//inputs
length = input(defval=200, minval=1, title="LR length")
length2 = input(defval=21, minval=1, title="RSI length")
ema_fast = input(defval=50, minval=1, title="EMA")
lag = 0

overBought = input(50)
overSold = input(50)


//rsi
src = close
Lr = linreg(src, length, lag)
rsi = rsi(Lr, length2)
ema = ema(rsi, ema_fast)

plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver)
plot(overBought, color=color.purple)
plot(overSold, color=color.purple)
plot(ema, color=color.blue)

first_type = input(true, title="Use first logic?")
second_type =  input(false, title="Use second logic?")

long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false)
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition = crossunder(rsi, ema)
strategy.close('BUY', when=short_condition)

Plus de