Atravessando a estratégia de fuga

Autora:ChaoZhang, Data: 2023-10-12 16:47:55
Tags:

Resumo

A estratégia de cruzamento da média móvel é uma estratégia quantitativa muito comum. Ela usa a cruz de ouro e a cruz da morte das médias móveis para determinar tendências e lucros. Quando a média móvel de curto prazo cruza acima da média móvel de longo prazo, ela sinaliza uma tendência de alta e uma posição longa pode ser tomada. Quando a média móvel de curto prazo cruza abaixo da média móvel de longo prazo, ela sinaliza uma tendência de queda e uma posição curta pode ser tomada.

Estratégia lógica

Esta estratégia é baseada na cruz de ouro e cruz de morte das médias móveis para determinar pontos de entrada e saída.upOrDownelongOrShortDeterminar o longo ou curto;percentInputfixar o limite percentual de variação dos preços;closePositionDaysPara definir o número de dias para manter a posição.

A lógica central é: calcular o aumento/diminuição de hoje em relação a ontem. Se atingir a porcentagem do limiar de entrada, um sinal de negociação é acionado. Se for um sinal longo, quando o preço de hoje aumenta mais do que o limiar em relação a ontem, vá longo. Se for um sinal curto, quando o preço de hoje diminui mais do que o limiar em relação a ontem, vá curto.

Após o longo / curto, o dia de entrada e os próximos 4 dias serão marcados com cores no gráfico.

Vantagens

  • Usar cruzamento de médias móveis para determinar a tendência é um método maduro e confiável
  • Lógica estratégica simples e clara, fácil de compreender e implementar
  • A frequência pode ser controlada ajustando os parâmetros
  • O mecanismo automático de stop loss controla eficazmente os riscos

Riscos

  • As médias móveis têm efeitos atrasados, podendo perder o melhor momento de mudanças rápidas de preços
  • Podem ocorrer flutuações significativas de preços a curto prazo, gerando sinais desnecessários
  • Configurações de parâmetros inadequadas podem afetar o desempenho da estratégia
  • Incapacidade de responder eficazmente aos impactos de eventos inesperados

Gestão de riscos:

  1. Otimizar os parâmetros da média móvel, períodos mais longos ajudam a filtrar o ruído
  2. Aumentar a percentagem de limiar para reduzir as transacções desnecessárias
  3. Ensaiar diferentes períodos de retenção para controlar perdas únicas
  4. Combinar com outros indicadores para confirmar ainda mais os sinais

Orientações de otimização

  • Considere usar EMA, DMA em vez de SMA para torná-lo mais sensível
  • Adicionar mecanismos de stop loss, por exemplo, stop loss ao quebrar a média
  • Adicionar outros indicadores técnicos como MACD, KDJ para combinação, melhorando a taxa de vitória
  • Tente métodos de aprendizagem de máquina para otimizar automaticamente parâmetros
  • Otimizar o tempo de entrada e saída, como fuga, etc.

Resumo

A estratégia de cruzamento da média móvel é uma estratégia quantitativa de negociação muito simples e prática. Ao julgar a relação entre as tendências de curto e longo prazo, ela se beneficia da natureza de tendência dos preços dos ativos. Esta estratégia é fácil de implementar com lógica clara e forma a base de muitas estratégias quantitativas de negociação. Podemos obter um melhor desempenho através do ajuste e otimização de parâmetros. Mas também precisamos gerenciar riscos e evitar o uso indevido.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  Created by Leon Ross

strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, 
  pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, 
  calc_on_every_tick=true, initial_capital=100000)
  
//Inputs
longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false
upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day
percentInput = input(title="Percent", type=float, defval=4.5)
closePositionDays = input(title="How Many Days to Close Position", defval=4)

//Conditions
//percentUpValue = (close / close[1]) - 1
//percentUp = percentUpValue >= (percentInput/100.0)
//upConditions = percentUp
//percentDownValue = 1- (close / close[1])
//percentDown = percentDownValue >= (percentInput/100.0)
//downConditions = percentDown
upValue = (close / close[1]) - 1
downValue = 1 - (close / close[1])
allConditions = if(upOrDown)
    upValue >= (percentInput/100.0)
else
    downValue >= (percentInput/100.0)
    
//Plots
bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70)
bgcolor(allConditions ? silver : na, transp=70, offset=1)
bgcolor(allConditions ? silver : na, transp=70, offset=2)
bgcolor(allConditions ? silver : na, transp=70, offset=3)
bgcolor(allConditions ? silver : na, transp=70, offset=4)
//bgcolor(downConditions == 1 ? red : na, transp=70)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4)

//Entires
if(longOrShort)
    strategy.entry(id = "Long", long = true, when = allConditions) 
else
    strategy.entry(id = "Short", long = false, when = allConditions)

//Exits
if (barssince(allConditions) == closePositionDays)
    if(longOrShort)
        strategy.close("Long")
    else
        strategy.close("Short")




Mais.