Esta estratégia de negociação é uma estratégia quantitativa baseada na operação de cruzamento da média móvel de 200 dias do indicador MACD. Combina as duas funções do indicador MACD para julgar os sinais de compra e venda do mercado e a média móvel de 200 dias para julgar as tendências do mercado, com o objetivo de descobrir um momento de entrada e saída mais preciso.
Esta estratégia tem dois pontos-chave:
Os cruzes rápidos e lentos da linha MACD geram sinais de compra e venda. Quando a linha rápida quebra a linha lenta para cima, um sinal de compra é gerado. Quando a linha rápida quebra a linha lenta para baixo, um sinal de venda é gerado.
A média móvel de 200 dias julga a tendência geral do mercado. Preços acima da média móvel de 200 dias indicam um mercado de touros, e abaixo indicam um mercado de ursos.
De acordo com estes dois pontos, as regras de negociação específicas desta estratégia são:
Quando a linha rápida do MACD quebra a linha lenta do MACD para cima, o histograma é negativo e o preço está acima da média móvel de 200 dias, é feita uma operação de compra.
A confirmação dupla melhora a estabilidade e a taxa de sucesso da estratégia. O MACD julga os sinais de compra e venda, e a média móvel de 200 dias julga a tendência do mercado. A confirmação dupla pode filtrar alguns sinais de negociação com maior incerteza.
Em um mercado fortemente em tendência, esta estratégia pode trazer lucros relativamente elevados.
Quando o preço termina um longo período de consolidação e entra em uma fase de tendência, esta estratégia pode rapidamente capturar a nova direção da tendência.
Esta estratégia é bastante sensível às configurações de parâmetros.
Em relação aos pontos de virada da tendência, os sinais MACD tendem a produzir mais erros.
Quando os preços se encontram num longo período de consolidação, esta estratégia não pode determinar uma direcção de tendência clara, o que leva a uma maior flutuação dos lucros/perdas e a tempos de retirada mais longos.
Diferentes combinações de parâmetros podem ser testadas para encontrar parâmetros MACD que produzem sinais mais precisos.
Considerar a adição de confirmação de outros indicadores técnicos, como o RSI e o KD, para formar um consenso de múltiplos indicadores, aumentando assim a confiabilidade da estratégia.
Defina pontos de stop loss para controlar o máximo de drawdown.
A estratégia de cruzamento da média móvel de 200 dias do MACD combina as duas funções de julgamento de tendência e julgamento de sinal de negociação, o que pode efetivamente melhorar a probabilidade de lucratividade. É uma estratégia de negociação quantitativa relativamente robusta e confiável. Mas essa estratégia também depende de alguns parâmetros e condições de mercado. A otimização e testes contínuos podem melhorar ainda mais a capacidade estável de geração de lucro da estratégia.
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-02 00:00:00 period: 1m basePeriod: 1m 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/ // © x11joe //@version=4 //This strategy is based on a youtube strategy that suggested I do this...so I did! strategy(title="MacD 200 Day Moving Average Signal Crossover Strategy", overlay=false, precision=2,commission_value=0.26, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Getting inputs fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal moving_avg_length = input(title="Moving Average Length", type=input.integer, defval=200) moving_avg = sma(close,moving_avg_length) moving_avg_normalized = close - moving_avg plot(moving_avg_normalized, title="Moving Average Normalized", style=plot.style_line, color=color.orange,linewidth=3) plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) plot(macd, title="MACD", color=col_macd, transp=0) plot(signal, title="Signal", color=col_signal, transp=0) if(macd>signal and macd<0 and close>moving_avg) strategy.entry("buy",strategy.long) if(close<moving_avg and macd<signal and macd>0) strategy.entry("sell",strategy.short)