Estratégia de seta cruzada de média móvel dupla

Autora:ChaoZhang, Data: 2023-11-21 17:00:49
Tags:

img

Resumo

Esta estratégia identifica os sinais de compra e venda, calculando o cruzamento das médias móveis duplas do indicador MACD.

Princípios

A estratégia calcula primeiro a linha rápida (EMA de 12 períodos), a linha lenta (EMA de 26 períodos) e a diferença MACD. Em seguida, determina sinais longos e curtos com base no cruzamento das linhas rápidas e lentas, bem como o valor positivo / negativo da diferença MACD:

  1. Quando a linha rápida cruza acima da linha lenta (cruz de ouro) e a diferença MACD cruza acima de 0, é um sinal de compra
  2. Quando a linha rápida cruza abaixo da linha lenta (cruz de morte) e a diferença MACD cruza abaixo de 0, é um sinal de venda

Para filtrar sinais falsos, o código também verifica o sinal do candelabro anterior.

Além disso, as formas de setas são traçadas no gráfico para indicar sinais de compra e venda.

Vantagens

As vantagens desta estratégia incluem:

  1. A utilização de um cruzamento duplo de médias móveis ajuda a identificar tendências e a filtrar o ruído do mercado
  2. Incorporar a diferença MACD evita transações perdidas e sinais falsos
  3. As setas indicam claramente entradas e saídas
  4. Regras simples e fáceis de compreender facilitam a replicação

Riscos e soluções

Alguns riscos desta estratégia:

  1. Os crossovers podem gerar sinais falsos e causar excesso de negociação.
  2. Incapaz de discernir os intervalos de uma tendência, potencialmente levando a perdas.
  3. Regras fixas não podem adaptar-se aos mercados em mudança.

Oportunidades de melhoria

Algumas formas de melhorar a estratégia:

  1. Teste diferentes combinações de parâmetros para encontrar configurações ideais para a linha rápida, linha lenta e MACD
  2. Adicionar condições de entrada adicionais como breakouts de volume para sinais de filtro
  3. Incorporar o stop loss para controlar as perdas de transações individuais
  4. Usar indicadores de volatilidade como o VIX para avaliar o apetite pelo risco
  5. Tente modelos de aprendizagem de máquina em vez de regras fixas para criar otimização adaptativa

Resumo

A estratégia da seta de cruzamento de média móvel dupla é bastante simples e prática. Usando o cruzamento de duas médias móveis e a filtragem de diferença MACD, ele identifica entradas e saídas durante tendências de médio e longo prazo, evitando reversões de preços perdidas. Os sinais de seta também fornecem orientação operacional clara.


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

//@version=3
//Daniels stolen code
strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0)

//Define MACD Variables
fast = 12, slow = 26
fastMACD = ema(hlc3, fast)
slowMACD = ema(hlc3, slow)
macd = fastMACD - slowMACD
signal = sma(macd, 9)
hist = macd - signal
currMacd = hist[0]
prevMacd = hist[1]
currPrice = hl2[0]
prevPrice = hl2[1]

buy = currPrice > prevPrice and currMacd > prevMacd
sell = currPrice < prevPrice and currMacd < prevMacd
neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd)
//Plot Arrows

timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1))
timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1))

plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup)
plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown)
//plotshape(neutral, color=black, location=location.belowbar, style=shape.circle)


//Test Strategy
// strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high
// strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01))

strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01))
strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01))



// strategy.entry(id = "Short", long = false, when = enterShort())
// strategy.close(id = "Short", when = exitShort())

//strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high
// strategy.exit("exit", "long", profit = 10, loss = 5) // ge

Mais.