Эта стратегия основана на верхних и нижних рельсах полос Боллинджера, чтобы определить, когда цена проходит через верхний рельс полос Боллинджера, чтобы пойти длинным, и проходит через нижний рельс, чтобы пойти коротким.
Эта стратегия использует средний / верхний / нижний рельс полос Боллинджера для определения экстремальных ценовых диапазонов. Средний рельс - это простая скользящая средняя цены закрытия за последние 25 периодов. Верхние и нижние рельсы представляют собой одно стандартное отклонение выше и ниже среднего рельса. Когда цена проходит через верхний или нижний рельс, это указывает на то, что существует прорыв и ненормальное поведение цен, которое может быть использовано для принятия торговых решений.
Если цена ниже нижней рельсы, займите длинную позицию. Если цена выше верхней рельсы, займите короткую позицию. При покупке длинной позиции, установите стоп-лосс на цену входа умноженную на коэффициент стоп-лосса и получите прибыль на цену входа умноженную на коэффициент получения прибыли.
Стратегия также включает в себя некоторые дополнительные правила, такие как разрешение только на один сигнал в течение 24 часов, чтобы избежать ненужной торговли.
Управление рисками:
Подводя итог, это простая стратегия отслеживания трендов с использованием полос Боллинджера для определения ненормальных цен и отслеживания тенденций.
/*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")