Cette stratégie est basée sur une moyenne mobile unique et l'indicateur Bollinger Bands. Elle génère des signaux d'achat et de vente lorsque le prix franchit la bande supérieure ou inférieure des bandes de Bollinger. Elle intègre également la direction de la moyenne mobile pour déterminer la tendance, ne prenant que longtemps lorsque MA est en hausse et court lorsque MA est en baisse.
La stratégie utilise principalement les indicateurs suivants pour le jugement:
Les signaux de trading spécifiques sont les suivants:
En combinant la tendance et la rupture, le signal de trading devient plus fiable et évite une fausse rupture.
En général, c'est une stratégie simple mais pratique adaptée à la plupart des gens. Avec quelques ajustements et optimisations, elle peut être plus robuste et adaptable à plus de situations de marché.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-18 19:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD") s=input(title="s",defval=90) p=input(title="p",type=float,defval=.9,step=.1) sa=sma(close,s) plot(sa,color=red,linewidth=3) band=stdev(close,s)*p plot(band+sa,color=lime,title="") plot(-band+sa,color=lime,title="") // ===Strategy Orders============================================= ======== inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na longCondition = crossover(close,sa+band) and rising(sa,5) shortCondition = crossunder(close,sa-band) and falling(sa,5) crossmid = cross(close,sa) strategy.entry(id = "Long", long=true, when = longCondition) strategy.close(id = "Long", when = shortCondition) strategy.entry(id = "Short", long=false, when = shortCondition) strategy.close(id = "Short", when = longCondition) strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)