- Quadrado
- Breakout no final do mês na estratégia da média móvel de 200 dias
Breakout no final do mês na estratégia da média móvel de 200 dias
Autora:
ChaoZhang, Data: 2023-12-08 16:02:08
Tags:
Resumo
Esta estratégia baseia-se na ruptura do preço da média móvel de 200 dias no final do mês para capturar a direção da tendência dos preços das ações.
Princípio da estratégia
- Usar a média móvel simples de 200 dias dma200 como indicador para julgar a tendência dos preços
- No último dia de negociação de cada mês, julgue se o preço de fechamento é superior a dma200
- Se o preço de fechamento ultrapassar a MA de 200 dias, estabelecer uma posição longa completa no início do próximo dia de negociação
- Se o preço de fechamento ultrapassar a MA de 200 dias, liquidar todas as posições no início do dia de negociação seguinte
- Isto pode obter o efeito de seguir a tendência, estabelecendo posições quando os preços das acções entram numa tendência ascendente e evitando tendências descendentes
Análise das vantagens
- A estratégia tem a vantagem de ser simples e eficaz, de ser fácil de compreender e de aplicar.
- Tomar posições no final do mês pode reduzir a frequência de negociação e minimizar os custos de negociação e os impactos do deslizamento
- O MA de 200 dias é um indicador de avaliação da tendência a médio e longo prazo muito utilizado, eficaz para a maioria das acções
- A estratégia tem um aproveitamento relativamente reduzido e um declínio máximo, com riscos controláveis
Análise de riscos
- A MA de 200 dias pode não ser suficientemente sensível para que algumas acções possam captar as reversões de preços a tempo
- Há apenas 1 ponto de negociação por mês para a tomada de posições, o que pode fazer com que as oportunidades de alta/baixa sejam perdidas.
- A estratégia pode falhar no julgamento correto quando a tendência global do mercado é incerta
- Outros indicadores devem ser combinados para reduzir estes riscos
Orientações de otimização
- Considere aumentar os pontos de negociação no início ou no meio do mês para melhorar a frequência da estratégia
- Adicionar indicadores como Bollinger Bands para julgar a flutuação de preços e evitar negócios errados
- Avaliação dos efeitos de adequação de diferentes parâmetros de MA em diferentes unidades populacionais para encontrar combinações ideais de parâmetros
- Estabelecer mecanismos dinâmicos de dimensionamento das posições para deter ativamente as perdas quando o drawdown for demasiado elevado
Resumo
A estratégia é relativamente simples e prática em geral, capturando efetivamente as tendências de preços de médio e longo prazo das ações através do rompimento do MA de 200 dias no final do mês, com um drawdown e riscos relativamente pequenos.
/*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/
// © muscleriot
//200 dma
//2000-2016 backtested
//1 signal per month only at end of month
//If > 200DMA enter long
//If < 200DMA goto cash
//results: 318% drawdown 17% vs 125% with 55% drawdown for buy and hold
//@version=5
strategy("200DMA last DOM - ajh", overlay =true,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Use 100% of equity always
dma200 = ta.sma(close, 200)
plot(dma200, color=color.red, linewidth = 2)
//e =dayofmonth(time)
// backtesting date range
from_day = input.int(defval=1, title="From Day", minval=1, maxval=31)
from_month = input.int(defval=1, title="From Month", minval=1, maxval=12)
from_year = input.int(defval=2018, title="From Year", minval=1900)
to_day = input.int(defval=1, title="To Day", minval=1, maxval=31)
to_month = input.int(defval=1, title="To Month", minval=1, maxval=12)
to_year = input.int(defval=9999, title="To Year", minval=1900)
time_cond = time > timestamp(from_year, from_month, from_day, 00, 00) and
time < timestamp(to_year, to_month, to_day, 23, 59)
xLong = dayofmonth(time) == 30 and (close > dma200) ? true : na
xSell = dayofmonth(time) == 30 and (close < dma200) ? true : na
plotchar(xLong, "long","L", color=color.green)
plotchar(xSell, "Sell","S", color=color.red)
if (xLong == true) and time_cond
strategy.entry("long", strategy.long)
if (xSell == true) and time_cond
strategy.close("long")
Mais.