BB21_SMA200 Tendance à la suite de la stratégie

Auteur:ChaoZhang est là., Date: 2023-11-16 11:04:42 Je vous en prie.
Les étiquettes:

img


Résumé

Cette stratégie combine les bandes de Bollinger et la moyenne mobile pour concevoir une tendance suivant le système de négociation. Elle va long lorsque le prix franchit la bande supérieure des bandes de Bollinger et que la bande inférieure est au-dessus de SMA200, ferme une position partielle lorsque le prix franchit la bande inférieure et sort toutes lorsque le prix franchit le niveau inférieur de SMA200.

La logique de la stratégie

  1. Calculer la SMA200 comme moyenne mobile exponentielle pour déterminer la tendance majeure
  2. Calculer les bandes de Bollinger, y compris la bande supérieure, la bande moyenne et la bande inférieure, et remplir la couleur comme gamme de bénéfices
  3. Lorsque les bandes supérieures et inférieures sont supérieures à SMA200, cela indique une tendance à la hausse.
  4. Lorsque le prix traverse la bande moyenne des bandes de Bollinger vers le haut, aller long
  5. Lorsque le prix franchit la bande inférieure vers le bas, fermer une position partielle
  6. Lorsque le prix dépasse le SMA200, il indique un renversement de la tendance majeure, fermez toutes les positions.
  7. Définir le point d'arrêt des pertes pour éviter des pertes excessives
  8. Calculer la taille de la transaction sur la base du capital du compte et du risque acceptable

La prémisse de cette stratégie pour identifier une tendance est que les bandes de Bollinger devraient être complètement au-dessus de la SMA200, et ne durer que lorsqu'une tendance haussière claire se présente.

Analyse des avantages

  1. Utiliser des bandes de Bollinger au lieu d'un seul indicateur pour identifier une tendance claire
  2. SMA200 détermine la direction de la tendance principale, évite les transactions inutiles sur le marché à plage
  3. L'exposition au risque de défaillance de l'entreprise
  4. Arrêt rapide des pertes sur les points clés pour minimiser les pertes
  5. Calculer la taille des transactions introduit une gestion des risques pour éviter des pertes excessives sur une seule transaction

Analyse des risques

  1. Les signaux de rupture générés par les bandes de Bollinger peuvent avoir des faux signaux relativement élevés
  2. Les points de stop loss partiels doivent être optimisés pour éviter un stop loss prématuré.
  3. Si le point d'arrêt des pertes est trop serré, le stop loss peut être déclenché trop fréquemment
  4. La période SMA doit être testée et optimisée pour équilibrer le retard et la sensibilité
  5. La méthode de calcul de la taille de la transaction peut nécessiter une optimisation pour éviter une taille excessive sur des transactions uniques

Ces risques pourraient être réduits en testant soigneusement les paramètres des bandes de Bollinger, en optimisant la stratégie de stop loss partiel, en ajustant la période SMA et en introduisant des méthodes de gestion des risques plus scientifiques.

Directions d'optimisation

  1. Tester et optimiser les paramètres des bandes de Bollinger pour réduire les faux signaux
  2. Rechercher comment définir des points de stop-loss partiels appropriés
  3. Testez la période optimale de SMA
  4. Considérez des arrêts adaptatifs au lieu de points d'arrêt fixes
  5. Étude utilisant une dimensionnement des positions basé sur la volatilité pour un calcul plus scientifique de la taille des transactions
  6. Test de retour avec les coûts de négociation pour simuler la négociation réelle
  7. Considérer la combinaison avec d'autres indicateurs pour améliorer la robustesse de la stratégie

Conclusion

Cette stratégie intègre les bandes de Bollinger et la SMA pour concevoir un système de suivi de tendance relativement complet. Elle est fiable pour identifier l'existence de tendance et possède une forte capacité de suivi de tendance. En optimisant en permanence la stratégie de stop loss, en réduisant les erreurs de signal et en introduisant des techniques scientifiques de gestion des risques, cette stratégie peut devenir un système utile à suivre dans le trading en direct.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © mohanee

//@version=4
strategy(title="BB9_MA200_Strategy", overlay=true, pyramiding=1,     default_qty_type=strategy.cash,  initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 


var stopLossVal=0.00

//variables BEGIN
smaLength=input(200,title="MA Length")
bbLength=input(21,title="BB Length")  

bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")


stopLoss = input(title="Stop Loss%", defval=5, minval=1)

riskCapital = input(title="Risk % of capital  == Based on this trade size is claculated    numberOfShares = (AvailableCapital*risk/100) / stopLossPoints", defval=10, minval=1)


sma200=ema(close,smaLength)

plot(sma200, title="SMA 200", color=color.orange)


//bollinger calculation
basis = sma(bbsrc, bbLength)
dev = mult * stdev(bbsrc, bbLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

//plot bb
plot(basis, "Basis", color=color.teal, style=plot.style_circles , offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=color.teal, transp=95)


strategy.initial_capital = 50000

//Entry---

strategy.entry(id="LE", comment="LE capital="+tostring(strategy.initial_capital + strategy.netprofit ,"######.##"), qty=( (strategy.initial_capital + strategy.netprofit ) * riskCapital / 100)/(close*stopLoss/100) , long=true,  when=strategy.position_size<1 and upperBand>sma200 and lowerBand > sma200 and crossover(close, basis) )     //  // aroonOsc<0  //(strategy.initial_capital * 0.10)/close


barcolor(color=strategy.position_size>=1? color.blue: na)

//partial Exit
tpVal=strategy.position_size>1 ? strategy.position_avg_price * (1+(stopLoss/100) ) : 0.00
strategy.close(id="LE", comment="Partial points="+tostring(close - strategy.position_avg_price, "####.##"),  qty_percent=30 , when=abs(strategy.position_size)>=1 and close>tpVal and crossunder(lowerBand, sma200)   )   //close<ema55 and rsi5Val<20 //ema34<ema55


//close All on stop loss
//stoploss
stopLossVal:=   strategy.position_size>1 ? strategy.position_avg_price * (1-(stopLoss/100) ) : 0.00

strategy.close_all( comment="SL Exit points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and close < stopLossVal  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89//

strategy.close_all( comment="BB9 X SMA200 points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and  crossunder(basis, sma200)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89
    

Plus de