ADX-базирующаяся одночасовая стратегия перекрестного отслеживания трендов TENKAN KIJUN

Автор:Чао Чжан, Дата: 2023-12-08 15:37:00
Тэги:

img

Обзор

Это простая, но прибыльная стратегия отслеживания тренда, основанная на часовом периоде TENKAN и KIJUN в системе ICHIMOKU в сочетании с индикатором ADX для фильтрации слабых трендовых рынков для генерации торговых сигналов.

Логика стратегии

Стратегия использует перекресток линии конверсии (TENKAN) и базовой линии (KIJUN) в системе Ичимоку для определения направления тренда рынка. Линия TENKAN рассчитывается на основе среднего значения наивысшего максимума и наименьшего минимума последних 18 свечей, представляющих линию быстрой конверсии. Линия KIJUN основана на 58 периодах свечей, что означает стандартную линию конверсии.

Когда TENKAN пересекает над KIJUN, это бычий сигнал. Когда TENKAN пересекает ниже KIJUN, это медвежий сигнал. Это направлено на захват среднесрочного переворота тренда.

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

В целом, эта стратегия определяет направление среднесрочного тренда через перекресток TENKAN и KIJUN и использует ADX для фильтрации ложных прорывов, чтобы отслеживать долгосрочные тенденции.

Анализ преимуществ

Основными преимуществами этой стратегии являются:

  1. Использование зрелой и надежной системы Ичимоку для определения направления тренда и поворотных точек.

  2. Фильтрация слабого рынка с помощью ADX, чтобы избежать сбоев в консолидации.

  3. Одночасовой график фильтрует шум рынка и отражает только средне- и долгосрочные тенденции.

  4. Логика проста и легко понятна трейдерам.

  5. Хорошие результаты обратного тестирования, особенно на монетах с высокой рыночной капитализацией, таких как ETH/BTC.

Анализ рисков

Некоторые риски этой стратегии:

  1. Параметры ICHIMOKU чувствительны, требуют настройки для разных пар.

  2. ADX может отставать в некоторых случаях, вызывая пропущенный вход.

  3. Невысокие показатели на различных рынках с частыми остановками.

  4. Производительность сильно варьируется в разных парах и временных рамках.

  5. Долгое удержание позиций может быть рискованным, необходим правильный стоп-лосс/стоп-прибыль.

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

Руководство по оптимизации

Некоторые основные направления совершенствования стратегии:

  1. Динамическая оптимизация параметров TENKAN и KIJUN для лучшей адаптации.

  2. Поиск лучших индикаторов тренда для замены или объединения с ADX.

  3. Добавление стоп-лосса/прибыли для контроля соотношения риск/прибыль.

  4. Совместить моделирование с дополнительными показателями для улучшения стабильности.

  5. Модулизация и гибкость для настройки параметров на большее количество пар.

  6. Количественное управление рисками, например, контроль максимального использования средств против экстремальных движений.

Заключение

В заключение, это простая, но практичная стратегия отслеживания трендов, в основном основанная на кроссе TENKAN/KIJUN и ADX для выявления средне- и долгосрочных тенденций и генерации сигналов. Она показала положительные результаты обратного тестирования, особенно на парах BTC с высокой рыночной капитализацией, таких как ETH/BTC, с относительно стабильной рентабельностью.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Odin's Kraken (TK Cross Strategy)", shorttitle="Odin's Kraken", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

src = input(close, title="Source")

// define tk in ichimoku

conversionPeriods = input(18, minval=1, title="Conversion Line Periods (Tenkan)"),
basePeriods = input(58, minval=1, title="Base Line Periods (Kijun)")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)

TK_Uptrend = crossover(conversionLine,baseLine)
TK_Downtrend = crossunder(conversionLine,baseLine)

plot(conversionLine, color=lime, title="Tenkan", linewidth=3)
plot(baseLine, color=red, title="Kijun", linewidth=3)

// define ADX

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", defval=20)
dirmov(len) =>
	up = change(high)
	down = -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 = rma(tr, len)
	
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)

	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	
[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

// backtesting range

// From Date Inputs
fromDay = input(defval = 3, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2018, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 3, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2019, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

// open long and short

longCondition = TK_Uptrend
if (longCondition and sig > 12 and time_cond)
    strategy.entry("LONG", strategy.long)

shortCondition = TK_Downtrend
if (shortCondition and sig > 12 and time_cond)
    strategy.entry("SHORT", strategy.short)

// close trade if backtesting criteria not met

if (not time_cond)
    strategy.close_all()




Больше