
Стратегия CCI - это количественная торговая система, основанная на технических показателях, основанная на IFTCCI, разработанном Kıvanc Özbilgiç. Стратегия генерирует сигналы покупки и продажи, когда индикатор колеблется от -1 до +1 путем установления точного уровня понижения. Стратегия вызывает сигнал покупки, когда индикатор пробивает определенный порог с низкого уровня (<-0,95) вверх, и сигнал продажи, когда индикатор пробивает определенный порог с высокого уровня (<-0,95) вниз.
В основе этой стратегии лежит показатель IFTCCI, который рассчитывается следующими шагами:
Конкретная формула для расчета:
v1 = 0.1 * (CCI(close, period) / 4)
v2 = WMA(v1, wma_period)
IFTCCI = (e^(2*v2) - 1) / (e^(2*v2) + 1)
Логика исполнения стратегии состоит из следующих ключевых частей:
Условия покупки:
Условия продажи:
Отслеживание состояния:
Вся стратегия использует процентное управление капиталом, при каждой сделке используется 100% доступных средств, и запрещается наращивание позиций. Стратегия рассчитывает сигналы в реальном времени при формировании каждой K-линии, чтобы обеспечить своевременное захват динамики рынка.
Четкие правила входа и выходаСтратегия, основанная на точном количественном снижении, обеспечивает четкие торговые сигналы, избегая субъективного суждения, что делает торговые решения более объективными и дисциплинированными.
Динамические механизмы управления рискамиВстроенный стоп-механизм эффективно ограничивает потери в отдельных сделках, автоматически выходит из них, когда рынок переходит за установленную величину, защищая безопасность средств.
Рыночная адаптивность:ИФТКЦИ показатель с помощью обратной двойной кривой корректируемого преобразования, чтобы показательные значения колебались от -1 до +1, имеет естественные унифицированные свойства, применимые к различным волатильным рыночным условиям.
Сгладить сигнал, уменьшить ложные прорывы: использование взвешенных мобильных средних для плавной обработки исходного CCI, эффективно снижает шум и ложные сигналы, повышает надежность торговых сигналов.
Умный механизм возвращенияКогда рынки возвращаются к прежнему тренду после выхода, механизм повторного входа позволяет системе заново использовать возможности и повысить прибыльность стратегии.
Хорошая визуализация.Стратегия: четко отображает изменения цвета фона на графике, помогая трейдерам визуально понять состояние рынка и торговые сигналы.
Настройка параметров: Все ключевые параметры могут быть скорректированы через входный интерфейс, что позволяет стратегии адаптироваться к различным рыночным условиям и личным предпочтениям риска.
Частые сделки на бурных рынкахВ условиях диапазона волатильности индикаторы могут часто колебаться вблизи отметки, создавая многократные сигналы о покупке и продаже, что приводит к чрезмерной торговле и эрозии комиссионных. *Решение проблемы*Добавление дополнительных фильтров, таких как временные или трендовые фильтры, может снизить частоту торгов на волатильных рынках.
Вопрос о фиксированном стоп-магните: текущая стратегия использует фиксированное значение ((0,1 единицы) в качестве Stop Loss, которое может быть слишком большим или слишком маленьким в различных волатильных рыночных условиях. Решение проблемы: можно спроектировать адаптируемую величину стоп-ложа, корректируя стоп-дистанцию в соответствии с недавней динамикой волатильности рынка.
Отсутствие подтверждения долгосрочных тенденцийЭта стратегия основана на краткосрочной динамике, не сочетается с долгосрочным анализом тенденций и может привести к ненужным сделкам в случае реверсии основных тенденций. *Решение проблемы*Введение долгосрочных трендовых индикаторов в качестве фильтров, позволяющих торговать только в направлении тренда.
Временные риски механизма реадмиссииТекущий механизм реинтеграции основан на фиксированной отскоковой величине и может привести к преждевременному реинтеграции в случае ложного рыночного прорыва. Решение проблемы: Добавление дополнительных условий подтверждения, таких как подтверждение количества поставок или сигналы сочетания с другими техническими показателями.
Однозначная зависимостьПо мнению экспертов, в этом случае не будет никакой необходимости в том, чтобы выбирать между двумя вариантами, поскольку они могут быть различными. *Решение проблемы*Внедрение комплекса взаимодополняющих индикаторов, таких как RSI, MACD или индикаторы волатильности, которые обеспечивают многостороннее подтверждение рынка.
Интеграция многовременного анализа: Текущая стратегия, которая работает только в одном временном периоде, может быть интегрирована в анализ нескольких временных периодов, например, использование показателя IFTCCI в более высоких временных периодах в качестве фильтра направления торговли и торговля только в более широком направлении тенденции. Это может уменьшить обратную торговлю и повысить шансы на победу.
Динамическая корректировка: Замена фиксированного порога (−0,95⁄0,95) на порог, основанный на динамической коррекции волатильности рынка. Использование более узкого порога в условиях низкой волатильности и более широкого порога в условиях высокой волатильности, чтобы адаптироваться к потребностям в генерировании сигналов в различных рыночных условиях.
Механизм подтверждения поставки: Включение компонента анализа объема транзакций, требующего значительной поддержки объема транзакций при появлении сигнала, позволяет отфильтровать низкокачественные прорывные сигналы и уменьшить убытки от ложных прорывов.
Оптимизация управления капиталом: Текущая стратегия использует фиксированные проценты для управления позициями, которые можно улучшить, чтобы адаптироваться к системе управления капиталом, основанной на волатильности рынка и выигрышной вероятности, увеличивая позиции при высоком сигнале уверенности и уменьшая позиции при низком сигнале уверенности.
Машинное обучение: Использование алгоритмов машинного обучения для самостоятельной адаптационной оптимизации параметров показателя IFTCCI (CCI-циклов и WMA-циклов) для автоматической адаптации оптимального параметрового сочетания в зависимости от различных рыночных условий для повышения адаптивности стратегии.
Фильтр времени транзакции: Включение фильтра времени торговли, чтобы избежать периодов высокой волатильности перед открытием и закрытием рынка или во время публикации важных экономических данных, чтобы уменьшить непредсказуемые колебания, вызванные внезапными событиями.
Корреляционный анализ: Введение анализа корреляции с другими рынками или активами повышает доверие к торговым сигналам и устойчивость стратегии, когда одновременно появляются аналогичные сигналы на нескольких связанных рынках.
Автоматическая антидвойная кривая 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")