Estratégia de negociação de curto prazo baseada no canal EMA e no MACD

Autora:ChaoZhang, Data: 2024-01-23 14:30:02
Tags:

img

Resumo

A estratégia é chamada de EMA Channel e MACD Based Short-Term Trading Strategy.

Princípios

A estratégia usa EMA de 5 dias e EMA de 21 dias para formar um canal EMA. Quando a EMA de 5 dias cruza acima da EMA de 21 dias, é considerada um sinal de alta. Quando a EMA de 5 dias cruza abaixo da EMA de 21 dias, é considerada um sinal de baixa. O histograma MACD pode filtrar sinais falsos. Os sinais de compra são gerados apenas quando o histograma MACD está acima de 0.

Análise das vantagens

A estratégia combina a identificação de tendências e a filtragem de indicadores, o que pode identificar efetivamente as direções de tendências de curto prazo. Usando o canal EMA para determinar a direção da tendência principal e o histograma MACD para filtrar sinais falsos pode melhorar muito a lucratividade. O mecanismo fixo de stop loss e take profit também garante uma boa relação risco-recompensa.

Análise de riscos

A estratégia é principalmente adequada para negociação de curto prazo e tem um desempenho fraco em mercados de longo prazo e de variação. Em mercados laterais de longo prazo, os crossovers do canal EMA acontecem com frequência, mas a maioria são sinais falsos. Embora o histograma MACD possa desempenhar um papel na filtragem, sua eficácia ainda é limitada. Além disso, o stop loss fixo e o take profit dificulta a captura de ganhos incrementais de tendências de longo prazo. Portanto, esses são os principais riscos desta estratégia. As soluções são ajustar flexivelmente os parâmetros com base nas condições do mercado ou mudar para outras estratégias mais adequadas para as condições atuais do mercado.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros da EMA para encontrar combinações de parâmetros que maximizem os retornos para instrumentos comerciais específicos.

  2. Otimizar os parâmetros MACD para melhorar a eficácia da filtragem.

  3. Incorporar indicadores de volatilidade para alargar o intervalo de stop loss quando a volatilidade do mercado aumentar.

  4. Adicionar um mecanismo de stop loss para aproximar o stop loss do preço, reduzindo o gatilho desnecessário de stop loss e garantindo a lucratividade.

Conclusão

A estratégia tem uma lucratividade relativamente alta e é especialmente adequada para negociação de curto prazo. É uma boa escolha entre as estratégias de negociação quantitativa de alta frequência. Mas os comerciantes precisam ajustar os parâmetros razoavelmente com base nas condições do mercado ao usá-lo, para maximizar os retornos da estratégia enquanto controlam os riscos de negociação.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © moondevonyt

//@version=5
strategy("Scalping with EMA channel and MACD", overlay=true)

// Exponential moving average inputs
ema21 = ta.ema(close, 21)
ema5 = ta.ema(close, 5)

// MACD inputs
fastLength = 18
slowLength = 34
signalSmoothing = 12

[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
macdHistogram = macdLine - signalLine

// Buy and sell conditions
buyCondition = ta.crossover(ema5, ema21) and macdHistogram > 0
sellCondition = ta.crossunder(ema5, ema21) and macdHistogram < 0

// Re-entry conditions
reEntryBuyCondition = close > ema21
reEntrySellCondition = close < ema21

// Set stop loss and take profit
stopLoss = 8
takeProfit = 15

// Execute Strategy
if buyCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", stop=close - stopLoss, limit=close + takeProfit)
if reEntryBuyCondition
    strategy.entry("Re-Enter Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Re-Enter Buy", stop=close - stopLoss, limit=close + takeProfit)

if sellCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", stop=close + stopLoss, limit=close - takeProfit)
if reEntrySellCondition
    strategy.entry("Re-Enter Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Re-Enter Sell", stop=close + stopLoss, limit=close - takeProfit)

// Plotting EMAs and MACD
plot(ema21, color=color.blue, title="21 EMA")
plot(ema5, color=color.orange, title="5 EMA")
plot(macdHistogram, color=color.red, title="MACD Histogram")

// Plot buy and sell signals
plotshape(series=buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

Mais.