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


Дата создания: 2024-01-17 14:02:22 Последнее изменение: 2024-01-17 14:02:22
Копировать: 0 Количество просмотров: 568
1
Подписаться
1617
Подписчики

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

Обзор

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

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

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

MACD-индикатор состоит из быстрой линии (быстрой линии) и медленной линии (медленной линии) и их разницы, которая отражает объединение и разделение среднего краткосрочного и долгосрочного среднего значения. При прохождении медленной линии на быстрой линии - сигнал покупки, при прохождении медленной линии на быстрой линии - сигнал продажи.

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

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

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

  1. В сочетании с двойным фактором оценки рыночных тенденций, можно эффективно отфильтровать ложные сигналы и повысить точность сигналов.

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

  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)