Estratégia de negociação de impulso do sistema de dupla via

Autora:ChaoZhang, Data: 2023-11-22 15:26:28
Tags:

Resumo

Esta estratégia combina os indicadores MACD e Stoch RSI para construir um sistema de negociação de duplo trilho para rastreamento de tendências e julgamento de sobrevenda / sobrecompra. A estratégia também constrói indicadores nos prazos diários e de 4 horas para fazer julgamentos de vários prazos para reduzir a probabilidade de julgamento errado.

Princípio da estratégia

A estratégia combina os indicadores MACD e Stoch RSI, que são diferentes tipos de indicadores técnicos, para configuração.

A estratégia primeiro constrói os indicadores MACD e Stoch RSI nos quadros de tempo diários e de 4 horas, respectivamente, para julgamentos de tendência e sobrecompra/supervenda.

Especificamente, o indicador MACD é construído com as linhas DIF e DEA formando cruzes douradas/mortas para julgamento; o indicador Stoch RSI é construído com as linhas K e D formando cruzes douradas/mortas para julgamento.

Assim, através da aplicação abrangente do sistema de dois indicadores e dos julgamentos de vários prazos, a estratégia avalia a velocidade dos preços e a força relativa de forma completa, o que ajuda a melhorar a precisão das decisões e a obter melhores retornos.

Análise das vantagens

Esta estratégia tem as seguintes vantagens:

  1. Combinação de um sistema de dois indicadores para um julgamento abrangente e uma maior precisão da decisão
  2. Aplicação de quadros de tempo múltiplos para reduzir a probabilidade de erro de julgamento
  3. Adotar o acompanhamento da tendência e o julgamento da sobrecompra/supervenda para considerar a velocidade dos preços e a força relativa
  4. Parâmetros flexíveis de indicadores ajustáveis para diferentes produtos e ambientes de mercado
  5. Estrutura de código limpa fácil de entender e expandir

Análise de riscos

Há também alguns riscos com esta estratégia:

  1. Existem riscos sistémicos de mercado que não podem ser totalmente evitados
  2. As definições inadequadas dos parâmetros do indicador podem conduzir a excesso de negociação ou a oportunidades perdidas
  3. Indicadores duplos podem ainda dar sinais errados simultâneos, mas menos prováveis do que os únicos
  4. Incapaz de lidar com mudanças drásticas do mercado como os eventos do cisne negro

Contramedidas:

  1. Otimizar os parâmetros e ajustar as condições de negociação para reduzir erros de apreciação
  2. Incorporar mais indicadores para julgamentos combinados
  3. Adicionar mecanismos de stop loss para controlar o risco de perda única

Orientações de otimização

Esta estratégia pode também ser melhorada nos seguintes aspectos:

  1. Incorporar mais indicadores nas estratégias de múltiplos indicadores
  2. Adicionar algoritmos de aprendizado de máquina para otimização de parâmetros dinâmicos
  3. Combinar indicadores de sentimento, notícias, etc., para um julgamento mais abrangente da situação do mercado
  4. Adicionar stop loss, estratégias de lucro para otimizar o gerenciamento de dinheiro
  5. Expandir para mais produtos comerciais para descobrir melhores oportunidades

Conclusão

Por meio da aplicação combinada do sistema de indicadores duplos e julgamentos de vários prazos, essa estratégia julga a velocidade dos preços e a força relativa completamente, o que pode capturar efetivamente as tendências do mercado e melhorar as deficiências de indicadores individuais. [trans]


/*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)


Mais.