Estratégia de cruzamento do MACD e do EMA

Autora:ChaoZhang, Data: 2023-12-28 15:22:14
Tags:

img

Resumo

Esta estratégia usa o cruzamento das linhas rápidas e lentas do indicador MACD para determinar entradas e saídas. O indicador EMA também é usado para julgar a direção da tendência. Ele fica longo quando a linha rápida quebra a linha lenta de baixo e o valor MACD está abaixo de 0; ele fica curto quando a linha rápida quebra a linha lenta de cima e o valor MACD está acima de 0. A saída de stop loss é definida no valor EMA quando o sinal foi gerado; o lucro é definido em 2 vezes o preço de entrada.

Princípio da estratégia

Quando a linha rápida do MACD atravessa a linha lenta de baixo e o valor do MACD está abaixo de 0, isso indica que a média móvel de curto prazo do preço começa a subir e o impulso começa a se fortalecer, então uma posição longa pode ser tomada.

O indicador EMA julga a direção geral da tendência. Valores mais altos da EMA indicam uma tendência ascendente, enquanto valores mais baixos indicam uma tendência descendente. A estratégia só é longa quando a EMA indica uma tendência ascendente e é curta quando a EMA indica uma tendência descendente para evitar a negociação de contra-tendência.

O stop loss é definido no valor da EMA quando o sinal foi gerado. A EMA pode julgar bem a tendência. Definindo-o como o valor da EMA pode reduzir a probabilidade de stop loss ser retirado por pontos baixos ou altos anteriores. O take profit é definido em 2 vezes o preço de entrada, dando uma relação de recompensa de risco de 2.

Análise das vantagens

Esta estratégia combina os indicadores MACD e EMA para determinar melhor o tempo de entrada e a direção da tendência. O método de stop loss evita perseguir aumentos e vendas de quedas. O rácio de recompensa de risco de 2 é uma configuração de parâmetro relativamente conservadora. Os parâmetros do indicador MACD podem ser ajustados para se adaptar flexivelmente às mudanças do mercado.

Análise de riscos

O indicador MACD tem lag médio, as voltas do indicador tendem a atrasar as voltas de preço. A estratégia não pode determinar pontos de entrada específicos, há alguma cegueira. O stop loss tende a ser desencadeado por ação de preços voláteis. Os pontos de lucro podem ser atingidos prematuramente ou com atraso.

Orientações de otimização

  1. Otimizar os parâmetros do MACD para torná-lo mais sensível ou estável.
  2. Incorporar outros indicadores para determinar pontos de entrada mais precisos.
  3. Ajustar dinamicamente os parâmetros de stop loss e take profit.
  4. Otimizar a gestão do dinheiro para determinar um dimensionamento mais adequado das posições.

Resumo

Esta estratégia combina os indicadores MACD e EMA para determinar o tempo de entrada e a direção da tendência. Ele usa métodos simples e razoáveis para parar a perda e tirar lucro. Outras otimizações podem ser feitas sobre o atraso do MACD, parar a perda e tirar lucro parâmetros etc para obter melhores resultados de estratégia.


/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD & EMA 200 Strategy", overlay=true)

// MACD Settings
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")
src = close

[macdLine, signalLine, _] = ta.macd(src, fastLength, slowLength, signalLength)

// 200 EMA
ema200 = ta.ema(src, 200)
plot(ema200, title="200 EMA", color=color.red)

// Long Condition
longCondition = ta.crossover(macdLine, signalLine) and macdLine < 0 and close > ema200
if (longCondition and strategy.position_size <= 0)
    strategy.entry("Long", strategy.long)
    longStopLoss = ema200
    longTakeProfit = close + 2 * (close - ema200)
    strategy.exit("Exit Long", "Long", stop=longStopLoss, limit=longTakeProfit)

// Short Condition
shortCondition = ta.crossunder(macdLine, signalLine) and macdLine > 0 and close < ema200
if (shortCondition and strategy.position_size <= 0)
    strategy.entry("Short", strategy.short)
    shortStopLoss = ema200
    shortTakeProfit = close - 2 * (ema200 - close)
    strategy.exit("Exit Short", "Short", stop=shortStopLoss, limit=shortTakeProfit)


Mais.