Стратегия торговли, основанная на многофакторном тренде

Автор:Чао Чжан, Дата: 2024-01-17 14:02:22
Тэги:

img

Резюме

Эта стратегия сочетает в себе индикатор движущейся средней конвергенции дивергенции (MACD) и индикатор стохастического индекса относительной силы (Stoch RSI) для определения направления тренда рынка, длинный, когда тренд растет, и короткий, когда тренд падает.

Логика стратегии

Эта стратегия использует индикаторы MACD и Stoch RSI для определения направления тренда рынка.

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

Индикатор Stoch RSI объединяет сильные стороны как индикаторов RSI, так и Stoch, чтобы показать уровни перекупа и перепродажи на рынке. Когда Stoch RSI больше линии сигнала Stoch RSI, это сигнал покупки. Когда он ниже линии сигнала, это сигнал продажи.

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

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

  1. Сочетание двух факторов для оценки движения рынка может эффективно отфильтровать ложные сигналы и улучшить точность сигнала

  2. Подтверждение сигналов через высокие и низкие временные рамки (ежедневные и 4H) избегает получения whipsawed

  3. Следуя тенденциям, избегайте неуравновешенных рынков

  4. Простая и понятная логика стратегии, легкая для понимания и выполнения

Риски и решения

  1. Невозможность эффективно определить точки переворота тренда может привести к запуску стоп-лосса
  • Оптимизировать параметры или добавить другие показатели для суждения
  1. Единый контракт не может диверсифицировать рыночные систематические риски
  • Увеличение других контрактов или запасов для диверсификации
  1. Не могу определить влияние внезапных крупных событий
  • Объединение фундаментального анализа для повышения осведомленности о риске

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

  1. Корректировать параметры MACD и Stoch RSI для оптимизации пунктов входа и выхода

  2. Добавьте стратегии остановки, чтобы закрепить прибыль

  3. Добавление размера позиции к контролю по риску сделки

  4. Добавьте больше факторов для оценки для улучшения точности сигнала

  5. Использование методов машинного обучения для динамической оптимизации параметров

Резюме

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


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='[RS]Khizon (UGAZ) 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('NGAS', '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('NGAS', '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)


Больше