Мультирыночная адаптивная мультииндикаторная комбинированная стратегия отслеживания тренда

CMF DPO ROC WMA ATR
Дата создания: 2024-12-12 15:23:28 Последнее изменение: 2024-12-12 15:23:28
Копировать: 0 Количество просмотров: 459
1
Подписаться
1617
Подписчики

Мультирыночная адаптивная мультииндикаторная комбинированная стратегия отслеживания тренда

Обзор

Это адаптивная стратегия для отслеживания тенденций, основанная на комбинации нескольких технических показателей, которая может автоматически корректировать параметры в соответствии с различными рыночными характеристиками. Эта стратегия использует индикаторы денежных потоков (CMF), индикаторы ценовых колебаний (DPO) и индикатора Коппока (Coppock) для захвата рыночных тенденций и адаптации к различным рыночным характеристикам путем корректировки фактора волатильности.

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

Центральная логика стратегии заключается в том, чтобы подтвердить направление тренда и время торговли с помощью комбинации нескольких индикаторов. В частности:

  1. Использование CMF-индикатора для измерения движения капитала и оценки настроений рынка
  2. Показатель DPO, исключающий влияние долгосрочных тенденций, ориентирован на краткосрочные колебания цен
  3. Использование усовершенствованного индикатора Coppock для захвата переменных в тренде
  4. Торговые сигналы создаются, когда три индикатора подтверждают друг друга.
  5. Динамический расчет стоп-стоп-позиции через ATR
  6. Автоматическая корректировка параметров уровня и волатильности в зависимости от рыночных характеристик (акции, валюты, фьючерсы)

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

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

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

  1. Многопоказательная система может быть отсталой и упустить возможность в быстром движении
  2. Избыточная оптимизация параметров может привести к избыточному совмещению
  3. В период рыночного сдвига может возникнуть ошибочный сигнал
  4. Слишком жесткие настройки могут приводить к частым остановкам
  5. Стоимость сделки влияет на стратегическую прибыль Рекомендуется управлять рисками следующим образом:
  • Регулярно проверяйте параметры
  • Мониторинг позиций в режиме реального времени
  • Разумный контроль над уровнем леверинга
  • Настройка максимального ограничения на отзыв

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

  1. Введение оценки состояния волатильности рынка с использованием различных комбинаций параметров в различных волатильных условиях
  2. Добавление большего количества индикаторов для идентификации рыночных особенностей и повышение адаптивности стратегии
  3. Оптимизация механизма остановки убытков, можно рассмотреть использование мобильного остановки убытков
  4. Разработка системы автоматической оптимизации параметров с регулярной корректировкой параметров
  5. Добавление модуля анализа стоимости транзакций
  6. Присоединение к механизму раннего предупреждения риска

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Market Adaptive Trading Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Input parameters
i_market_type = input.string("Crypto", "Market Type", options=["Forex", "Crypto", "Futures"])
i_risk_percent = input.float(1, "Risk Per Trade (%)", minval=0.1, maxval=100, step=0.1)
i_volatility_adjustment = input.float(1.0, "Volatility Adjustment", minval=0.1, maxval=5.0, step=0.1)
i_max_position_size = input.float(5.0, "Max Position Size (%)", minval=1.0, maxval=100.0, step=1.0)
i_max_open_trades = input.int(3, "Max Open Trades", minval=1, maxval=10)

// Indicator Parameters
i_cmf_length = input.int(20, "CMF Length", minval=1)
i_dpo_length = input.int(21, "DPO Length", minval=1)
i_coppock_short = input.int(11, "Coppock Short ROC", minval=1)
i_coppock_long = input.int(14, "Coppock Long ROC", minval=1)
i_coppock_wma = input.int(10, "Coppock WMA", minval=1)
i_atr_length = input.int(14, "ATR Length", minval=1)

// Market-specific Adjustments
volatility_factor = i_market_type == "Forex" ? 0.1 : i_market_type == "Futures" ? 1.5 : 1.0
volatility_factor *= i_volatility_adjustment
leverage = i_market_type == "Forex" ? 100.0 : i_market_type == "Futures" ? 20.0 : 3.0

// Calculate Indicators
mf_multiplier = ((close - low) - (high - close)) / (high - low)
mf_volume = mf_multiplier * volume
cmf = ta.sma(mf_volume, i_cmf_length) / ta.sma(volume, i_cmf_length)

dpo_offset = math.floor(i_dpo_length / 2) + 1
dpo = close - ta.sma(close, i_dpo_length)[dpo_offset]

roc1 = ta.roc(close, i_coppock_short)
roc2 = ta.roc(close, i_coppock_long)
coppock = ta.wma(roc1 + roc2, i_coppock_wma)

atr = ta.atr(i_atr_length)

// Define Entry Conditions
long_condition = cmf > 0 and dpo > 0 and coppock > 0 and ta.crossover(coppock, 0)
short_condition = cmf < 0 and dpo < 0 and coppock < 0 and ta.crossunder(coppock, 0)

// Calculate Position Size
account_size = strategy.equity
risk_amount = math.min(account_size * (i_risk_percent / 100), account_size * (i_max_position_size / 100))
position_size = (risk_amount / (atr * volatility_factor)) * leverage

// Execute Trades
if (long_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close - (atr * 2 * volatility_factor)
    tp_price = close + (atr * 3 * volatility_factor)
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Long Exit", "Long", stop=sl_price, limit=tp_price)

if (short_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close + (atr * 2 * volatility_factor)
    tp_price = close - (atr * 3 * volatility_factor)
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Short Exit", "Short", stop=sl_price, limit=tp_price)

// Plot Indicators
plot(cmf, color=color.blue, title="CMF")
plot(dpo, color=color.green, title="DPO")
plot(coppock, color=color.red, title="Coppock")
hline(0, "Zero Line", color=color.gray)

// Alerts
alertcondition(long_condition, title="Long Entry", message="Potential Long Entry Signal")
alertcondition(short_condition, title="Short Entry", message="Potential Short Entry Signal")

// // Performance reporting
// if barstate.islastconfirmedhistory
//     label.new(bar_index, high, text="Strategy Performance:\nTotal Trades: " + str.tostring(strategy.closedtrades) + 
//               "\nWin Rate: " + str.tostring(strategy.wintrades / strategy.closedtrades * 100, "#.##") + "%" +
//               "\nProfit Factor: " + str.tostring(strategy.grossprofit / strategy.grossloss, "#.##"))