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

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

Автор:Чао Чжан, Дата: 2024-12-12 15:23:28
Тэги:CMFУправление по защите данныхROCWMAATR

img

Обзор

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

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

Основная логика стратегии заключается в том, чтобы подтвердить направление тренда и сроки торговли посредством сотрудничества с несколькими индикаторами:

  1. Использует индикатор CMF для измерения денежного потока и оценки настроения на рынке
  2. Использует DPO для устранения влияния долгосрочных тенденций и сосредоточения внимания на средне-короткосрочных колебаниях цен
  3. Принимает модифицированный индикатор Коппока для фиксации поворотных точек тренда
  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, "#.##"))

Связанные

Больше