Tendência de seguir uma estratégia baseada na média móvel

Autora:ChaoZhang, Data: 2023-12-20 14:23:49
Tags:

img

Resumo

Esta estratégia usa o modelo de seleção de ações de Mark Minervini e indicadores de média móvel para determinar as tendências de preços para entrada e stop-loss automatizados. Ele julga principalmente se os preços das ações estão em uma tendência de alta e se eles romperam as principais médias móveis para gerar sinais de compra. Ao mesmo tempo, a estratégia define uma linha de stop-loss para parar ativamente as perdas quando os preços caem.

Princípio da estratégia

A estratégia julga principalmente as seguintes condições e gera um sinal de compra quando estas são satisfeitas ao mesmo tempo:

  1. O preço da ação atual está acima das linhas médias móveis de 150 e 200 dias.
  2. A média móvel de 150 dias está acima da média móvel de 200 dias.
  3. A média móvel de 200 dias tem tendência ascendente há pelo menos 1 mês.
  4. A média móvel de 50 dias está acima das médias móveis de 150 e 200 dias.
  5. O preço atual das ações está acima da média móvel de 50 dias.
  6. O preço das ações atuais está pelo menos 25% acima da sua baixa de 52 semanas.
  7. O preço atual das ações está dentro de pelo menos 25% da sua máxima de 52 semanas.

Quando as condições acima são cumpridas, a estratégia julga que o preço da ação está em uma tendência ascendente e gera um sinal de compra.

Além disso, a estratégia também estabelece uma linha de stop-loss. Quando o preço da ação cai 5% atrás de seu pico ou sobe 10%, ele vai parar de perder ou tirar lucro.

Análise das vantagens

  1. Use as ideias de selecção de acções de Mark Minervini para melhorar a rentabilidade.
  2. Use várias médias móveis para confirmar a tendência e evitar perder pontos de compra.
  3. Configure o mecanismo de stop-loss para evitar perdas enormes.

Análise de riscos

  1. Os preços das ações podem ajustar-se a curto prazo, desencadeando um stop loss.
  2. As médias móveis não podem determinar completamente as tendências e podem ocorrer falsas rupturas.
  3. Os rácios de stop loss e take profit não são perfeitos, podendo levar lucros ou expandir perdas prematuramente.

Optimização

  1. Ensaiar combinações de médias móveis com parâmetros diferentes.
  2. Adicionar outros indicadores técnicos para determinar o calendário da entrada.
  3. Optimize as configurações de stop loss e take profit ratio.

Resumo

A estratégia em geral segue a ideia de negociação de tendência, gerando sinais de compra quando a tendência de alta dos preços das ações é confirmada. Ao mesmo tempo, um mecanismo de stop-loss é definido para controlar os riscos. Ao otimizar vários parâmetros detalhados, a estabilidade e lucratividade da estratégia podem ser melhoradas. No entanto, nenhuma estratégia pode evitar completamente os riscos do mercado, por isso os investidores precisam tratá-la com cautela.


/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Pure Mark Minervini 10%TP 5%CL", pyramiding = 0, commission_type=strategy.commission.percent, commission_value=0.08, overlay=true)

ma50 = sma(close,50)
ma150 = sma(close,150)
ma200 = sma(close,200)
ma200_22 = ma200[22]

high_loopback = input(260, "High Lookback Length")
low_loopback = input(260, "Low Lookback Length")
highest_price = highest(high, high_loopback)
lowest_price = lowest(low, low_loopback)
above52lo = ((close/lowest_price)-1)*100
below52hi = (1-(close/highest_price))*100
ep = strategy.position_avg_price

trigger = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
var label maLabel = na
if (trigger)
    yLocation = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
         yloc.abovebar :
         yloc.belowbar

    // labelStyle = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3 ?
    //      label.style_labeldown :
    //      label.style_labelup

buy = close>ma150 and close>ma200 and ma150>ma200 and ma200>ma200_22 and ma50>ma150 and ma50>ma200 and close>ma50 and above52lo>=25 and below52hi<=25 and close>0.3
sell = close>ep*1.1 or close<ep*0.95

strategy.entry("TF", strategy.long, when = buy)
strategy.close("TF", when = sell)

Mais.