A estratégia MACD Trend Following é uma estratégia quantitativa de negociação baseada no indicador MACD. A ideia principal desta estratégia é usar os sinais de cruz de ouro e cruz de morte do indicador MACD para determinar a direção da tendência e estabelecer posições longas ou curtas em momentos apropriados. Quando a linha MACD cruza acima da linha de sinal e acima do eixo zero, uma posição longa é aberta; quando a linha MACD cruza abaixo da linha de sinal e abaixo do eixo zero, uma posição curta é aberta. A estratégia usa o ponto mais baixo recente como o stop loss para posições longas e o ponto mais alto recente como o stop loss para posições curtas. A condição de fechamento é quando a linha MACD cruza a linha de sinal na direção oposta.
O princípio central da estratégia de seguimento de tendências do MACD é usar o indicador MACD para capturar a formação e a reversão de tendências. O indicador MACD consiste na diferença entre duas médias móveis (rápidas e lentas) e é usado em conjunto com uma linha de sinal para gerar sinais de negociação. Quando a linha MACD cruza acima da linha de sinal e acima do eixo zero, ele indica que uma tendência de alta está se formando, e uma posição longa é aberta. Quando a linha MACD cruza abaixo da linha de sinal e abaixo do eixo zero, ele indica que uma tendência de baixa está se formando, e uma posição curta é aberta. A estratégia usa o ponto mais recente de baixa significativa como o stop loss para posições longas e o ponto mais recente de alta significativa como o stop loss para posições curtas para controlar o risco. Quando a linha MACD cruza a linha de sinal em direção oposta, a posição atual é fechada.
A estratégia MACD Trend Following pode efetivamente capturar oportunidades de tendência estabelecendo posições no início da formação da tendência, utilizando plenamente o ímpeto da tendência.
A estratégia utiliza tanto a cruz dourada/morte do MACD quanto o eixo zero como condições de filtragem, que podem filtrar melhor os falsos sinais em um mercado oscilante.
A estratégia utiliza os pontos mais altos e baixos significativos mais recentes como níveis de stop loss, que podem controlar a exposição ao risco de uma única negociação.
A lógica estratégica é clara, fácil de entender e implementar, tornando-a adequada para aprendizagem de iniciantes.
O indicador MACD é essencialmente um indicador de atraso, que pode sofrer reduções significativas no início das inversões de tendência.
A estratégia pode gerar trocas frequentes num mercado oscilante, levando a elevados custos de transação.
A definição dos níveis de stop loss depende dos pontos mais altos e baixos significativos mais recentes, o que pode resultar em stop loss prematuros ou atrasados em determinadas situações.
A estratégia não considera o dimensionamento das posições e a gestão de fundos, que devem ser otimizados com base em circunstâncias específicas em aplicações práticas.
Considere a introdução de outros indicadores técnicos ou padrões de comportamento dos preços como condições de filtragem para melhorar a confiabilidade e precisão dos sinais.
Otimizar o método de definição dos níveis de stop loss, como o uso de ATR ou stop loss baseados em percentagem, para controlar melhor o risco.
Introduzir mecanismos de dimensionamento das posições e de gestão de fundos para ajustar dinamicamente as dimensões das posições com base na volatilidade do mercado e no capital da conta.
Otimizar e ajustar parâmetros para diferentes mercados e instrumentos de negociação para encontrar as combinações de parâmetros mais adequadas.
A estratégia de seguimento de tendências do MACD é uma estratégia quantitativa simples e eficaz que captura oportunidades de tendências, aproveitando as características do indicador MACD. A estratégia tem uma lógica clara, é fácil de entender e implementar, tornando-a adequada para iniciantes aprenderem.
/*backtest start: 2023-03-23 00:00:00 end: 2024-03-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MACD trendfollow", shorttitle="MACD TF", overlay=true) // switch = input(true, title="Enable MACD Bar Color") // X001TK MACD trendfollow Strategy // // // This strategy combines the non standart approach in MACD strategy to buy once to buy when the MACD value goes above Signal line and a zero line, to sell on the opposite condition. // // // This strategy goes long if the MACD (3,9,5) goes above its Signal and above zero // // You can set Stop loss on the recent lowest low when long position is opened and recent highest hugh in short // // // Exit rule is simple. We close the LONG position once MACD goes below Signal line and close SHORT on the opposite condition // // // // // Input fastMAlen = input(3, minval=1, title="MACD fast moving average") slowMAlen = input(9,minval=1, title="MACD slow moving average") signalMACDlen = input(5,minval=1, title="MACD signal line moving average") // switch = input(true, title="Enable MACD Bar Color") length = input(1, minval=1) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2002, title = "From Year", minval = 2000) ToMonth = input(defval = 3, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2029, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 00, 00) // backtest finish window window() => true // create function "within window of time" // MACD Calculation MACD = ema(close, fastMAlen) - ema(close, slowMAlen) signalMACD = ema(MACD, signalMACDlen) delta = MACD - signalMACD fastMA = ema(close,fastMAlen) slowMA = ema(close,slowMAlen) // Colors //bartrendcolor = MACD > signalMACD and MACD > 0? green : MACD < signalMACD and MACD < 0? red : MACD < signalMACD? gray : gray //barcolor(switch?bartrendcolor:na) barcolour=(MACD > signalMACD and MACD > 0)?#53B987:(MACD < signalMACD and MACD < 0)?#EB4D5C:na barcolor(color=barcolour) // === STRATEGY === // conditions longCond = MACD > signalMACD and MACD > 0 XlongCond = MACD < signalMACD ShortCond = MACD < signalMACD and MACD < 0 XShortCond = MACD > signalMACD strategy.entry("long", strategy.long, when=longCond==true and window()==true ) //strategy.exit(id="Close Long", stop=longStop)//, limit=longTake) strategy.close("long", when=XlongCond==true and window()==true) strategy.entry("short", strategy.short, when=ShortCond==true and window()==true ) //strategy.exit(id="Close Short", stop=shortStop)//, limit=shortTake) strategy.close("short", when=XShortCond==true and window()==true) // === /STRATEGY ===