Estratégia de quantidade do MACD do gradiente

Autora:ChaoZhang, Data: 2023-12-19 16:14:50
Tags:

img

Resumo

Esta estratégia calcula velas Heikin-Ashi para suavizar as linhas de preço e combina o indicador MACD para gerar sinais de negociação, implementando uma estratégia quantitativa que rastreia tendências de médio a longo prazo.

Estratégia lógica

  1. Calcule os preços abertos, fechados, altos e baixos de Heikin-Ashi para traçar velas de Heikin-Ashi e tendências de preços suaves.

  2. Definir parâmetros MACD: comprimento rápido 12, comprimento lento 26, comprimento do sinal 9.

  3. Calcule a linha lenta da DEA, a linha rápida da DEA e o histograma MACD.

  4. Vá longo quando o histograma MACD cruza acima de 0; vá curto quando cruza abaixo de 0.

  5. Adicionar filtros de ano, mês e dia para limitar a negociação a um intervalo de tempo especificado.

Análise das vantagens

  1. Os candelabros Heikin-Ashi filtram o ruído do mercado de forma eficaz para identificar tendências.

  2. O MACD fornece sinais de negociação de tendência claros.

  3. A combinação de Heikin-Ashi e MACD melhora a qualidade e a rentabilidade do sinal.

  4. Os filtros de tempo ajudam a otimizar o cronograma de negociação com base no desempenho histórico.

Análise de riscos

  1. Possíveis grandes perdas durante a inversão da tendência.

  2. Os parâmetros MACD incorretos podem gerar sinais excessivamente inúteis.

  3. Os filtros de tempo rígidos podem perder boas oportunidades de negociação.

Contramedidas:

  1. Estabelecer um stop loss/take profit para limitar as perdas.

  2. Otimizar os parâmetros do MACD para determinar a melhor combinação.

  3. Adicionar indicadores para determinar tendências locais.

Orientações de otimização

  1. Teste diferentes combinações de parâmetros para encontrar o ideal.

  2. Adicione mecanismos de stop loss como stop loss de trail.

  3. Adicione indicadores como EMA, KDJ para determinar pontos de reversão.

  4. Adicionar indicadores de volume para evitar divergências.

Resumo

Esta estratégia suaviza a ação do preço com velas Heikin-Ashi e determina a direção da tendência e os sinais de entrada com o indicador MACD Tradingview para implementar uma estratégia de quantidade de tendência.


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

//@version=4
strategy("MACD ASHI BARS .v1 ", overlay=false,default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,slippage=1)

// Calculation HA Values 
haopen  = 0.0
haclose = (open + high + low + close) / 4
haopen := na(haopen[1]) ? (open + close) / 2 : (haopen[1] + haclose[1]) / 2
hahigh  = max(high, max(haopen, haclose))
halow   = min(low,  min(haopen, haclose))

// HA colors
hacolor = haclose > haopen ? color.green : color.red
src=haclose



fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = sma(src,slowmacd)
macdslowline2 = sma(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = sma(src,fastmacd)
macdfastline2 = sma(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine = sma(MACDLine, signalmacd)

delta = MACDLine-SignalLine




swap1 = delta>0?color.green:color.red



plot(delta,color=swap1,style=plot.style_columns,title='Histo',histbase=0,transp=20)
p1 = plot(MACDLine,color=color.blue,title='MACD Line')
p2 = plot(SignalLine,color=color.red,title='Signal')
fill(p1, p2, color=color.blue)
hline(0)



yearfrom = input(2020)
yearuntil =input(2042)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)







if ( crossover(delta,0)  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND",  comment="AL")
    
else
    strategy.cancel(id="MMAL")


if (  crossunder(delta,0) and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND",  comment="SAT")
else
    strategy.cancel(id="MMSAT")
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


Mais.