Стратегия двойной системы импульсной торговли

Автор:Чао Чжан, Дата: 2023-11-22 15:26:28
Тэги:

Обзор

Эта стратегия объединяет индикаторы MACD и Stoch RSI для создания двойной торговой системы для отслеживания тренда и суждения о перепроданности / перекупке. Стратегия также строит индикаторы на ежедневных и 4-часовых временных рамках для вынесения суждений о нескольких временных рамках, чтобы уменьшить вероятность ошибочного суждения.

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

Стратегия сочетает в себе индикаторы MACD и Stoch RSI, которые являются различными типами технических индикаторов, для конфигурации.

Стратегия сначала строит индикаторы MACD и Stoch RSI на ежедневных и 4-часовых временных рамках соответственно для суждений о тренде и перекупе / перепродаже. Когда сигналы запускаются на обоих временных рамках, выполняются соответствующие операции покупки / продажи.

В частности, индикатор MACD построен с помощью линий DIF и DEA, образующих золотые/мертвые кресты для суждения; индикатор Stoch RSI построен с помощью линий K и D, образующих золотые/мертвые кресты для суждения.

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

Анализ преимуществ

Эта стратегия имеет следующие преимущества:

  1. Сочетание системы с двумя показателями для всеобъемлющего суждения и более высокой точности решения
  2. Применение многочасовых рамок для снижения вероятности ошибочного суждения
  3. Принятие определения тренда и суждения о перекупе/перепродаже с учетом как скорости цен, так и относительной силы
  4. Гибкие параметры показателей, регулируемые для различных продуктов и рыночных условий
  5. Чистая структура кода легко понять и расширить

Анализ рисков

Эта стратегия также сопряжена с некоторыми рисками:

  1. Существуют системные рыночные риски, которых нельзя полностью избежать
  2. Ненадлежащие настройки параметров показателей могут привести к переоценке или упущенным возможностям
  3. Двойные показатели могут по-прежнему давать одновременно неверные сигналы, но с меньшей вероятностью, чем одиночные
  4. Не в состоянии справиться с резкими изменениями на рынке, такими как события Черного лебедя.

Контрмеры:

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

Руководство по оптимизации

Эта стратегия также может быть улучшена в следующих аспектах:

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

Заключение

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


/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-15 10:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[RS]Khizon (UWTI) Strategy V0', shorttitle='K', overlay=false, pyramiding=0, initial_capital=100000, currency=currency.USD)
//  ||  Inputs:
macd_src = input(title='MACD Source:',  defval=close)
macd_fast = input(title='MACD Fast Length:',  defval=12)
macd_slow = input(title='MACD Slow Length:',  defval=26)
macd_signal_smooth = input(title='MACD Signal Smoothing:',  defval=9)
srsi_src = input(title='SRSI Source:',  defval=close)
srsi_rsi_length = input(title='SRSI RSI Length:',  defval=14)
srsi_stoch_length = input(title='SRSI Stoch Length:',  defval=14)
srsi_smooth = input(title='SRSI Smoothing:',  defval=3)
srsi_signal_smooth = input(title='SRSI Signal Smoothing:',  defval=3)
//  ||  Strategy Inputs:
trade_size = input(title='Trade Size in USD:', type=float, defval=1)
buy_trade = input(title='Perform buy trading?', type=bool, defval=true)
sel_trade = input(title='Perform sell trading?', type=bool, defval=true)
//  ||  MACD(close, 12, 26, 9):     ||---------------------------------------------||
f_macd_trigger(_src, _fast, _slow, _signal_smooth)=>
    _macd = ema(_src, _fast) - ema(_src, _slow)
    _signal = sma(_macd, _signal_smooth)
    _return_trigger = _macd >= _signal ? true : false
//  ||  Stoch RSI(close, 14, 14, 3, 3)  ||-----------------------------------------||
f_srsi_trigger(_src, _rsi_length, _stoch_length, _smooth, _signal_smooth)=>
    _rsi = rsi(_src, _rsi_length)
    _stoch = sma(stoch(_rsi, _rsi, _rsi, _stoch_length), _smooth)
    _signal = sma(_stoch, _signal_smooth)
    _return_trigger = _stoch >= _signal ? true : false
//  ||-----------------------------------------------------------------------------||
//  ||-----------------------------------------------------------------------------||
//  ||  Check Directional Bias from daily timeframe:
daily_trigger = security('USOIL', 'D', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))
h4_trigger = security('USOIL', '240', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))

plot(title='D1T', series=daily_trigger?0:na, style=circles, color=blue, linewidth=4, transp=65)
plot(title='H4T', series=h4_trigger?0:na, style=circles, color=navy, linewidth=2, transp=0)

sel_open = sel_trade and not daily_trigger and not h4_trigger
buy_open = buy_trade and daily_trigger and h4_trigger
sel_close = not buy_trade and daily_trigger and h4_trigger
buy_close = not sel_trade and not daily_trigger and not h4_trigger
strategy.entry('sel', long=false, qty=trade_size, comment='sel', when=sel_open)
strategy.close('sel', when=sel_close)
strategy.entry('buy', long=true, qty=trade_size, comment='buy', when=buy_open)
strategy.close('buy', when=buy_close)


Больше