A estratégia de impulso duplo visa comprar baixo e vender alto, identificando padrões de candelabro ascendentes ou descendentes nos preços das ações.
A estratégia baseia-se em duas métricas:Número de barras ascendenteseNúmero de barras que caem.
Vai longo quando o fechamento sobe acima das barras LongEnterAfter, feche longo quando o fechamento cai abaixo das barras LongExitAfter.
Vai curto quando o fechamento cai abaixo das barras ShortEnterAfter, feche curto quando o fechamento sobe acima das barras ShortExitAfter.
As regras exatas de negociação são determinadas por sintonização de LongEnterAfter, LongExitAfter, ShortEnterAfter e ShortExitAfter.
A estratégia capta as mudanças de momento nos preços das ações monitorando os preços de fechamento diários.
Em resumo, o núcleo da estratégia de impulso duplo é identificar tendências de alta e baixa de preços de curto prazo para determinar a direção e o momento do comércio.
A estratégia de dupla dinâmica tem as seguintes vantagens:
Lógica simples e direta que é fácil de entender e implementar.
Parâmetros configuráveis para ajustar a agressividade estratégica.
Captura o impulso a curto prazo que ajuda a capitalizar as tendências das ações.
O stop loss pode controlar os riscos de forma eficaz.
Funciona bem para ações sensíveis a flutuações de preços, especialmente ações de pequena capitalização.
Em geral, a estratégia de impulso duplo é adequada para investidores que são sensíveis às mudanças de preços e buscam uma alta frequência de negociação.
A estratégia de duplo ímpeto apresenta igualmente os seguintes riscos:
Muito dependente das definições dos parâmetros, o que leva a uma grande diferença de desempenho.
Ignora os movimentos de longo prazo concentrando-se apenas nas tendências de curto prazo.
A alta frequência de negociação aumenta os custos e os riscos de deslizamento.
A configuração inadequada de stop loss pode conduzir a perdas inaceitáveis.
Não é adequado para ações de curto prazo ou de longo prazo.
Riscos de sermos enganados pelo dinheiro inteligente quando o volume se esgote.
Os riscos podem ser mitigados por:
Ajuste dos parâmetros para reduzir a frequência de negociação e os riscos de otimização excessiva.
Permitir que períodos de detenção mais longos tenham em conta as tendências a médio e longo prazo.
Configuração de stop loss para controlar estritamente a perda de uma única transação.
Escolher ações com grande impulso e evitar ações agitadas.
Aumentar a importância do volume para evitar riscos quando o volume diminui.
A estratégia pode ser reforçada de várias formas:
Adicione indicadores de tendência como MACD e KDJ para evitar negociações contra a tendência principal.
Adicionar condição de volume para evitar entradas quando o volume diminui.
Adicionar stop loss móvel para bloquear os lucros, por exemplo, xN ATR trailing stop.
Otimizar os parâmetros através de backtesting para melhorar a estabilidade.
Incorporar modelos de negociação algorítmicos para uma melhor gestão das ordens.
Aplicar aprendizado de máquina para descobrir sinais mais eficazes.
Em geral, o foco principal é melhorar a estabilidade, controlar os riscos e descobrir novos fatores alfa.
A estratégia de impulso duplo multiplica o mercado através de métricas de barra ascendente/abaixada consecutivas simples. É fácil de implementar e a agressividade é ajustável. É adequado para comerciantes de curto prazo, especialmente para ações de pequena capitalização.
/*backtest start: 2022-10-02 00:00:00 end: 2023-10-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // strategy(title="simple momentum", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // ==================================== // STUDY AND STRATEGY // Inputs LongEnterAfter = input(title="enter long after X rising blocks", defval=2) LongExitAfter = input(title="exit long after X falling blocks", defval=1) ShortEnterAfter = input(title="enter short after X falling blocks", defval=2) ShortExitAfter = input(title="exit short after X rising blocks", defval=1) // Criteria Valid = change(time) LongEnter = Valid and rising(close, LongEnterAfter) LongExit = Valid and falling(close, LongExitAfter) ShortEnter = Valid and falling(close, ShortEnterAfter) ShortExit = Valid and rising(close, ShortExitAfter) // ==================================== // STRATEGY TradeSinceYear = input(title="trade since year", defval=2017) TradeSinceMonth = input(title="trade since month", defval=1) if year > TradeSinceYear or (year == TradeSinceYear and month >= TradeSinceMonth) strategy.entry("long", strategy.long, when = LongEnter) strategy.close("long", when = LongExit) strategy.entry("short", strategy.short, when = ShortEnter) strategy.close("short", when = ShortExit)