
Эта стратегия основана на восходящей и нисходящей траектории буринской полосы, которая определяет, что цена делает больше, когда она прорывает буринскую полосу на восходящей траектории, и делает меньше, когда она прорывает нижнюю траекторию, и относится к типу стратегии отслеживания тенденции.
Стратегия использует среднюю, верхнюю и нижнюю полосы в поясе Бринна для определения крайних ценовых диапазонов. Средняя полоса представляет собой простое скользящее среднее ценового отсчета за последние 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")