Адаптивная стратегия торговли на основе обратного гиперболического тангенса CCI Momentum и система контроля рисков

IFTCCI CCI WMA 动量交易 阈值突破 再入场机制 止损策略
Дата создания: 2025-05-27 11:11:47 Последнее изменение: 2025-05-27 11:11:47
Копировать: 0 Количество просмотров: 310
2
Подписаться
319
Подписчики

Адаптивная стратегия торговли на основе обратного гиперболического тангенса CCI Momentum и система контроля рисков Адаптивная стратегия торговли на основе обратного гиперболического тангенса CCI Momentum и система контроля рисков

Обзор

Стратегия CCI - это количественная торговая система, основанная на технических показателях, основанная на IFTCCI, разработанном Kıvanc Özbilgiç. Стратегия генерирует сигналы покупки и продажи, когда индикатор колеблется от -1 до +1 путем установления точного уровня понижения. Стратегия вызывает сигнал покупки, когда индикатор пробивает определенный порог с низкого уровня (<-0,95) вверх, и сигнал продажи, когда индикатор пробивает определенный порог с высокого уровня (<-0,95) вниз.

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

В основе этой стратегии лежит показатель IFTCCI, который рассчитывается следующими шагами:

  1. Сначала вычислите стандартный показатель CCI и делите его на 4 для предварительной стандартизации
  2. Умножьте стандартное значение CCI на 0,1 для коррекции чувствительности
  3. Применение весовой скользящей средней (WMA) для плавной обработки
  4. Наконец, используя обратную двойную прямоугольную функцию ((tanh) для отображения значений в диапазоне от -1 до +1

Конкретная формула для расчета:

v1 = 0.1 * (CCI(close, period) / 4)
v2 = WMA(v1, wma_period)
IFTCCI = (e^(2*v2) - 1) / (e^(2*v2) + 1)

Логика исполнения стратегии состоит из следующих ключевых частей:

  1. Условия покупки:

    • Основной сигнал покупки: срабатывает, когда индекс IFTCCI повышается с ниже -0.95 до выше -0.94
    • Сигнал обратной покупки: срабатывает при повышении показателя на 0,1 единицы от нижней точки
  2. Условия продажи:

    • Целевая продажа: срабатывает, когда индекс IFTCCI падает с выше 0,95 до ниже 0,94
    • Стоп-продажа: срабатывает, когда индекс снижается не менее чем на 0,1 единицы от максимума за время удержания позиции
  3. Отслеживание состояния:

    • Максимальные значения показателя, зафиксированные во время удержания позиции, используются для расчета стоп-лосса
    • Минимальные значения индексов, отслеживающих пост-плотное положение, используются для реинтеграции

Вся стратегия использует процентное управление капиталом, при каждой сделке используется 100% доступных средств, и запрещается наращивание позиций. Стратегия рассчитывает сигналы в реальном времени при формировании каждой K-линии, чтобы обеспечить своевременное захват динамики рынка.

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

  1. Четкие правила входа и выходаСтратегия, основанная на точном количественном снижении, обеспечивает четкие торговые сигналы, избегая субъективного суждения, что делает торговые решения более объективными и дисциплинированными.

  2. Динамические механизмы управления рискамиВстроенный стоп-механизм эффективно ограничивает потери в отдельных сделках, автоматически выходит из них, когда рынок переходит за установленную величину, защищая безопасность средств.

  3. Рыночная адаптивность:ИФТКЦИ показатель с помощью обратной двойной кривой корректируемого преобразования, чтобы показательные значения колебались от -1 до +1, имеет естественные унифицированные свойства, применимые к различным волатильным рыночным условиям.

  4. Сгладить сигнал, уменьшить ложные прорывы: использование взвешенных мобильных средних для плавной обработки исходного CCI, эффективно снижает шум и ложные сигналы, повышает надежность торговых сигналов.

  5. Умный механизм возвращенияКогда рынки возвращаются к прежнему тренду после выхода, механизм повторного входа позволяет системе заново использовать возможности и повысить прибыльность стратегии.

  6. Хорошая визуализация.Стратегия: четко отображает изменения цвета фона на графике, помогая трейдерам визуально понять состояние рынка и торговые сигналы.

  7. Настройка параметров: Все ключевые параметры могут быть скорректированы через входный интерфейс, что позволяет стратегии адаптироваться к различным рыночным условиям и личным предпочтениям риска.

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

  1. Частые сделки на бурных рынкахВ условиях диапазона волатильности индикаторы могут часто колебаться вблизи отметки, создавая многократные сигналы о покупке и продаже, что приводит к чрезмерной торговле и эрозии комиссионных. *Решение проблемы*Добавление дополнительных фильтров, таких как временные или трендовые фильтры, может снизить частоту торгов на волатильных рынках.

  2. Вопрос о фиксированном стоп-магните: текущая стратегия использует фиксированное значение ((0,1 единицы) в качестве Stop Loss, которое может быть слишком большим или слишком маленьким в различных волатильных рыночных условиях. Решение проблемы: можно спроектировать адаптируемую величину стоп-ложа, корректируя стоп-дистанцию в соответствии с недавней динамикой волатильности рынка.

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

  4. Временные риски механизма реадмиссииТекущий механизм реинтеграции основан на фиксированной отскоковой величине и может привести к преждевременному реинтеграции в случае ложного рыночного прорыва. Решение проблемы: Добавление дополнительных условий подтверждения, таких как подтверждение количества поставок или сигналы сочетания с другими техническими показателями.

  5. Однозначная зависимостьПо мнению экспертов, в этом случае не будет никакой необходимости в том, чтобы выбирать между двумя вариантами, поскольку они могут быть различными. *Решение проблемы*Внедрение комплекса взаимодополняющих индикаторов, таких как RSI, MACD или индикаторы волатильности, которые обеспечивают многостороннее подтверждение рынка.

Направление оптимизации

  1. Интеграция многовременного анализа: Текущая стратегия, которая работает только в одном временном периоде, может быть интегрирована в анализ нескольких временных периодов, например, использование показателя IFTCCI в более высоких временных периодах в качестве фильтра направления торговли и торговля только в более широком направлении тенденции. Это может уменьшить обратную торговлю и повысить шансы на победу.

  2. Динамическая корректировка: Замена фиксированного порога (−0,950,95) на порог, основанный на динамической коррекции волатильности рынка. Использование более узкого порога в условиях низкой волатильности и более широкого порога в условиях высокой волатильности, чтобы адаптироваться к потребностям в генерировании сигналов в различных рыночных условиях.

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

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

  5. Машинное обучение: Использование алгоритмов машинного обучения для самостоятельной адаптационной оптимизации параметров показателя IFTCCI (CCI-циклов и WMA-циклов) для автоматической адаптации оптимального параметрового сочетания в зависимости от различных рыночных условий для повышения адаптивности стратегии.

  6. Фильтр времени транзакции: Включение фильтра времени торговли, чтобы избежать периодов высокой волатильности перед открытием и закрытием рынка или во время публикации важных экономических данных, чтобы уменьшить непредсказуемые колебания, вызванные внезапными событиями.

  7. Корреляционный анализ: Введение анализа корреляции с другими рынками или активами повышает доверие к торговым сигналам и устойчивость стратегии, когда одновременно появляются аналогичные сигналы на нескольких связанных рынках.

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

Автоматическая антидвойная кривая CCI динамическая торговая стратегия - это хорошо структурированная, логически ясная количественная торговая система, которая генерирует торговые сигналы с помощью прорыва в пороге показателей IFTCCI и оснащена механизмами остановки и повторного входа для управления риском и захвата возможностей. Основные преимущества этой стратегии заключаются в четкости сигнала, динамичности контроля риска и регулируемости параметров.

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

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

Исходный код стратегии
/*backtest
start: 2024-05-27 00:00:00
end: 2025-01-20 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © erkankuskonmaz

//@version=5
strategy("IFTCCI Buy Sell Signal Strategy",
         overlay=false,
         pyramiding=0,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=100,
         calc_on_every_tick=true) // NEW LINE: Enables real-time signal generation.

// --- Indicator Settings and Calculations (IFTCCIv2) ---
group_indicator_params = "Indicator Parameters (IFTCCIv2)"
ccilength_param = input.int(5, "CCI Period", group=group_indicator_params)
wmalength_param = input.int(9, title="Smoothing Period (WMA)", group=group_indicator_params)

// IFTCCIv2 Calculation
v1_calc = 0.1 * (ta.cci(close, ccilength_param) / 4)
v2_calc = ta.wma(v1_calc, wmalength_param)
indicator_value_ift = (math.exp(2 * v2_calc) - 1) / (math.exp(2 * v2_calc) + 1)

// --- Strategy Rule Inputs ---
group_entry_rules = "Buy Signal Conditions"
entry_low_prev_max = input.float(-0.95, title="Primary Buy: Previous Bar Max Value", group=group_entry_rules)
entry_low_curr_min = input.float(-0.94, title="Primary Buy: Current Bar Min Value", group=group_entry_rules)
reentry_trigger_units = input.float(0.10, title="Re-entry: Rise from Lowest Value", group=group_entry_rules)

group_exit_rules = "Sell Signal Conditions (Exit Position)"
exit_high_prev_min = input.float(0.95, title="Target Sell: Previous Bar Min Value", group=group_exit_rules)
exit_high_curr_max = input.float(0.94, title="Target Sell: Current Bar Max Value", group=group_exit_rules)
stop_loss_units = input.float(0.10, title="Stop Loss: Drop from Peak Value", group=group_exit_rules)

// --- Indicator Values for Strategy ---
float ind_val = indicator_value_ift
float ind_val_prev = indicator_value_ift[1]

// --- State Tracking Variables ---
var float highest_indicator_since_long_entry = na
var bool track_for_reentry_after_close = false
var float lowest_indicator_since_reentry_tracking_started = na

// --- Update State Logic ---
// 1. Update the highest indicator value since entering long position
if strategy.position_size > 0
    if strategy.position_size[1] <= 0
        highest_indicator_since_long_entry := ind_val
    else
        highest_indicator_since_long_entry := math.max(highest_indicator_since_long_entry, ind_val)
else
    if strategy.position_size[1] > 0
        highest_indicator_since_long_entry := na

// 2. Update re-entry tracking mechanism
if strategy.position_size[1] > 0 and strategy.position_size == 0
    track_for_reentry_after_close := true
    lowest_indicator_since_reentry_tracking_started := ind_val
else if strategy.position_size > 0
    track_for_reentry_after_close := false
    lowest_indicator_since_reentry_tracking_started := na
else if track_for_reentry_after_close and strategy.position_size == 0
    if not na(lowest_indicator_since_reentry_tracking_started)
        lowest_indicator_since_reentry_tracking_started := math.min(lowest_indicator_since_reentry_tracking_started, ind_val)
    else
        lowest_indicator_since_reentry_tracking_started := ind_val

// --- Buy Conditions (Long Entry) ---
bool can_enter_new_position = strategy.opentrades == 0

// Condition 1: Main Buy Condition
bool condition_main_buy_cross = ind_val_prev <= entry_low_prev_max and ind_val >= entry_low_curr_min
bool main_long_entry_trigger = condition_main_buy_cross and can_enter_new_position

// Condition 2: Re-entry Buy Condition
bool condition_re_entry_trigger = false
if track_for_reentry_after_close and not na(lowest_indicator_since_reentry_tracking_started) and can_enter_new_position
    if ind_val >= lowest_indicator_since_reentry_tracking_started + reentry_trigger_units
        condition_re_entry_trigger := true

// Combined Buy Condition
bool final_long_entry_condition = main_long_entry_trigger or condition_re_entry_trigger

// --- Sell Conditions (Long Exit) ---
bool currently_in_long_position = strategy.position_size > 0

// Sell Condition 1: Target Sell
bool condition_sell_target = ind_val_prev >= exit_high_prev_min and ind_val <= exit_high_curr_max

// Sell Condition 2: Stop Loss
bool condition_sell_stop_loss = false
if currently_in_long_position and not na(highest_indicator_since_long_entry)
    if ind_val <= highest_indicator_since_long_entry - stop_loss_units
        condition_sell_stop_loss := true

// Combined Sell Condition
bool final_long_exit_condition = currently_in_long_position and (condition_sell_target or condition_sell_stop_loss)

// --- Strategy Orders ---
if (final_long_entry_condition)
    entry_comment = main_long_entry_trigger ? "Buy (Primary)" : "Buy (Re-entry)"
    strategy.entry("Buy ID", strategy.long, comment=entry_comment)

if (final_long_exit_condition)
    exit_comment = condition_sell_target ? "Sell (Target)" : "Sell (Stop)"
    strategy.close("Buy ID", comment=exit_comment)

// --- Plot Indicator and Strategy Markers ---
plot(indicator_value_ift, title="IFTCCI Value", color=color.rgb(0, 0, 0), linewidth=2)
hline(0, "Mid Level", color=color.new(#787b86, 50), linestyle=hline.style_dotted)
hline(0.95, "Upper Reference (+0.95)", color=color.new(#002fff, 10), linestyle=hline.style_dashed)
hline(-0.95, "Lower Reference (-0.95)", color=color.new(#002fff, 10), linestyle=hline.style_dashed)

// Background Coloring on Entry and Exit Signals
color background_color = final_long_entry_condition ? color.new(color.green, 81) : final_long_exit_condition ? color.new(color.red, 81) : na
bgcolor(background_color, title="Signal Background")