Стратегия следования за трендом на основе стоп-лосса Чанде Кролла и фильтра ADX


Дата создания: 2023-11-06 14:52:27 Последнее изменение: 2023-11-06 14:52:27
Копировать: 0 Количество просмотров: 981
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе стоп-лосса Чанде Кролла и фильтра ADX

Обзор

Эта стратегия в сочетании с показателем стоп-стоп Chande Kroll и средним трендовым индексом (ADX) позволяет реализовать относительно простую стратегию отслеживания тренда. Стоп-стоп Chande Kroll используется для генерации сигналов для входа в длинные и короткие позиции, а ADX используется для фильтрации рыночных ситуаций, в которых нет очевидной тенденции, и предотвращения повторных триггеров стоп-стопов из-за неуправленных колебаний рынка.

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

Эта стратегия сначала рассчитывает длинную и короткую стоп-линии Chande Kroll stop_long и stop_short. Длинная линия рассчитывается с наивысшей цены за прошедшие p-циклики, а короткая - с наименьшей цены за прошедшие p-циклики. Затем используются максимальные и минимальные точки длинной и короткой линии за прошедшие q-циклики в качестве текущей длинной и короткой стоп-линий.

При прохождении короткой линии stop_short над ценой закрытия, генерируется многозначный сигнал; при прохождении длинной линии stop_long под ценой закрытия, генерируется пустой сигнал.

Кроме того, стратегия включает в себя индикатор ADX, который определяет, что тенденция сильна или слаба. Стоп-сигнал будет задействован только в том случае, если ADX превышает отметку от отметки от отметки от отметки от отметки от отметки от отметки от отметки от отметки от отметки от отметки от отметки от отметки.

Стратегические преимущества

Эта стратегия сочетает в себе преимущества трендовых и стоп-индикаторов и позволяет как своевременно улавливать перевороты в тренде, так и избегать рыночных вип-саев без направления. Параметры оптимизации стоп-индикаторов Chande Kroll могут сглаживать симуляторы, гарантируя, что они будут останавливаться только при переходе в тренд. Индикаторы ADX гарантируют, что они будут вступать в игру только в то время, когда тенденция очевидна, чтобы избежать стоп-индикаторов в рыночных колебаниях.

Стратегический риск

Неправильная настройка параметров ADX может пропустить начало тренда. Если ADX-порог установлен слишком высоко, то в начале тренда возможно пропущение возможности входа из-за слишком низкого значения ADX.

Превышение предела стоп-поста также может привести к частому открытию и закрытию стратегических позиций. Это увеличивает затраты на торговлю и стоимость скольжения. Стоп-пост должен быть разумно настроен, чтобы дать тренду определенную перспективу.

Оптимизация стратегии

Можно рассматривать возможность использования стоп-сигнала только в том случае, если ADX преодолевает определенный порог, что повышает надежность входа в рынок. Также можно использовать другие трендовые индикаторы для комбинированного суждения, например, комбинирование значения ADX с скольжением EMA.

Стоп-линии также можно рассматривать в соответствии с динамикой корректировки ATR, расширяя пространство для остановки при усилении рыночных колебаний, чтобы избежать чрезмерной чувствительности. Или может быть в сочетании с вспомогательными показателями, такими как MACD, чтобы оценить сильную или слабую тенденцию, динамика корректировки стоп-линий.

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

Эта стратегия объединяет преимущества стоп-стратегии Chande Kroll и показателей ADX, чтобы реализовать относительно простую и практичную стратегию отслеживания тенденций. С помощью оптимизации параметров можно еще больше повысить стабильность и прибыльность стратегии. Однако следует обратить внимание на риск, связанный с чрезмерной чувствительностью стоп-стратегии и чрезмерной расслабленностью фильтрации ADX.

Исходный код стратегии
/*backtest
start: 2022-10-30 00:00:00
end: 2023-06-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title = "Chande Kroll Stop", overlay=true)
p = input.int(10, minval=1)
x = input.int(1, minval=1)
q = input.int(9, minval=1)
first_high_stop = ta.highest(high, p) - x * ta.atr(p)
first_low_stop = ta.lowest(low, p) + x * ta.atr(p)
stop_short = ta.highest(first_high_stop, q)
stop_long = ta.lowest(first_low_stop, q)
plot(stop_long, color=color.blue)
plot(stop_short, color=color.orange)

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_sig = input.int(20, title="minimum ADX threshold for signal")
dirmov(len) =>
	up = ta.change(high)
	down = -ta.change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)


if ta.crossunder(close, stop_long) and sig>ADX_sig
    strategy.entry("long", strategy.long)
if ta.crossover(close, stop_short) and sig>ADX_sig
    strategy.entry("short", strategy.short)