
Эта стратегия, основанная на идеях, изложенных в статье Эндрю Абрахама “Тренды отслеживания криптовалют”, опубликованной в сентябре 1998 года в техническом аналитическом журнале криптовалют, была разработана для динамического отслеживания тенденций цен на акции и создания торговых сигналов.
Эта стратегия сначала рассчитывает средний реальный диапазон колебаний за последние 21 день в качестве референтного порога, а затем рассчитывает максимальные и минимальные цены за последние 21 день, и на основе этого устанавливает верхний и нижний пределы канала, верхний предел которых составляет максимальный уровень колебаний за последние 21 день минус средний реальный диапазон колебаний в 3 раза, а нижний предел - минимальный уровень колебаний за последние 21 день плюс средний реальный диапазон колебаний в 3 раза. Когда цена на открытом диске превышает верхний предел канала, она подает сигнал давления; когда цена на открытом диске превышает нижний предел канала, она подает сигнал поглощения.
Наибольшее преимущество этой стратегии заключается в том, что она может динамически отслеживать ценовые тенденции и генерировать торговые сигналы. Она лучше улавливает тенденции изменения цен по сравнению с движущейся средней стратегией с фиксированными параметрами. Кроме того, создание канала в сочетании с реальными колебаниями позволяет избежать недостатков, связанных с ограничением канала только на основе минимальной цены.
Риски, связанные с этой стратегией, заключаются в двух аспектах: первое - это риск чрезмерной торговли, связанный с увеличением количества торговых сигналов; второе - риск, связанный с возможной неправильной настройкой параметров. Из-за того, что эта стратегия использует динамические параметры, торговые сигналы будут чаще, чем традиционная стратегия движущихся средних, и это может привести к определенной степени риска чрезмерной торговли. Кроме того, если параметры будут установлены неправильно, например, слишком короткий временной период или слишком маленькое число канальных ограничений, это также увеличит количество ложных сигналов, что увеличит риск.
Для управления риском можно соответствующим образом скорректировать параметры, выбрать более длительный период времени и надлежащим образом ослабить ограничения верхнего и нижнего рубежа канала. Кроме того, можно рассмотреть возможность включения стратегии остановки убытков для контроля одиночных убытков.
Для этой стратегии существует большой простор для оптимизации. Например, можно рассмотреть возможность комбинирования других фильтрующих показателей, таких как RSI, KD и т. Д., чтобы избежать ложных прорывов. Можно также попробовать автоматически оптимизировать параметры с помощью методов машинного обучения. Кроме того, оптимальные значения параметров могут варьироваться в зависимости от различных акций и рыночных условий.
Эта стратегия в целом является очень практичной стратегией отслеживания тенденций. По сравнению с традиционной стратегией движущихся средних, она более гибкая и интеллектуальная, способная динамически улавливать тенденции изменения цен. При правильном регулировании параметров ее торговый сигнал имеет высокое качество и может получить хорошую отдачу.
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 10/10/2018
// This is plots the indicator developed by Andrew Abraham
// in the Trading the Trend article of TASC September 1998
// It was modified, result values wass averages.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader AVR Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
Multiplier = input(3, minval=1)
reverse = input(false, title="Trade reverse")
avgTR = wma(atr(1), Length)
highestC = highest(Length)
lowestC = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = 0.0
ret := iff(close > hiLimit and close > loLimit, hiLimit,
iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
nResMA = ema(ret, LengthMA)
pos = 0
pos := iff(close < nResMA, -1,
iff(close > nResMA, 1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nResMA, color= blue , title="Trend Trader AVR")