Estratégia de duplo impulso

Autora:ChaoZhang, Data: 28 de setembro de 2023
Tags:

Resumo

A estratégia de impulso duplo usa indicadores de impulso rápidos e lentos para gerar sinais de entrada e saída. É uma estratégia de reação rápida adequada para instrumentos de tendência nos prazos diários e de 4 horas. Esta implementação é baseada no aplicativo QuantCT.

A estratégia permite configurar o modo longo / curto ou longo apenas. Também permite habilitar a perda de parada fixa ou ignorá-la para que a estratégia atue apenas em sinais de entrada e saída.

Estratégia lógica

A estratégia utiliza um momento de período rápido (default 5 dias) e um momento de período lento (default 10 dias).

Quando o momento lento e o momento rápido estão ambos acima de 0, um sinal de entrada longo é gerado.

Quando o momento lento ou o momento rápido cai abaixo de 0, um sinal de saída é gerado.

Da mesma forma, quando o momento lento e o momento rápido estão ambos abaixo de 0, um sinal de entrada curto é gerado.

Assim, a estratégia capta as alterações de tendência utilizando o cruzamento de dois indicadores de dinâmica com períodos diferentes.

Análise das vantagens

  • O uso de momento duplo proporciona uma detecção mais precisa da mudança de tendência e menos falsos sinais.

  • O impulso do período rápido reage rapidamente às mudanças do mercado, enquanto o período lento filtra o ruído.

  • Os modos flexíveis longo/curto ou apenas longo correspondem a diferentes preferências comerciais.

  • Controlo opcional do risco.

  • A natureza de reação rápida torna-o adequado para negociação de tendências em prazos diários ou mais longos para ganhos excessivos.

Análise de riscos

  • O impulso duplo baseia-se em valores de indicador acima/abaixo de 0, que apresentam algum atraso.

  • A estratégia é mais dependente da tendência e pode ter um desempenho inferior em mercados de intervalo com mais flanges.

  • Não usar o stop loss pode resultar em grandes perdas.

  • A escolha errada de símbolos ou de prazos pode levar a resultados ruins.

Para controlar os riscos, ajustar os períodos de impulso, utilizar uma percentagem de stop loss fixa razoável, selecionar símbolos de tendência forte e executar em prazos diários ou superiores.

Oportunidades de melhoria

A estratégia pode ser reforçada de várias formas:

  1. Adicione filtros como MACD ou RSI para evitar negociações erradas em pontos de virada da tendência.

  2. Adicionar perda de parada adaptativa para ajustar a distância de parada com base na volatilidade do mercado.

  3. Otimizar os parâmetros de momento para diferentes símbolos através de otimização gradual, análise de avanço, etc.

  4. Adicionar regras de dimensionamento da posição para ajustar o novo tamanho da posição com base no desempenho anterior.

  5. Diferenciar as condições de mercado longas e curtas para entradas e saídas assimétricas.

Conclusão

A estratégia de Momentum Duplo capta a direção da tendência usando cruzamento de momentum rápido e lento. Usando indicadores simples para detectar mudanças de tendência, é adequado para montar tendências intradiárias ou de vários dias e gerar retornos excessivos.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © QuantCT

//@version=4
strategy("Momentum Strategy Idea",
         shorttitle="Momentum", 
         overlay=false,
         pyramiding=0,     
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=1000,           
         commission_type=strategy.commission.percent, 
         commission_value=0.075)

// ____ Inputs

fast_period = input(title="Fast Period", defval=5) 
slow_period = input(title="Slow Period", defval=10)
long_only = input(title="Long Only", defval=false)
slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0)
use_sl = input(title="Use Stop-Loss", defval=false)

// ____ Logic

mom_fast = mom(close, fast_period)
mom_slow = mom(close, slow_period)
    
enter_long = (mom_slow > 0 and mom_fast > 0)
exit_long = (mom_slow < 0 or mom_fast < 0)
enter_short = (mom_slow < 0 and mom_fast < 0)
exit_short = (mom_slow > 0 or mom_fast > 0)

strategy.entry("Long", strategy.long, when=enter_long)
strategy.close("Long", when=exit_long) 
if (not long_only)
    strategy.entry("Short", strategy.short, when=enter_short)
    strategy.close("Short", when=exit_short) 
   
// ____ SL

sl_long = strategy.position_avg_price * (1- (slp/100))
sl_short = strategy.position_avg_price * (1 + (slp/100))
if (use_sl)
    strategy.exit(id="SL", from_entry="Long", stop=sl_long)
    strategy.exit(id="SL", from_entry="Short", stop=sl_short)
    
// ____ Plots

colors = 
 enter_long ? #27D600 :
 enter_short ? #E30202 :
 color.orange

mom_fast_plot = plot(mom_fast, color=colors)
mom_slow_plot = plot(mom_slow, color=colors)
fill(mom_fast_plot, mom_slow_plot, color=colors, transp=50)








Mais.