Estratégia clássica de cruzamento de média móvel dupla

Autora:ChaoZhang, Data: 2023-10-27 16:47:30
Tags:

img

Resumo

A estratégia de cruzamento de média móvel dupla é uma estratégia de análise técnica muito clássica e comumente usada. Esta estratégia utiliza o cruzamento de uma média móvel mais rápida e uma média móvel mais lenta como os sinais de negociação para compra e venda. Quando a média móvel mais rápida cruza acima da média móvel mais lenta de baixo, um sinal de compra é gerado. Quando a média móvel mais rápida cruza abaixo da média móvel mais lenta de cima, um sinal de venda é gerado.

Estratégia lógica

As partes-chave do código de estratégia incluem:

  1. Definir o comprimento e o tipo das médias móveis rápidas e lentas: a média móvel rápida tem um período de 5 anos, a média móvel lenta tem um período de 21 anos, ambas utilizando a média móvel simples.

  2. Calcular as MAs rápidas e lentas: utilizando a função sma para calcular as médias móveis simples de 5 e 21 períodos.

  3. Traçar o gráfico: traçar as linhas de tendência dos MA rápidos e lentos.

  4. Definir as regras de entrada e saída: comprar quando a MA rápida ultrapassa a MA lenta, vender quando a MA rápida ultrapassa a MA lenta.

  5. Execução de transacções: utilizar as funções longa e curta da estratégia para executar automaticamente transacções quando as condições forem cumpridas.

A chave desta estratégia é usar médias móveis de diferentes períodos para formar os MAs rápidos e lentos, e usar seus crossovers como sinais de negociação. O MA rápido capta as mudanças de preço mais rapidamente, enquanto o MA lento reflete melhor a tendência de longo prazo. O crossover do MA rápido acima do MA lento indica uma ruptura ascendente, que é um sinal de compra. E o crossover abaixo é um sinal de venda. A lógica desta estratégia é simples e fácil de implementar.

Análise das vantagens

A estratégia dupla de cruzamento das médias móveis tem as seguintes vantagens:

  1. Princípio simples, fácil de entender, adequado para iniciantes.

  2. Segue a tendência do preço, um pequeno recuo.

  3. Frequência de negociação moderada, evitando o excesso de negociação.

  4. Parâmetros personalizáveis, flexíveis para se adaptarem às alterações do mercado.

  5. Fácil de otimizar e encontrar conjuntos de parâmetros pessoais adequados.

  6. Pode definir o stop loss para controlar o risco.

  7. Pode ser utilizado em vários mercados, alta aplicabilidade.

  8. Pode ser combinado com outros indicadores para melhorar o desempenho.

Análise de riscos

Há também alguns riscos com esta estratégia:

  1. A reação retardada quando a tendência é forte, pode perder o melhor momento de entrada.

  2. Mais sinais falsos durante os mercados limitados ao intervalo, podem adicionar filtros para evitar trocas erradas.

  3. Muitos negócios podem afetar a rentabilidade, podem alargar a distância de MA para reduzir os crossovers.

  4. Difícil de determinar a tendência, risco de negociação contra-tendência.

  5. A otimização de parâmetros requer dados históricos suficientes, risco de sobreajuste com novos produtos.

  6. Indicador único suscetível a factores externos, o desempenho pode ser instável, pode ser combinado com outros indicadores para verificação.

Orientações de otimização

Existem algumas formas de otimizar ainda mais a estratégia de dupla MA:

  1. Teste diferentes comprimentos de MA rápidos e lentos para encontrar os parâmetros ideais para produtos comerciais específicos.

  2. Adicione filtros como volumes de negociação, ATR stop loss para reduzir oportunidades inferiores.

  3. Combinar indicadores de impulso para confirmar sinais de negociação e evitar falhas.

  4. Otimizar as estratégias de stop loss para evitar saídas prematuras ou tardias.

  5. Incorporar indicadores de tendência e onda para permitir a negociação de tendência e contra-tendência.

  6. Usar MAs adaptativas para ajustar parâmetros com base nas condições do mercado e não em períodos fixos.

  7. Utilizar combinações de parâmetros para diferentes sessões e características de mercado.

  8. Realizar otimização em tempo real através de algoritmos de aprendizagem de máquina para melhorar continuamente os parâmetros.

Resumo

Com sua lógica simples e facilidade de implementação, a estratégia de cruzamento de média móvel dupla tornou-se uma das estratégias de análise técnica mais essenciais e amplamente utilizadas. Segue a tendência de preço com retração controlada e risco aceitável. Mas também há um enorme potencial de otimização, por ajuste de parâmetros, incorporando outros indicadores e algoritmos automatizados, sua aplicabilidade e desempenho podem ser melhorados.


/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// strategy("Stochastic Strategy of BiznesFilosof", shorttitle="SS of BiznesFilosof", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.15, pyramiding=0)

//Period
startY = input(title="Start Year", defval = 2011)
startM = input(title="Start Month", defval = 1, minval = 1, maxval = 12)
startD = input(title="Start Day", defval = 1, minval = 1, maxval = 31)
finishY = input(title="Finish Year", defval = 2050)
finishM = input(title="Finish Month", defval = 12, minval = 1, maxval = 12)
finishD = input(title="Finish Day", defval = 31, minval = 1, maxval = 31)
//finish = input(2019, 02, 28, 00, 00)
timestart = timestamp(startY, startM, startD, 00, 00)
timefinish = timestamp(finishY, finishM, finishD, 23, 59)
window = true // Lenghth strategy

length1 = input(21, minval=1), smoothK1 = input(3, minval=1), smoothD1 = input(3, minval=1)
//length2 = input(5, minval=1), smoothK2 = input(1, minval=1), smoothD2 = input(1, minval=1)
inh0 = input(title="Bottom Line", defval = 14, minval=0), inh1 = input(title="Upper Line", defval = 86, minval=0)

k1 = sma(stoch(close, high, low, length1), smoothK1)
d1 = sma(k1, smoothD1)
plot(k1, color=blue)
plot(d1, color=red)
//k2 = sma(stoch(close, high, low, length2), smoothK2)
//d2 = sma(k2, smoothD2)
//plot(k2, color=orange)

h1 = hline(inh1)
h0 = hline(inh0)
fill(h0, h1, color = aqua, transp=90)

//open
strategy.entry("LongEntryID", strategy.long, comment="LONG", when = crossover(k1, d1) and crossover(k1, inh0) and window)
strategy.entry("ShortEntryID", strategy.short, comment="SHORT", when = crossunder(k1, d1) and crossunder(k1, inh1) and window)

if crossunder(k1, d1) and crossunder(k1, inh1) and strategy.position_size > 0
    strategy.close_all()
if crossover(k1, d1) and crossover(k1, inh0) and strategy.position_size < 0
    strategy.close_all()
  
    


Mais.