Это простая, но прибыльная стратегия отслеживания тренда, основанная на часовом периоде TENKAN и KIJUN в системе ICHIMOKU в сочетании с индикатором ADX для фильтрации слабых трендовых рынков для генерации торговых сигналов.
Стратегия использует перекресток линии конверсии (TENKAN) и базовой линии (KIJUN) в системе Ичимоку для определения направления тренда рынка. Линия TENKAN рассчитывается на основе среднего значения наивысшего максимума и наименьшего минимума последних 18 свечей, представляющих линию быстрой конверсии. Линия KIJUN основана на 58 периодах свечей, что означает стандартную линию конверсии.
Когда TENKAN пересекает над KIJUN, это бычий сигнал. Когда TENKAN пересекает ниже KIJUN, это медвежий сигнал. Это направлено на захват среднесрочного переворота тренда.
Кроме того, индикатор ADX используется для измерения силы тренда. Только когда ADX превышает 20, что указывает на сильный тренд, сигнал будет активирован.
В целом, эта стратегия определяет направление среднесрочного тренда через перекресток TENKAN и KIJUN и использует ADX для фильтрации ложных прорывов, чтобы отслеживать долгосрочные тенденции.
Основными преимуществами этой стратегии являются:
Использование зрелой и надежной системы Ичимоку для определения направления тренда и поворотных точек.
Фильтрация слабого рынка с помощью ADX, чтобы избежать сбоев в консолидации.
Одночасовой график фильтрует шум рынка и отражает только средне- и долгосрочные тенденции.
Логика проста и легко понятна трейдерам.
Хорошие результаты обратного тестирования, особенно на монетах с высокой рыночной капитализацией, таких как ETH/BTC.
Некоторые риски этой стратегии:
Параметры ICHIMOKU чувствительны, требуют настройки для разных пар.
ADX может отставать в некоторых случаях, вызывая пропущенный вход.
Невысокие показатели на различных рынках с частыми остановками.
Производительность сильно варьируется в разных парах и временных рамках.
Долгое удержание позиций может быть рискованным, необходим правильный стоп-лосс/стоп-прибыль.
Оптимизация может быть выполнена с помощью настройки параметров ADX, добавления фильтров, таких как MACD, для уменьшения ложных сигналов или динамической корректировки параметров для надежности.
Некоторые основные направления совершенствования стратегии:
Динамическая оптимизация параметров TENKAN и KIJUN для лучшей адаптации.
Поиск лучших индикаторов тренда для замены или объединения с ADX.
Добавление стоп-лосса/прибыли для контроля соотношения риск/прибыль.
Совместить моделирование с дополнительными показателями для улучшения стабильности.
Модулизация и гибкость для настройки параметров на большее количество пар.
Количественное управление рисками, например, контроль максимального использования средств против экстремальных движений.
В заключение, это простая, но практичная стратегия отслеживания трендов, в основном основанная на кроссе 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()