Эта стратегия использует полосы Боллинджера в сочетании с индикатором ATR и линиями EMA для определения сигналов. Она генерирует сигналы покупки, когда цена проходит через верхнюю полосу Боллинджера и быстро пересекает линию EMA. Она генерирует сигналы продажи, когда цена проходит через нижнюю полосу Боллинджера и быстро пересекает линию EMA.
Вычислите среднюю линию Боллинджера, верхнюю полосу и нижнюю полосу.стандартное отклонение n-периода, нижняя полоса - средняя линия - mстандартное отклонение n периодов.
Вычислить индикатор ATR для отслеживания стоп-лосса.
Для определения динамики цен вычислить 1-периодные и n-периодные линии EMA.
Когда цена быстро пересекает верхнюю полосу Боллинджера и линию EMA, генерируется сигнал покупки.
Когда цена быстро пересекает нижнюю полосу Боллинджера и линию EMA, генерируется сигнал продажи.
Индикатор ATR устанавливает точки остановки потери, отслеживая направление прорыва цены, чтобы избежать ловушки.
Болинджерские полосы в сочетании с ATR стоп-лосс могут эффективно контролировать риск.
Быстрые и медленные линии EMA определяют направление импульса, избегая ложного прорыва.
Регулируемые параметры подходят для различных рыночных условий.
Ясные сигналы покупки/продажи с высокой частотой торговли, подходящие для краткосрочной торговли.
Индикатор ATR своевременно отслеживает остановку потерь.
Узкий диапазон полос Боллинджера может привести к более шумным сделкам.
Параметр ATR, установленный слишком низким, может привести к слишком близкой потере остановки, что приведет к задержанию.
Параметры EMA требуют корректировки для различных эффектов цикла.
Оциллирующий рынок может привести к большему количеству сделок, нужно быть осторожным.
Отслеживание стоп-лосса иногда может быть слишком агрессивным, вызывая расширение потерь.
Комбинировать с другими индикаторами для фильтрации торговых сигналов, например, RSI для перекупленных/перепроданных, KDJ для дивергенции и т.д.
Подумайте о динамической корректировке параметров Боллинджера на основе ATR в соответствии с колебаниями цен.
Испытать различные параметры цикла EMA для наилучшей комбинации параметров.
Интеллектуальная корректировка параметров ATR на основе волатильности, чтобы избежать агрессивного стоп-лосса.
Подумайте о включении моделей глубокого обучения, чтобы помочь в принятии решений о покупке/продаже.
Эта стратегия имеет четкую логику, используя полосы Боллинджера для улавливания ценового прорыва, ATR для установки диапазона стоп-лосса, EMA для определения направления импульса для комплексного суждения о прорыве импульса, который может эффективно улавливать краткосрочные ценовые тенденции. Сочетание нескольких индикаторов для комплексного суждения может улучшить качество сигнала.
/*backtest start: 2022-11-07 00:00:00 end: 2023-11-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="UT Bot Strategy", overlay = true) //CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. // Inputs a = input(1, title = "Key Vaule. 'This changes the sensitivity'") c = input(10, title = "ATR Period") h = input(false, title = "Signals from Heikin Ashi Candles") src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close length = input(20, minval=1) mult = input(2.0, minval=0.001, maxval=50, title="StdDev") basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev bbr = (src - lower)/(upper - lower) // plot(bbr, "Bollinger Bands %B", color=#26A69A) // band1 = hline(1, "Overbought", color=#787B86, linestyle=hline.style_dashed) // hline(0.5, "Middle Band", color=color.new(#787B86, 50)) // band0 = hline(0, "Oversold", color=#787B86, linestyle=hline.style_dashed) // fill(band1, band0, color=color.rgb(38, 166, 154, 90), title="Background") xATR = atr(c) nLoss = a * xATR xATRTrailingStop = 0.0 xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss), iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1, iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue ema = ema(src,1) emaFast = ema(src,144) emaSlow = ema(src,576) sma = sma(src, c) above = crossover(ema, xATRTrailingStop) below = crossover(xATRTrailingStop, ema) smaabove = crossover(src, sma) smabelow = crossover(sma, src) buy = src > xATRTrailingStop and above and (bbr>20 or bbr<80) sell = src < xATRTrailingStop and below and (bbr>20 or bbr<80) // buy = src > xATRTrailingStop // sell = src < xATRTrailingStop barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop // plot(emaFast , color = color.rgb(243, 206, 127), title="emaFast") plot(xATRTrailingStop, color = color.rgb(233, 233, 232), title="xATRTrailingStop") plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) // plotshape(buy, title = "Sell", text = 'Sell', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) // plotshape(sell, title = "buy", text = 'buy', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) // strategy.entry("short", false, when = buy) // strategy.entry("long ", true, when = sell) strategy.entry("long", true, when = buy) strategy.entry("short ", false, when = sell)