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.
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.
Gestion des risques:
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")