В процессе загрузки ресурсов... загрузка...

Двухцепочечная гибридная система отслеживания импульса торговли EMA

Автор:Чао Чжан, Дата: 2024-11-29 17:04:57
Тэги:ЕМАМ.А.

img

Обзор

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

Принципы стратегии

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

В цепочке 1 (Долгосрочная тенденция) используются еженедельные и ежедневные временные рамки:

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

В цепочке 2 (Краткосрочный импульс) используются 12-часовые и 9-часовые временные рамки:

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

Преимущества стратегии

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

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

  1. Риск изменения тенденции: может проявиться отставание на волатильных рынках
  2. Риск конфигурации временных рамок: на разных рынках могут потребоваться различные комбинации временных рамок
  3. Риск оптимизации параметров: чрезмерная оптимизация может привести к переподключению
  4. Риск перекрытия сигналов: одновременные триггеры из обеих цепочек могут увеличить риск позиции.

Предложения по контролю риска:

  • Установка разумных уровней стоп-лосса
  • Корректировка параметров на основе характеристик рынка
  • Проводить тщательное тестирование перед торговлей в реальном времени
  • Размещение контрольных позиций по сделкам

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

  1. Оптимизация фильтрации сигнала:
  • Добавить механизм подтверждения объема
  • Включить показатели волатильности
  • Включить подтверждение силы тренда
  1. Оптимизация контроля рисков:
  • Разработка динамического механизма стоп-лосса
  • Система управления позицией по проектированию
  • Добавить функцию управления снижением
  1. Оптимизация сроков:
  • Исследование оптимальных комбинаций временных рамок
  • Разработка механизмов адаптивных временных рамок
  • Добавить функционал распознавания состояния рынка

Резюме

Система Dual Chain Hybrid Momentum EMA Tracking Trading System достигает многомерного анализа рынка с помощью инновационного сочетания долгосрочных и краткосрочных стратегий скользящих средних. Дизайн системы гибкий и может быть скорректирован в соответствии с различными рыночными условиями и стилями трейдеров, демонстрируя сильную практичность. Благодаря надлежащему контролю рисков и непрерывной оптимизации эта стратегия имеет потенциал для достижения стабильной доходности в фактической торговле.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='Dual Chain Strategy', shorttitle='DualChain', overlay=true)

// User inputs for enabling/disabling chains
enableChain1 = input.bool(true, title='Enable Chain 1')
enableChain2 = input.bool(true, title='Enable Chain 2')

// User inputs for the first chain
len1 = input.int(10, minval=1, title='Length Chain 1 EMA', group="Chain 1")
src1 = input(close, title='Source Chain 1', group="Chain 1")
tf1_entry = input.timeframe("W", title='Chain 1 Entry Timeframe', group="Chain 1")
tf1_exit = input.timeframe("D", title='Chain 1 Exit Timeframe', group="Chain 1")

// Weekly timeframe EMA for Chain 1
entryEMA1 = request.security(syminfo.tickerid, tf1_entry, ta.ema(src1, len1))

// Daily timeframe EMA for Chain 1
exitEMA1 = request.security(syminfo.tickerid, tf1_exit, ta.ema(src1, len1))

// User inputs for the second chain
len2 = input.int(9, minval=1, title='Length Chain 2 EMA', group="Chain 2")
src2 = input(close, title='Source Chain 2', group="Chain 2")
tf2_entry = input.timeframe("720", title='Chain 2 Entry Timeframe (12H)', group="Chain 2")  // 12 hours
tf2_exit = input.timeframe("540", title='Chain 2 Exit Timeframe (9H)', group="Chain 2")    // 9 hours

// Entry timeframe EMA for Chain 2
entryEMA2 = request.security(syminfo.tickerid, tf2_entry, ta.ema(src2, len2))

// Exit timeframe EMA for Chain 2
exitEMA2 = request.security(syminfo.tickerid, tf2_exit, ta.ema(src2, len2))

// Plotting Chain 1 EMAs
plot(enableChain1 ? entryEMA1 : na, title='Chain 1 Entry EMA', color=color.new(color.blue, 0))
plot(enableChain1 ? exitEMA1 : na, title='Chain 1 Exit EMA', color=color.new(color.yellow, 0))

// Plotting Chain 2 EMAs
plot(enableChain2 ? entryEMA2 : na, title='Chain 2 Entry EMA', color=color.new(color.green, 0))
plot(enableChain2 ? exitEMA2 : na, title='Chain 2 Exit EMA', color=color.new(color.red, 0))

// Backtesting period
startDate = input(timestamp('2015-07-27'), title="StartDate")
finishDate = input(timestamp('2026-01-01'), title="FinishDate")
time_cond = true

// Entry Condition (Chain 1)
bullishChain1 = enableChain1 and ta.crossover(src1, entryEMA1)
bearishChain1 = enableChain1 and ta.crossunder(src1, entryEMA1)

// Exit Condition (Chain 1)
exitLongChain1 = enableChain1 and ta.crossunder(src1, exitEMA1)
exitShortChain1 = enableChain1 and ta.crossover(src1, exitEMA1)

// Entry Condition (Chain 2)
bullishChain2 = enableChain2 and ta.crossover(src2, entryEMA2)
bearishChain2 = enableChain2 and ta.crossunder(src2, entryEMA2)

// Exit Condition (Chain 2)
exitLongChain2 = enableChain2 and ta.crossunder(src2, exitEMA2)
exitShortChain2 = enableChain2 and ta.crossover(src2, exitEMA2)

// Debugging: Plot entry signals for Chain 1
plotshape(bullishChain1, color=color.new(color.green, 0), style=shape.labelup, text='BUY C1', location=location.belowbar)
plotshape(bearishChain1, color=color.new(color.red, 0), style=shape.labeldown, text='SELL C1', location=location.abovebar)

// Debugging: Plot entry signals for Chain 2
plotshape(bullishChain2, color=color.new(color.green, 0), style=shape.labelup, text='BUY C2', location=location.belowbar)
plotshape(bearishChain2, color=color.new(color.red, 0), style=shape.labeldown, text='SELL C2', location=location.abovebar)

// Trade Execution for Chain 1
if bullishChain1 and time_cond
    strategy.entry('BUY_Chain_1', strategy.long)

if bearishChain1 and time_cond
    strategy.entry('SELL_Chain_1', strategy.short)

// Exit trades based on daily conditions for Chain 1
if exitLongChain1 and strategy.opentrades > 0
    strategy.close(id='BUY_Chain_1', when=exitLongChain1)

if exitShortChain1 and strategy.opentrades > 0
    strategy.close(id='SELL_Chain_1', when=exitShortChain1)

// Trade Execution for Chain 2
if bullishChain2 and time_cond
    strategy.entry('BUY_Chain_2', strategy.long)

if bearishChain2 and time_cond
    strategy.entry('SELL_Chain_2', strategy.short)

// Exit trades based on daily conditions for Chain 2
if exitLongChain2 and strategy.opentrades > 0
    strategy.close(id='BUY_Chain_2', when=exitLongChain2)

if exitShortChain2 and strategy.opentrades > 0
    strategy.close(id='SELL_Chain_2', when=exitShortChain2)

// Close all positions outside the backtesting period
if not time_cond
    strategy.close_all()


Связанные

Больше