La stratégie quantitative DPD-RSI-BB combine trois indicateurs - DPD, RSI et Bollinger Bands pour le trading d'actions.
La stratégie est composée des principales composantes suivantes:
Indicateur DPD pour déterminer la tendance
Il construit la ligne DEMA en utilisant des moyennes doubles EMA et calcule le pourcentage de différence de prix par rapport à DEMA comme indicateur de détermination de tendance.
Indicateur RSI pour juger des conditions de surachat et de survente
Il calcule la valeur du RSI sur une certaine période. Le RSI supérieur à la limite supérieure est jugé comme une zone de surachat et le RSI inférieur à la limite inférieure est jugé comme une zone de survente.
Bandes de Bollinger pour identifier le support et la résistance
Il calcule la bande moyenne, la bande supérieure et la bande inférieure sur une certaine période.
Décision globale
Lorsque le pourcentage de différence de prix DPD est inférieur au seuil, le RSI est inférieur à la limite inférieure de la zone de survente et le prix est inférieur à la bande supérieure de Bollinger, un signal haussier est généré.
La stratégie présente les avantages suivants:
Un jugement global fondé sur plusieurs indicateurs évite de recevoir de faux signaux d'un seul indicateur.
L'utilisation de l'indicateur RSI pour juger des conditions de surachat et de survente permet de définir à l'avance des points de stop loss et de profit.
L'indicateur DPD permet de mieux déterminer les tendances des prix, tandis que les bandes de Bollinger permettent d'identifier les niveaux de support et de résistance.
Des paramètres flexibles permettent des optimisations pour différents stocks.
La stratégie comporte également certains risques:
La combinaison de multiples indicateurs rend la stratégie assez complexe avec des difficultés de réglage des paramètres.
Les indicateurs tels que le DPD et le RSI présentent certains délais, qui peuvent manquer le meilleur moment d'entrée.
Les paramètres doivent être optimisés en fonction des différents cycles et des caractéristiques des stocks.
Les aspects suivants peuvent être optimisés:
Ajustez les paramètres des indicateurs pour optimiser les points d'entrée et de sortie.
Ajouter des mécanismes de stop loss pour un contrôle strict par perte de transaction.
Test sur différents stocks et paramètres de cycle pour évaluer le rendement de la stratégie.
La stratégie DPD-RSI-BB combine plusieurs indicateurs pour les jugements afin d'éviter les faux signaux d'un seul indicateur. Grâce à l'optimisation des paramètres, elle peut devenir une stratégie de négociation d'actions relativement forte. Mais en raison de sa complexité, elle peut toujours ne pas couvrir complètement les risques du marché et doit être utilisée avec prudence.
/*backtest start: 2023-11-14 00:00:00 end: 2023-11-21 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version= 2 strategy("DPD+RSI+BB ",overlay=true) price=close //############### DPD ################# buyper =input(-1,step=0.1) sellper=input(0,step=0.1) demalen = input(50,title="Dema Length") e1= ema(close,demalen) e2=ema(e1,demalen) demaprice = 2 * e1 - e2 demadifper = ((price-demaprice)/price)*100 //############## DPD ##################### //############# RSI #################### lengthrsi = input(6) overSold = input( 20 ) overBought = input( 60 ) vrsi = rsi(price, lengthrsi) //########## RSI ####################### //############### BB ################# lengthbb = input(50, minval=1) multlow = input(1.5, minval=0.001, maxval=50,step=0.1) multup = input(1.5,minval=0.001,maxval=50,step=0.1) basisup = sma(close, lengthbb) basislow = sma(close, lengthbb) devup = multup * stdev(close, lengthbb) devlow = multlow*stdev(close,lengthbb) upperbb = basisup + devup lowerbb = basislow - devlow p1 = plot(upperbb, color=blue) p2 = plot(lowerbb, color=blue) fill(p1, p2) //########### BB ################### yearfrom = input(2018) yearuntil =input(2039) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( (demadifper<buyper) and crossover(vrsi,overSold) and (price < upperbb) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( price>upperbb and vrsi>overBought and demadifper>sellper and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL") else strategy.cancel(id="SELL")