Стратегия торговли прорывом импульса


Дата создания: 2023-11-14 11:19:05 Последнее изменение: 2023-11-14 11:19:05
Копировать: 3 Количество просмотров: 731
1
Подписаться
1617
Подписчики

Стратегия торговли прорывом импульса

Обзор

Эта стратегия использует линию Булина в сочетании с показателем ATR в сочетании с средней линией EMA для определения, формируя динамическую стратегию торговли. Когда цена взлетает над линией Булина и быстро пересекает среднюю линию EMA, создается сигнал покупки; когда цена падает над линией Булина и быстро пересекает среднюю линию EMA, создается сигнал продажи.

Стратегический принцип

  1. Вычислить среднюю линию, верхнюю и нижнюю линию буринской линии. Средняя линия - средняя линия SMA n циклов, верхняя линия - средняя линия + m*n периодических стандартных отклонений, нижний ход - средняя линия - m*n циклических стандартов.

  2. Вычислить показатель ATR, используемый для отслеживания стоп-лосса.

  3. Вычислить среднюю линию EMA за 1 и n циклов, чтобы определить динамику цен.

  4. Сигнал покупателя появляется, когда цена пересекает линию Блинна и быстро пересекает среднюю линию n циклов EMA.

  5. Сигнал продажи возникает, когда цена пересекает нижнюю траекторию Блинна и быстро пересекает n-циклическую среднюю линию EMA.

  6. ATR используется для установления стоп-пойнтов, отслеживания прорыва цены и избежания подкупа.

Анализ преимуществ

  1. Брин-лайн в сочетании с ATR-ограничением позволяет эффективно контролировать риск.

  2. EMA быстро и медленно усредняет направление движения, чтобы избежать ложного прорыва.

  3. Параметры стратегии могут быть адаптированы для различных рыночных условий.

  4. Сигналы о покупке и продаже ясны, частота торгов выше, подходит для короткой торговли.

  5. Используйте индикатор ATR для отслеживания убытков и своевременного прекращения убытков.

Анализ рисков

  1. Если линейка булинга слишком узкая, то может возникнуть более шумная торговля.

  2. ATR параметры установлены слишком маленькими, что может привести к тому, что остановка будет слишком близко к застежке.

  3. Параметры EMA требуют периодической корректировки, различные циклы имеют разный эффект.

  4. В результате землетрясения в мегаполисе может произойти больше сделок, поэтому следует быть осторожными.

  5. Отслеживание потерь может быть слишком радикальным и может привести к увеличению потерь.

Направление оптимизации

  1. Можно использовать другие индикаторы для фильтрации торговых сигналов. Например, RSI указывает на перепродажу, KDJ указывает на отклонение и т. Д.

  2. Можно рассмотреть возможность корректировки параметров булинга в соответствии с динамикой ATR, чтобы сделать булингу более подходящей для колебаний цены.

  3. Можно проверить эффективность различных параметров цикла EMA, чтобы найти оптимальную комбинацию параметров.

  4. ATR параметры могут быть разумно скорректированы в зависимости от волатильности, чтобы избежать слишком радикального стоп-лосса.

  5. Можно рассмотреть возможность использования модели глубокого обучения, которая поможет определить, когда стоит купить или продать.

Подвести итог

Общая идея этой стратегии ясна, используя буринскую линию для захвата ценовых прорывов, 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)