Основная идея этой стратегии заключается в использовании диапазона колебаний цен, рассчитанного индикатором ATR, для оценки прорывов цен, и индикатора EMA для оценки общего направления тренда, чтобы достичь тренда после торговли. Когда цена проходит через верхнюю или нижнюю границу диапазона ATR, если направление прорыва соответствует направлению EMA, принимайте длинные или короткие позиции. Заключительным условием является то, что цена снова проходит через диапазон ATR.
Во-первых, эта стратегия использует индикатор ATR для расчета диапазона колебаний цен в течение определенного периода. Верхний предел диапазона ATR - SMA + ATR, а нижний предел - SMA-ATR. Где SMA представляет собой простую скользящую среднюю цену закрытия в день, а ATR представляет собой среднюю цену True Range.
Когда цена проходит через верхний или нижний предел диапазона ATR, возникает торговая возможность. В это время необходимо судить о направлении. Если это прорыв вверх, займите длинный. Если это прорыв вниз, займите короткий. Чтобы гарантировать, что направление прорыва соответствует направлению тренда, стратегия использует индикатор EMA для определения общего направления тренда. Только когда направление прорыва соответствует направлению EMA, будет принята позиция.
Наконец, стратегия использует ценовой прорыв через диапазон 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) //------------