Stratégie de négociation d'indices basée sur des bandes de Bollinger

Auteur:ChaoZhang est là., Date: 2023-12-08 16:52:24 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie s'appelle Quant Trading Strategy Based on Bollinger Bands. C'est une stratégie de négociation d'indices et d'actions basée sur un canal amélioré de Bollinger Bands. En ajustant les paramètres de Bollinger Bands, elle réalise l'optimisation pour les positions longues et courtes afin de réaliser des bénéfices sur les marchés à tendance haussière et à tendance baissière.

Logique de négociation

La logique de base de cette stratégie est basée sur le canal des bandes de Bollinger, qui se compose de la ligne moyenne, de la bande supérieure et de la bande inférieure. La ligne moyenne est la moyenne mobile du prix de clôture pendant n jours. Les bandes supérieure et inférieure sont des écarts au-dessus et en dessous de la ligne moyenne. Lorsque le prix approche de la bande supérieure, cela indique que le marché peut être surchauffé et qu'il peut y avoir des opportunités courtes. Lorsque le prix approche de la bande inférieure, cela indique que le marché peut être sous-évalué et qu'il peut y avoir des opportunités longues.

Cette stratégie utilise deux bandes de Bollinger. La bande de Bollinger 1 convient aux transactions longues et la bande de Bollinger 2 convient aux transactions courtes. Les paramètres de la bande de Bollinger 1 sont optimisés avec une longueur de 25 et un écart de 2,9 fois. Les paramètres de la bande de Bollinger 2 sont optimisés avec une longueur de 36 et un écart de 3,2 fois. Lorsque le prix de clôture franchit la bande inférieure de la bande de Bollinger 1, il générera un signal long. Lorsque le prix de clôture franchit la bande supérieure de la bande de Bollinger 2, il générera un signal court.

Analyse des avantages

Comparée aux stratégies traditionnelles de Bollinger Bands, cette stratégie présente les avantages suivants:

  1. Il réalise des transactions bidirectionnelles pour les deux côtés long et court, qui peuvent saisir les opportunités de négociation dans les différentes étapes du marché.

  2. Les deux ensembles de paramètres Bollinger Bands sont testés de manière élaborée pour générer efficacement des signaux de trading.

  3. Le risque est contrôlable. La méthode de stop loss mobile peut contrôler efficacement le risque d'un côté.

Analyse des risques

Il existe également des risques potentiels pour cette stratégie:

  1. Le risque d'invalidité des bandes de Bollinger peut devenir invalide en cas de fluctuation extrême du marché.

  2. Le risque d'arrêt de perte peut être atteint. Nous pouvons élargir correctement le stop loss ou le stop out en temps opportun pour éviter ce risque.

  3. Risque de fréquence de négociation élevée: des paramètres trop sensibles pourraient entraîner une fréquence de négociation et une augmentation des coûts de négociation.

Directions d'optimisation

Il reste encore des possibilités d'optimisation de cette stratégie:

  1. Combinez d'autres indicateurs pour filtrer les signaux et éviter les mauvaises transactions lorsque les bandes de Bollinger échouent.

  2. Ajustez dynamiquement les paramètres pour qu'ils correspondent aux caractéristiques du marché de différentes périodes.

  3. Optimiser les méthodes d'arrêt des pertes en utilisant un arrêt des pertes de trailing ou un arrêt des pertes de déplacement exponentiel pour contrôler efficacement les risques.

  4. Combinez des algorithmes d'apprentissage automatique pour optimiser automatiquement les paramètres.

Résumé

En résumé, cette stratégie optimise globalement le trading bidirectionnel pour les deux côtés longs et courts basé sur le double canal et l'optimisation des paramètres des bandes de Bollinger. Par rapport aux stratégies traditionnelles de bandes de Bollinger, elle présente les avantages du trading bidirectionnel et du contrôle des risques. Elle convient à la saisie d'opportunités à différentes étapes du marché et a une certaine valeur pratique. Mais des risques tels que l'échec des bandes de Bollinger et le fait d'être frappé par un stop loss existent toujours.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy("BB NDX strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.01)

source = close
length = input(25, minval=1, title="Length BB long")
mult = input(2.9, minval=0.001, maxval=50, step=0.1, title="MULT BB long")

length2 = input(36, minval=1, title="Length BB short")
mult2 = input(3.2, minval=0.001, maxval=50, step=0.1, title="MULT BB short")


basis = sma(source, length)
dev = mult * stdev(source, length)
dev2 = mult2 * stdev(source, length2)

upper = basis + dev2
lower = basis - dev

buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper)

longEntry=input(true)
shortEntry=input(true)

g(v, p) => round(v * (pow(10, p))) / pow(10, p)
risk     = input(100)
leverage = input(1.0, step = 0.5)
c = g((strategy.equity * leverage / open) * (risk / 100), 4)


tplong=input(0.065, step=0.005, title="Take profit % for long")
sllong=input(0.04, step=0.005, title="Stop loss % for long")
tpshort=input(0.025, step=0.005, title="Take profit % for short")
slshort=input(0.04, step=0.005, title="Stop loss % for short")

if(longEntry)
    strategy.entry("long",1,c,when=buyEntry)
    strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closeshort')
    strategy.close("long",when=sellEntry)
if(shortEntry)
    strategy.entry("short",0,c,when=sellEntry)
    strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')
    strategy.close("short",when=buyEntry)




Plus de