Estratégia de paragem de perdas de média móvel dupla de rastreamento

Autora:ChaoZhang, Data: 2024-02-05 13:45:51
Tags:

img

Resumo

Esta estratégia gera sinais de compra quando a média móvel rápida cruza a média móvel lenta. Ao mesmo tempo, calcula o preço de stop loss baseado na faixa média verdadeira para definir sinais de venda. Esta estratégia pode rastrear efetivamente as tendências do mercado e cortar as perdas em tempo hábil ao tirar lucro.

Princípios

  1. Média Móvel Rápida (EMA): Média Móvel Exponencial de 12 dias que responde rapidamente às mudanças de preço.
  2. Média Móvel Lenta (SMA): média móvel simples de 45 dias que mostra tendências de médio a longo prazo.
  3. Os sinais de compra são gerados quando a MA rápida cruza a MA lenta.
  4. O intervalo médio verdadeiro (ATR) de 15 dias é calculado como referência para o stop loss.
  5. Defina a amplitude de stop loss de trailing com base no ATR (por exemplo, 6 x ATR) e atualize o preço de stop em tempo real.
  6. Os sinais de venda são gerados quando o preço cai abaixo do preço de stop loss.

Esta estratégia combina as vantagens do seguimento da tendência e da gestão de stop loss.

Análise das vantagens

  1. As combinações de MA identificam efetivamente as tendências e aumentam a fiabilidade do sinal.
  2. A taxa de prejuízo para a perda de fundos é a taxa de prejuízo para o prejuízo de fundos.
  3. O preço de stop loss baseado no ATR torna o preço de stop razoável e evita a sensibilidade excessiva.
  4. A lógica estratégica é simples e os parâmetros são flexíveis.

Análise de riscos

  1. O excesso de perdas de stop-loss reduz a rentabilidade.
  2. O excesso de stop loss apertado aumenta a frequência de negociação e as taxas de comissão.
  3. A variação da volatilidade pode influenciar a estabilidade dos parâmetros ATR.

Os parâmetros podem ser otimizados para equilibrar a amplitude de stop loss. Outros indicadores também podem ser combinados para melhorar o tempo de entrada.

Orientações de otimização

  1. Teste mais combinações de parâmetros para encontrar os MA ótimos.
  2. Ajustar o multiplicador ATR de acordo com as características específicas das existências.
  3. Adicionar condições de filtragem como indicadores de volume para evitar negociações desnecessárias.
  4. Acumular mais dados históricos para testar a estabilidade dos parâmetros.

Conclusão

Esta estratégia combina com sucesso a capacidade de seguir a tendência da MA e a capacidade de stop loss dinâmica da ATR. Os parâmetros podem ser otimizados para se adaptar a diferentes ações. Forma limites claros de compra e venda, tornando a lógica simples e clara. Em conclusão, esta estratégia de stop loss de rastreamento duplo de MA apresenta estabilidade, simplicidade e facilidade de otimização. Funciona bem como uma estratégia fundamental para a negociação de ações.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//created by XPloRR 24-02-2018

strategy("XPloRR MA-Buy ATR-MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)

testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

emaPeriod = input(12, "Exponential MA")
smaPeriod = input(45, "Simple MA")
stopPeriod = input(12, "Stop EMA")
delta = input(6, "Trailing Stop #ATR")

testPeriod() => true

emaval=ema(close,emaPeriod)
smaval=sma(close,smaPeriod)
stopval=ema(close,stopPeriod)
atr=sma((high-low),15)

plot(emaval, color=blue,linewidth=1)
plot(smaval, color=orange,linewidth=1)
plot(stopval, color=lime,linewidth=1)

long=crossover(emaval,smaval) 
short=crossunder(emaval,smaval)

//buy-sell signal
stop=0
inlong=0
if testPeriod()
    if (long and (not inlong[1]))
        strategy.entry("buy",strategy.long)
        inlong:=1
        stop:=emaval-delta*atr
    else
        stop:=iff((nz(emaval)>(nz(stop[1])+delta*atr))and(inlong[1]),emaval-delta*atr,nz(stop[1]))
        inlong:=nz(inlong[1])
        if ((stopval<stop) and (inlong[1]))
            strategy.close("buy")
            inlong:=0
            stop:=0
else
    inlong:=0
    stop:=0
plot(stop,color=green,linewidth=1)


Mais.