Estratégia de negociação quantitativa MACD dupla

Autora:ChaoZhang, Data: 2023-11-13 18:04:07
Tags:

img

Resumo

Esta estratégia utiliza a combinação de sistemas EMA duplos e indicadores RSI para determinar as tendências do mercado ao gerar sinais de negociação. Ela pertence às estratégias de tendência seguinte. Esta estratégia simples e fácil de usar é aplicável a vários índices principais e criptomoedas.

Estratégia lógica

Esta estratégia emprega dois MACDs com configurações de parâmetros diferentes como indicadores de negociação primários. O primeiro MACD adota uma EMA curta de 10 períodos, uma EMA longa de 22 períodos e uma linha de sinal de 9 períodos. O segundo MACD usa uma EMA curta de 21 períodos, uma EMA longa de 45 períodos e uma linha de sinal de 20 períodos.

O primeiro MACD gera sinais de compra quando a linha DIFF cruza acima de zero e sinais de venda quando cruza abaixo de zero.

Além disso, a estratégia utiliza uma fórmula de impulso de preço para determinar a tendência. O último fechamento + alto dividido pelo fechamento anterior + alto acima de 1 indica uma tendência ascendente e gera sinais de compra e vice-versa para sinais de venda.

Por último, a linha K do RSI do Stoch acima de 20 ajuda a confirmar os sinais de venda.

Análise das vantagens

O mecanismo EMA duplo nesta estratégia pode efetivamente filtrar falhas. A fórmula de impulso suplementar também evita sinais errados causados pela volatilidade.

Esta estratégia utiliza apenas combinações simples de vários indicadores comuns sem relações lógicas excessivamente complexas, o que a torna muito fácil de entender e modificar.

De acordo com os resultados do backtest, essa estratégia alcançou retornos cumulativos decentes e controle máximo de drawdown em vários produtos, como índices de ações e criptomoedas.

Análise de riscos

O principal risco desta estratégia reside na utilização de médias móveis para as determinações, que podem facilmente causar problemas e perdas quando os preços flutuam violentamente.

A eficácia do Stoch RSI na detecção de níveis de sobrecompra/supervenda não é ideal. Pode perder frequentemente sinais de reversão.

Se os preços despencarem acentuadamente mas o MACD ainda não tiver formado uma cruz da morte, esta estratégia manterá posições perdedoras e continuará a assumir perdas.

Orientações de otimização

Considerar a adição de stop loss para controlar as perdas de uma única posição, por exemplo, stop loss ATR ou stop loss baseado em médias móveis mais baixas.

Adicionar outros indicadores de confirmação, tais como a combinação de KD ou Bollinger Bands com Stoch RSI para uma detecção mais confiável de sobrecompra/supervenda.

Incorporar análise de volume, como aumentar o stop loss quando o volume de vendas significativo aparece, ou evitar novas posições quando o volume é fraco.

Teste diferentes combinações de parâmetros e otimize os períodos MACD. Teste também adicionando MACDs de outros prazos para confirmação múltipla.

Conclusão

A estratégia de negociação quantitativa MACD dupla tem uma lógica simples e clara, usando crossovers de EMA dupla para determinar tendências, complementada por indicadores de impulso para evitar sinais errados. Pode filtrar oportunidades de negociação de alta probabilidade. As configurações de parâmetros universais e o desempenho sólido tornam-na uma boa estratégia de base para construir. Os próximos passos são aumentar ainda mais sua estabilidade e lucratividade melhorando mecanismos de stop loss, adicionando análise de volume, combinando outros indicadores, etc.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Multiple MACD RSI simple strategy", overlay=true, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=80, pyramiding=0, calc_on_order_fills=true)

fastLength = input(10)
slowlength = input(22)
MACDLength = input(9)

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = sma(MACD, MACDLength)
delta = MACD - aMACD

fastLength2 = input(21)
slowlength2 = input(45)
MACDLength2 = input(20)

MACD2 = ema(open, fastLength2) - ema(open, slowlength2)
aMACD2 = sma(MACD2, MACDLength2)
delta2 = MACD2 - aMACD2


uptrend = (close + high)/(close[1] + high[1])
downtrend = (close + low)/(close[1] + low[1])

smoothK = input(2, minval=1, title="K smoothing Stoch RSI")
smoothD = input(3, minval=1, title= "D smoothing for Stoch RSI")
lengthRSI = input(7, minval=1, title="RSI Length")
lengthStoch = input(8, minval=1, title="Stochastic Length")
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
h0 = hline(80)
h1 = hline(20)

yearin = input(2018, title="Year to start backtesting from")

if (delta > 0) and (year>=yearin) and (delta2 > 0) and (uptrend > 1)
    strategy.entry("buy", strategy.long, comment="buy")

if (delta < 0) and (year>=yearin) and (delta2 < 0) and (downtrend < 1) and (d > 20)
    strategy.entry("sell", strategy.short, comment="sell")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Mais.