Эта стратегия под названием
Стратегия использует индикатор ATR для установки цены стоп-лосса. ATR отражает волатильность рынка и может использоваться для динамического установления расстояния стоп-лосса. Стратегия рассчитывает значение ATR на основе ввода пользователем периода ATR и мультипликатора и использует значение ATR, умноженное на мультипликатор, как расстояние стоп-лосса. В частности, формула расчета задержки ATR:
ATR Line = Prior ATR Line ± nLoss (nLoss = nATRMultip * ATR value)
If close > ATR Line, adjust ATR Line up to close - nLoss
If close < ATR Line, adjust ATR Line down to close + nLoss
Таким образом, линия ATR может динамически корректироваться на основе колебаний цен для достижения тренда после остановки потерь.
В дополнение к остановке ATR, стратегия также использует канал стандартного отклонения для определения сигналов входа.
Middle Line = ATR Trailing Stop Line
Upper Band = Middle Line + n * Standard Deviation
Lower Band = Middle Line - n * Standard Deviation
Иди длинным, когда цена проходит среднюю линию вверх. Иди коротким, когда цена проходит среднюю линию вниз.
Наибольшее преимущество этой стратегии заключается в том, что она использует индикатор ATR для динамического установления стоп-лосса на основе волатильности рынка, что позволяет установить тренд после стоп-лосса и эффективно контролировать риск.
Кроме того, использование канала стандартного отклонения для входных сигналов позволяет избежать частого открытия позиций из-за небольших колебаний цен.
Основной риск заключается в том, что если расстояние стоп-лосса слишком большое, он не может эффективно контролировать риск, но если он слишком мал, он может быть легко остановлен рыночным шумом.
Другим риском являются ненадлежащие стандартные отклонения параметров канала, что приводит к чрезмерно высокой / низкой частоты входа.
Стратегия может быть усовершенствована из следующих аспектов:
Оптимизировать период ATR и мультипликатор для достижения лучшего эффекта стоп-лосса.
Оптимизировать параметры канала стандартного отклонения для лучших входных сигналов.
Добавить другие индикаторы для фильтрации, например, скользящую среднюю величину, модели свечей и т.д., чтобы помочь оценить направление тренда и повысить рентабельность.
Оптимизировать логику входа и выхода, например, открыть позиции только после подтверждения шаблона свечей, когда цена достигает диапазонов каналов.
Стратегия достигает тренда после остановки потери на основе индикатора ATR и использует канал стандартного отклонения для входных сигналов. Ее преимущества заключаются в хорошей способности контроля рисков для торговли трендом. Риски и улучшения также четко проанализированы. Стратегия стоит дальнейшего тестирования и оптимизации и имеет практическую торговую ценность.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 strategy(title="Average True Range Strategy", overlay = true) nATRPeriod = input(11) //Hur många perioder ATR är på nATRMultip = input(0.5) //Hur många gånger nuvarande ATR multipliceras med xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), -1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), 1, nz(pos[1], 0))) stdev3 = 14*stdev(xATR, nATRPeriod) band1 = xATRTrailingStop+stdev3 //Översta stdev bandet band2 = xATRTrailingStop-stdev3 //Nedersta stdev bandet // Datum och tid FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2013, title = "From Year", minval = 2013) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest slut startTimeOk() => true initial_capital = 100000 take = close > xATRTrailingStop if( startTimeOk() ) and (pos == 1) //if (pos == 1) strategy.entry("Long", strategy.long, comment = "KOP") strategy.exit("Long", when = take) if( startTimeOk() ) and (pos == -1) //if (pos == -1) strategy.entry("Short", strategy.short, comment = "SALJ") barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(xATRTrailingStop, color=red, title="ATR Trailing Stop") //Mittersta linjen som är triggerlinjen för köp/sälj plot(band1, color=red) plot(band2, color=blue)