Estratégia de cruzamento da média móvel

Autora:ChaoZhang, Data: 2023-12-08 15:23:33
Tags:

img

Esta estratégia adota o cruzamento da média móvel de 20 dias e da média móvel de 60 dias para gerar sinais de negociação. Ele vai longo quando o preço quebra acima da MA de 20 dias e fecha a posição quando o preço quebra abaixo da MA de 20 dias. Da mesma forma, ele forma sinais de negociação quando o preço cruza a MA de 60 dias. Esta estratégia pertence a um sistema típico de tendência.

Estratégia lógica

  1. Calcular média móvel simples de 20 dias e média móvel simples de 60 dias
  2. Caso o preço de fechamento ultrapasse a MA de 20 dias
  3. Posição fechada quando o preço de fechamento ultrapassa o MA de 20 dias
  4. Caso o preço de fechamento ultrapasse a MA de 60 dias
  5. Posição fechada quando o preço de fechamento ultrapassa o MA de 60 dias

As regras acima definem os sinais de negociação e lógica para esta estratégia. Quando o preço cruza a linha MA, mostra que uma nova tendência está emergindo e podemos seguir a tendência para ir longo. Quando o preço cai abaixo da linha MA, mostra que a tendência está terminando, então fechamos a posição.

Vantagens

  1. A adoção de MAs duplas torna a estratégia mais estável. O MMA de 20 dias capta oportunidades de curto prazo mais rapidamente, enquanto o MMA de 60 dias filtra alguns ruídos do mercado e bloqueia a tendência de médio e longo prazo.
  2. O backtest começa em 2018 e seleciona o mercado de ações de Taiwan, que tem um sistema de negociação mais desenvolvido em comparação com o mercado de ações A da China, refletindo melhor a eficácia da estratégia.
  3. Estabelece o stop loss e o dimensionamento da posição adequados, controlando o risco ao máximo.

Riscos

  1. A estratégia baseia-se exclusivamente no indicador MA, que pode gerar mais perturbações quando não há uma tendência óbvia no mercado.
  2. A estratégia não otimiza o tamanho e a posição de compra/venda, não conseguindo maximizar o uso do capital.
  3. A estratégia reage simetricamente a subidas e descidas de preços, incapaz de se adaptar às diferentes condições de mercado.

Soluções de riscos:

  1. Adicione outros indicadores como KDJ, MACD para formar confirmação múltipla, evitando negócios errados.
  2. Otimizar o dimensionamento das posições e a eficiência da utilização do capital em função da capitalização de mercado, da volatilidade, etc.
  3. Adotar movimentos assimétricos com base em estágios de mercado, reduzir as negociações durante o mercado de intervalo e aumentar o tamanho da posição durante tendências óbvias.

Orientações de otimização

  1. Otimizar a quantidade de compra/venda. Ajustar dinamicamente o tamanho da posição com base no stop loss.
  2. Optimize parâmetros MA. Encontre melhores parâmetros através de otimização walk forward e otimização aleatória.
  3. Adicionar estratégia de stop loss. mover a ordem stop loss ou stop limit protege melhor os lucros.
  4. Adicionar gestão do tamanho da posição Ajustar dinamicamente o tamanho da posição por transação com base no tamanho do capital, capitalização de mercado, etc.

Resumo

Esta é uma estratégia típica de cruzamento de média móvel dupla. A ideia central é seguir as tendências estabelecendo posição quando o preço cruza a linha MA. A estratégia é simples e prática de implementar. Enquanto isso, há espaço para otimização adicional, por ajuste de parâmetros, stop loss, dimensionamento de posição etc. para alcançar melhores resultados.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © Astorhsu

//@version=5
strategy("Astor SMA20/60 TW", overlay=true, margin_long=100, margin_short=100)
backtest_year = input(2018, title='backtest_year') //回測開始年分
backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份
backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31)  //回測開始日期
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)  //回測開始的時間函數

//Indicators
sma20 = ta.sma(close,20)
sma60 = ta.sma(close,60)
plot(sma20, color=color.green, title="sma(20)")
plot(sma60, color=color.red, title="sma(60)")

//進場條件
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) and time >= start_time
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) and time >= start_time
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) and time >= start_time
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) and time >= start_time
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     

Mais.