Stratégie de négociation de rupture de la bande de Bollinger

Auteur:ChaoZhang est là., Date: 2023-12-19 14:08:45 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est basée sur les rails supérieur et inférieur des bandes de Bollinger pour déterminer quand le prix traverse le rail supérieur des bandes de Bollinger pour aller long et traverse le rail inférieur pour aller court.

La logique de la stratégie

Cette stratégie utilise le rail moyen / supérieur / inférieur des bandes de Bollinger pour déterminer les plages de prix extrêmes. Le rail du milieu est la moyenne mobile simple des prix de clôture au cours des 25 dernières périodes. Les rails supérieur et inférieur sont un écart type au-dessus et au-dessous du rail du milieu. Lorsque le prix traverse le rail supérieur ou inférieur, cela indique qu'il y a une rupture et un comportement anormal des prix, qui peut être utilisé pour prendre des décisions de trading.

Si le prix est en dessous du rail inférieur, allez long. Si le prix est au-dessus du rail supérieur, allez court. Lorsque vous allez long, définissez le stop loss au prix d'entrée multiplié par le facteur de stop loss et prenez profit au prix d'entrée multiplié par le facteur de profit.

La stratégie intègre également certaines règles auxiliaires, telles que l'autorisation d'un seul signal par 24 heures afin d'éviter les transactions inutiles.

Les avantages de la stratégie

  1. L'utilisation de bandes de Bollinger pour déterminer des fourchettes de prix anormales appartient aux stratégies de suivi des tendances qui peuvent capturer les tendances des prix.
  2. Les paramètres d'arrêt des pertes et de prise de profit sont établis selon des principes visant à contrôler les pertes uniques.
  3. Certaines règles auxiliaires sont ajoutées pour éviter les signaux en double et les transactions inutiles.

Risques liés à la stratégie

  1. Les bandes de Bollinger ne peuvent pas représenter pleinement les tendances des prix, et il peut y avoir de faux signaux.
  2. Un mauvais timing des signaux peut entraîner des pertes.
  3. La durée et l'élan des marchés tendance ou non tendance sont difficiles à prévoir, ce qui peut entraîner des positions longues inutiles.

Gestion des risques:

  1. Ajustez les paramètres de la bande de Bollinger pour optimiser le timing du signal de rupture.
  2. Incorporer d'autres indicateurs pour déterminer la tendance principale.
  3. Définir la fourchette Stop Loss et Take Profit en fonction des différents produits et conditions du marché.

Directions d'optimisation

  1. Considérez l'optimisation adaptative des paramètres de la bande de Bollinger pour les adapter mieux aux conditions actuelles du marché.
  2. Incorporer d'autres indicateurs pour juger de la fiabilité des signaux de tendance et éviter les faux signaux.
  3. Incorporer des modèles d'apprentissage automatique pour identifier automatiquement les temps optimum long et court.

Conclusion

En résumé, il s'agit d'une stratégie de suivi de tendance simple utilisant des bandes de Bollinger pour déterminer les prix anormaux et suivre les tendances.


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

//@version=5
strategy("I11L OIL Bot",overlay=true, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)

leverage = input.float(1,"Leverage (x)",step=1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade (%)", minval=0.1, maxval=100, step=0.05) / 100 / leverage
TP_Factor = input.float(2, step=0.1)
invertBuyLogic = input.bool(false)
 
lookbackDistance = input.int(25)
devMult = input.float(2,step=0.1)

var lastSellHour = 0
var disableAdditionalBuysThisDay = false


if(time > lastSellHour + 1000 * 60 * 60 * 6)
    disableAdditionalBuysThisDay := false
if(strategy.position_size != strategy.position_size[1])
    disableAdditionalBuysThisDay := true
    lastSellHour := time

source = close

//Trade Logic
basis = ta.sma(source, lookbackDistance)
dev = devMult * ta.stdev(source, lookbackDistance)
upper = basis + dev
lower = basis - dev
isBuy = ta.crossunder(source, upper)
isBuyInverted = ta.crossover(source, lower)

plot(upper, color=color.white)
plot(lower, color=color.white)

strategy.initial_capital = 50000

if((invertBuyLogic ? isBuyInverted : isBuy) and not(disableAdditionalBuysThisDay))
    strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)

if(strategy.position_size > 0)
    strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * SL_Factor)
    strategy.close("Long",  when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TP_Factor), comment="TP Long")





Plus de