Stratégie de croisement entre les bandes de Bollinger et l'indicateur Hull

Auteur:ChaoZhang est là., Date: 2023-12-08 11:58:07 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie génère des signaux de trading basés sur le croisement entre les bandes de Bollinger et l'indicateur de Hull. Elle devient longue lorsque l'indicateur de Hull traverse au-dessus de la bande inférieure des bandes de Bollinger, et devient courte lorsque l'indicateur de Hull traverse au-dessous de la bande supérieure des bandes de Bollinger.

Principaux

La stratégie utilise principalement le croisement entre les bandes de Bollinger et l'indicateur Hull pour générer des signaux de négociation.

Les bandes de Bollinger contiennent trois lignes: la ligne moyenne, la ligne supérieure et la ligne inférieure. La ligne moyenne est la moyenne mobile de N jours, tandis que les lignes supérieure et inférieure sont la ligne moyenne ± écart type. Si le prix franchit la ligne supérieure, cela indique une opportunité de percée; si le prix franchit la ligne inférieure, cela indique une opportunité de rappel.

L'indicateur Hull est un indicateur de tendance. Il utilise la différence entre deux moyennes mobiles pondérées de différentes périodes pour déterminer la tendance actuelle. Si la moyenne mobile à courte période est supérieure à la moyenne mobile à longue période, elle indique une tendance haussière, et vice versa.

La stratégie combine les forces des deux indicateurs. Lorsque l'indicateur Hull traverse au-dessus de la bande inférieure des bandes de Bollinger, il est considéré que le prix de l'action peut entrer dans une tendance haussière, donc aller long. Lorsque l'indicateur Hull traverse au-dessous de la bande supérieure, il est considéré que le prix de l'action peut entrer dans un callback à la baisse, donc aller court.

Les avantages

  1. Combine les atouts des bandes de Bollinger et de l'indicateur Hull pour rendre les signaux de trading plus fiables.

  2. Utilise l'indicateur Hull pour déterminer la direction de la tendance et les bandes de Bollinger pour déterminer les niveaux de support/résistance, générant des signaux croisés pour améliorer la rentabilité.

  3. Les paramètres des deux indicateurs peuvent être optimisés pour les stocks de cycles différents afin d'élargir leur applicabilité.

Risques et solutions

  1. La stratégie peut générer plus de faux signaux pendant les mouvements de portée, provoquant des pertes.

  2. Les prix peuvent fluctuer violemment, ce qui entraîne l'émission simultanée de signaux par les deux indicateurs. Assurez-vous de la séquence des signaux pour éviter un jugement erroné du signal croisé.

  3. La stratégie définit directement la taille de la position à 100%. Dans le déploiement réel, la taille de la position doit être ajustée pour éviter des pertes grossis dues à une ouverture complète de la position.

Directions d'optimisation

  1. Tester et optimiser les paramètres des deux indicateurs pour s'adapter à un plus grand nombre de cycles boursiers.

  2. Ajoutez des filtres tels que le volume des transactions ou la volatilité pour éviter de mauvais signaux lors de la consolidation.

  3. Optimiser les stratégies de stop loss en définissant des ordres de stop loss ou de stop limit.

  4. Ajuster les règles de dimensionnement de la position en ajoutant des conditions de réentrée pour éviter l'agrandissement des pertes.

Conclusion

Cette stratégie combine la stratégie de rupture des bandes de Bollinger et la stratégie de suivi de tendance de l'indicateur Hull en utilisant des signaux croisés entre eux pour obtenir à la fois des effets de suivi de tendance et de rupture.


/*backtest
start: 2023-11-30 00:00:00
end: 2023-12-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=3
strategy(title="Strategy Hull Bollinger", shorttitle="Hull bollinger",overlay=true, calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=false)

n=input(title="period",defval=3)


n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))


n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))


n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red

i = input(1)
PP = close[i]

length1 = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=10, step=0.2)
basis = sma(src, length1)
dev = mult * stdev(src, length1)
upper = basis + dev
lower = basis - dev


TP = input(500) * 10
SL = input(500) * 10
TS = input(20) * 10
TO = input(10) * 10
CQ = 100

TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
TOP = (TO > 0) ? TO : na

longCondition = crossover(n1,lower)
if (longCondition)
    strategy.entry("Long", strategy.long)


shortCondition = crossunder(n1,upper)
if (shortCondition)
    strategy.entry("Short", strategy.short)

strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)
strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)

Plus de