
Основная идея этой стратегии заключается в том, чтобы использовать диапазон колебаний цены, рассчитанный показателем ATR, для определения ценового прорыва, а также показатель EMA для определения общего направления тенденции, чтобы реализовать трендовую торговлю. Когда цена прорывается вдоль или вниз от диапазона ATR, если направление прорыва совпадает с направлением EMA, то вход в рынок делает больше или делает меньше.
Во-первых, эта стратегия использует индикатор ATR для расчета диапазона колебаний цен в течение определенного периода. Верхний предел диапазона ATR - SMA + ATR, а нижний - SMA-ATR.
Торговые возможности возникают, когда цена выходит из ATR вверх или вниз. В этом случае необходимо определить направление. Если вы выходите вверх, вы делаете больше, если вы выходите вниз, вы делаете пустое.
Наконец, стратегия использует ценовое возвращение в пределы ATR в качестве сигнала для ликвидации. Если цена пересекает нижнюю границу, она будет ликвидирована. Если цена пересекает верхнюю границу, она будет ликвидирована.
Используя показатель ATR для определения прорыва, можно эффективно улавливать прорыв в ценовом тренде. Диапазон ATR устанавливается в соответствии с волатильностью, не вызывая слишком больших помех нормальному колебанию.
Добавление показателя EMA в качестве ориентировочной оценки, чтобы избежать торговли в направлении, противоположном тренду, может значительно повысить уровень прибыли.
Применение ценового возврата в пределах ATR в качестве метода остановки убытков позволяет максимально контролировать риск потери.
В условиях шока ATR-диапазон может быть часто нарушен, что может привести к чрезмерному количеству недействительных сделок и увеличению убытков.
Поскольку EMA является индикатором направления тенденции, существует определенная отсталость. Таким образом, можно упустить возможность краткосрочного изменения цены.
Стоп-лосс - это метод возврата цены, который может быть расширен из-за внезапных событий.
Можно рассматривать тенденции и отступления в сочетании с другими показателями, чтобы избежать ошибок в одном суждении EMA. Например, MACD, KDJ и т. Д.
Можно рассмотреть возможность корректировки параметров ATR в режиме реального времени в зависимости от рыночных колебаний, чтобы сделать диапазон ATR более близким к реальным колебаниям.
Мобильный метод остановки может быть объединен с реальным временем регулирования точки остановки, чтобы максимально контролировать риск потерь.
Эта стратегия имеет четкую общую концепцию, использует показатели ATR для определения ценового прорыва и совмещает направление оценки EMA, чтобы эффективно следовать тенденции; метод остановки прямой и простой. Но в то же время существует определенный риск, большой простор для оптимизации, который ожидает дальнейшего тестирования и корректировки. В целом, эта стратегия подходит для трендовых трейдеров, которые стремятся к высокой выигрышной доходности.
/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cwagoner78
//@version=4
strategy("cATRpillar", overlay=true)
//------------
//inputs
lookback = input(title="Periods", type=input.integer, defval=37)
atrMult = input(title="Range Multiplier", type=input.float, defval=.2)
takeProfit = input(title="Take Profit", type=input.float, defval=5000)
stopLoss = input(title="Stop Loss", type=input.float, defval=2500)
lots = input(title="Lots to Trade", type=input.float, defval=1)
//------------
//indicators
atr=atr(lookback)*atrMult
sma=sma(close, lookback)
ema=ema(close,lookback*2)
rangeLo=sma-atr
rangeHi=sma+atr
//------------
//draw objects
p0 =plot(close, title="Close", color=#26A69A, linewidth=0, transp=80,style=plot.style_stepline)
p1 =plot(rangeHi, title="High", color=color.fuchsia, linewidth=0, transp=80,style=plot.style_stepline)
p2 =plot(rangeLo, title="Low", color=color.lime, linewidth=0, transp=80,style=plot.style_stepline)
p3 =plot(ema, title="EMA", color=color.white, linewidth=0, transp=80, style=plot.style_stepline)
fill(p1, p0, color=color.fuchsia)
fill(p0, p2, color=color.lime)
//------------
//Trading
atrShort=open[1] > rangeHi and open < rangeLo
atrLong=open[1] < rangeLo and open > rangeHi
exitLong=open>rangeLo
exitShort=open<rangeHi
//Long
longCondition=atrLong and open>ema+atr
strategy.entry(id="cATRpillar-Buy", long=true, when=longCondition)
longCloseCondition=exitLong
strategy.exit(id="cATRpillar-Exit", qty=lots, profit=takeProfit, loss=stopLoss, when=longCloseCondition)
//Short
shortCondition=atrShort and open<ema-atr
strategy.entry(id="cATRpillar-Sell", long=false, when=shortCondition)
shortCloseCondition=exitShort
strategy.exit(id="cATRpillar-Exit", qty=lots, profit=takeProfit, loss=stopLoss, when=shortCloseCondition)
plotshape(shortCondition, title= "Short", location=location.belowbar, color=color.fuchsia, transp=80, style=shape.triangledown, size=size.tiny)
plotshape(longCondition, title= "Long", location=location.abovebar, color=color.lime, transp=80, style=shape.triangleup, size=size.tiny)
//------------