Estratégia de negociação cruzada do indicador MACD com vários prazos

Autora:ChaoZhang, Data: 2024-02-19 11:03:54
Tags:

img

Resumo

A Estratégia de Negociação Crossover do Indicador MACD de Multi-Timeframe é uma estratégia de tendência que gera sinais de negociação quando o preço atravessa o indicador MACD calculado com diferentes configurações de parâmetros, permitindo a negociação automatizada de ações, índices, forex e outros produtos financeiros.

Estratégia lógica

A estratégia calcula 3 médias móveis simultaneamente: uma média móvel ponderada WMA e duas médias móveis exponenciais EMA. Os parâmetros dessas três médias móveis são definidos de forma diferente, que são de 25 dias, 50 dias e 100 dias, respectivamente.

Após o cálculo das médias móveis, a estratégia monitora se o preço quebra ou cai abaixo de qualquer uma das médias móveis.

Por exemplo, um sinal de compra é gerado quando o preço está acima de todas as 3 médias móveis ao mesmo tempo. Um sinal de venda é gerado quando o preço cai abaixo de todas as 3 médias móveis ao mesmo tempo. O monitoramento do preço em relação às médias móveis pode determinar pontos de reversão do movimento do preço.

Ao comparar com indicadores de vários prazos, alguns sinais falsos podem ser filtrados, tornando os sinais de negociação mais confiáveis.

Análise das vantagens

  • Usar análise de quadros de tempo múltiplos para filtrar sinais falsos
  • Fácil de otimizar os parâmetros para se adaptarem às condições do mercado em diferentes períodos
  • Pode ser aplicado a vários produtos, incluindo ações, índices, forex, etc.

Análise de riscos

  • O atraso do indicador pode perder oportunidades de curto prazo
  • Risco de perda quando os níveis de preços não são mantidos
  • Ajuste fino de parâmetros depois para otimizar stop loss e tomar lucro

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os períodos de média móvel para adaptar mais ciclos de mercado
  2. Adicionar outros indicadores técnicos para filtragem, como o RSI para sobrecompra e sobrevenda
  3. Adicionar mecanismo de perda de parada, pode usar indicador ATR para a distância de parada
  4. Expansível para outros produtos como futuros, otimizar parâmetros

Resumo

O Multi-timeframe MACD Indicator Crossover Trading Strategy tem um fluxo lógico claro. Determina as tendências de preços em vários períodos usando médias móveis e gera sinais de negociação quando ocorrem reversões significativas. A estratégia tem grande espaço de otimização e os parâmetros podem ser ajustados para diferentes produtos e ciclos de mercado, permitindo um bom desempenho comercial. É adequado para negociação automatizada de ações, índices e forex em tendência.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TC - MACDoscillator v2", overlay=true)
// ___________      .__                   _________               .__  __         .__   
// \__    ___/____  |  |    ____   ____   \_   ___ \_____  ______ |__|/  |______  |  |  
//   |    |  \__  \ |  |   / ___\ /  _ \  /    \  \/\__  \ \____ \|  \   __\__  \ |  |  
//   |    |   / __ \|  |__/ /_/  >  <_> ) \     \____/ __ \|  |_> >  ||  |  / __ \|  |__
//   |____|  (____  /____/\___  / \____/   \______  (____  /   __/|__||__| (____  /____/
//                \/     /_____/                  \/     \/|__|                 \/      
//
// MACDoscillator Strategy v2
// Josh Breitfeld 2016
//

/// INPUTS START ///

//tradeSize = input(title="Shares Per Trade",  defval=2500, step=1)
WMALength = input(title="WMA Length",  defval=25, step=1)
EMA1Length = input(title="EMA1 Length",  defval=50, step=1)
EMA2Length = input(title="EMA2 Length",  defval=100, step=1)
//security = input(title="Alternate Security", type=string, defval="SPX500")
//inverse = input(title="Inverse Signals", type=bool, defval=true)

/// INPUTS END ///

/// ALGORITHM START ///

/// Define calculations
WMA = wma(close,WMALength)
EMA1 = ema(close,EMA1Length)
EMA2 = ema(close,EMA2Length)

/// Grab values from alternate security
dWMA = WMA
dEMA1 = EMA1
dEMA2 = EMA2

aClose = close

/// Crossover signal system

/// Long crosses
lc1 = aClose > dWMA ? true : false
lc2 = aClose > dEMA1 ? true : false
lc3 = aClose > dEMA2 ? true: false

/// Short crosses
sc1 = aClose < dWMA ? true : false
sc2 = aClose < dEMA1 ? true : false
sc3 = aClose < dEMA2 ? true : false

//plot(lc1,color=green)
//plot(lc2,color=green)
//plot(lc3,color=green)
//plot(sc1,color=red)
//plot(sc2,color=red)
//plot(sc3,color=red)


/// ALGO ORDER CONDITIONS START ///

pBuyToOpen = (lc1 and lc2 and lc3 ? true : false)
pSellToOpen = (sc1 and sc2 and sc3 ?  true : false)
pSellToClose = (lc1 ? true : false) and not pBuyToOpen
pBuyToClose = (sc1 ? true : false) and not pSellToOpen

//plot(pBuyToOpen,color=lime)
//plot(pBuyToClose,color=lime)
//plot(pSellToOpen,color=red)
//plot(pSellToClose,color=red)
/// INVERT SIGNALS

//buyToOpen = inverse ? -pBuyToOpen : pBuyToOpen
//sellToOpen = inverse ? -pBuyToOpen : pSellToOpen
//sellToClose = inverse ? -pSellToClose : pSellToClose
//buyToClose = inverse ? -pBuyToClose : pBuyToClose

/// ALGO ORDER CONDITIONS END ///

/// ALGORITHM END ///

/// DEFINE PLOTS ///

plot(dWMA,"WMA",lime,1,line)
plot(dEMA1,"EMA1",blue,2,line)
plot(dEMA2,"EMA2",red,3,line)
//plot(aClose,"Close",orange,4,line)

/// PLOTS END ///

/// ORDER BLOCK ///

    //strategy.entry("My Long Entry Id", strategy.long)

/// OPENING ORDERS START ///
if(pBuyToOpen) 
    strategy.entry("BTO", strategy.long, comment="BTO")
if(pSellToOpen) 
    strategy.entry("STO", strategy.short, comment="STO")

/// OPENING ORDERS END ///

/// CLOSING ORDERS START ///
strategy.close("BTO", pBuyToClose)
strategy.close("STO", pSellToClose)
/// CLOSING ORDERS END ///

/// END ORDER BLOCK ///

// Josh Breitfeld - Talgo Capital 2016
/// STRATEGY END ///

Mais.