MACD EMA Golden Cross Tendência Seguindo Estratégia


Data de criação: 2024-02-18 15:17:36 última modificação: 2024-02-18 15:17:36
cópia: 0 Cliques: 760
1
focar em
1617
Seguidores

MACD EMA Golden Cross Tendência Seguindo Estratégia

Visão geral

A estratégia determina a direção da tendência através da computação do MACD e sua linha de sinal de média móvel, e em combinação com o EMA, determina a força da tendência atual e a fraqueza, permitindo o acompanhamento da tendência. Quando a linha MACD se abre de baixo para cima, a linha de sinal se abre de cima para baixo, e a linha EMA também pode determinar a força da tendência para filtrar a falsa ruptura.

Princípio da estratégia

A estratégia baseia-se principalmente no indicador MACD para determinar a direção da tendência e o momento de entrada. Uma linha de sinal de ruptura da linha MACD indica que a tendência de preço está sendo reversada, portanto, o julgamento é feito de acordo com a direção da ruptura. A lógica de julgamento específica é fazer mais quando o preço de fechamento está acima da média EMA e a linha MACD rompe a linha de sinal de baixo.

A função da EMA é auxiliar na determinação da tendência, e se o preço estiver acima da EMA indica que a linha média está em uma tendência ascendente, o MACD abaixo do ponto de ruptura é propenso a formar um sinal de cruzagem dourada em funcionamento; se o preço estiver abaixo da EMA indica que a linha média está em uma tendência de queda, o MACD acima do ponto de ruptura é propenso a formar um sinal de cruzagem morta. O comprimento da EMA também determina o grau de mediano e longo prazo da determinação da tendência.

Através do método descrito acima, é possível entrar no campo em tempo hábil quando o preço começa a se reversão para formar uma nova tendência, conseguindo o efeito de rastreamento de tendências.

Análise de vantagens

A estratégia combina um duplo critério de julgamento, que leva em consideração a direção da tendência dos preços e usa o indicador para determinar o momento específico de entrada, evitando o risco de falsas rupturas, aumentando a confiabilidade da estratégia. Em comparação com a utilização de um único indicador MACD, a estratégia pode julgar com mais precisão o início de uma nova tendência.

O uso da linha média da EMA também permite que a estratégia filtre os efeitos das flutuações de curto prazo, bloqueando as tendências de linha média e longa. Isso é útil para exercer o efeito de reversão do MACD.

Além disso, a estratégia pode ser aplicada em condições de mercado de lotes altos e baixos, criando simultaneamente condições de ativos e perdas, o que aumenta a adaptabilidade da estratégia.

Análise de Riscos

O principal risco desta estratégia é que o MACD tem uma maior probabilidade de determinar um Fakeout, e os sinais podem ser erroneamente identificados. Nesse caso, é necessário o auxiliar da linha média da EMA, mas também pode falhar em situações especiais.

Além disso, a estratégia usa a proporção de ganhos e perdas para definir os parâmetros de parada de perda, o que tem um certo grau de subjetividade e, se a configuração não for correta, também afetará a eficácia da estratégia.

Finalmente, a estratégia simplesmente define o número de posições abertas como 100% da participação em contas, sem levar em conta a gestão de fundos, o que também apresenta um certo risco no mercado físico.

Direção de otimização

A estratégia inclui as seguintes melhorias:

  1. A adição de outros indicadores de julgamento, formando vários conjuntos de indicadores, pode evitar ainda mais a probabilidade de um MACD emitir um sinal errado. Por exemplo, pode-se considerar KDJ, BOLL, etc.

  2. O comprimento da linha média da EMA pode ser otimizado em múltiplas combinações para encontrar o melhor parâmetro para determinar a direção da tendência.

  3. Os parâmetros do MACD também podem ser otimizados para encontrar o valor mais preciso para determinar o tempo de inversão.

  4. A adição de módulos de gerenciamento de fundos, como o índice de ganhos e perdas, pode ser usada como entrada dinâmica, e também pode ser configurado o ponto de parada de deslizamento, etc.

  5. Testar a eficácia de diferentes variedades de contratos para encontrar as variedades de negociação mais adequadas. Por exemplo, criptomoedas, futuros de índices de ações, etc.

Resumir

A estratégia de rastreamento de tendências de cruzamento de ouro MACD EMA é simples e prática em geral, assegurando a confiabilidade do sinal por meio de julgamentos de duplo indicador e estabelecendo um modo razoável de parada de perda para bloquear os lucros. O principal espaço de otimização é na seleção de parâmetros, combinação de indicadores e gestão de fundos. Se o teste for otimizado ainda mais, acredito que a estratégia pode se tornar uma das estratégias de rastreamento de tendências mais eficientes.

Código-fonte da estratégia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="MACD EMA Strategy", shorttitle="MACD EMA STRAT", overlay = true, pyramiding = 0, max_bars_back=3000, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=5000, currency=currency.USD)

// Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2016)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true

// STEP 2:
// See if this bar's time happened on/after start date
afterStartDate = true

//EMA
emasrc = close
res = input(title="EMA Timeframe", type=input.resolution, defval="15")
len1 = input(title="EMA Length", type=input.integer, defval=206)
col1 = color.yellow
// Calculate EMA
ema1 = ema(emasrc, len1)
emaSmooth = security(syminfo.tickerid, res, ema1, barmerge.gaps_on, barmerge.lookahead_off)
// Draw EMA
plot(emaSmooth, title="EMA", linewidth=1, color=col1)

//MACD
fast_length = input(title="Fast Length", type=input.integer, defval=15)
slow_length = input(title="Slow Length", type=input.integer, defval=24)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=true)
zeroline = 0

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)
//plot(zeroline, title="Zero Line", color=color.black, transp=0)

///////////////////////////LONG////////////////////////////////////////////////////////////////////

enablelong = input(true, title="Enable long?")

//Long Signal
upcondition = close > emaSmooth and close[1] > emaSmooth[1]
macdunderhis = macd < zeroline
macdcrossup = crossover(macd, signal)

longcondition = upcondition and macdunderhis and macdcrossup

//strategy buy long
if (longcondition) and (afterStartDate) and strategy.opentrades < 1 and (enablelong == true)
    strategy.entry("long", strategy.long)

//////////////////////////////////////SHORT//////////////////////////////////////////////////////////////////////////////////

enableshort = input(true, title="Enable short?")

//Short Signal
downcondition = close < emaSmooth and close[1] < emaSmooth[1]
macdoverhis = macd > zeroline
macdcrosunder = crossunder(macd, signal)

shortcondition = downcondition and macdoverhis and macdcrosunder

//strategy buy short
if (shortcondition) and (afterStartDate) and strategy.opentrades < 1 and (enableshort == true)
    strategy.entry("short", strategy.short)


//////////////////////////////////////EXIT CONDITION//////////////////////////////////////////////////////////////////////////////////
bought = strategy.position_size[1] < strategy.position_size
sold = strategy.position_size[1] > strategy.position_size
barsbought = barssince(bought)
barssold = barssince(sold)
//////LOWEST LOW//////
//Lowest Low LONG
profitfactorlong = input(title="ProfitfactorLong", type=input.float, step=0.1, defval=1.9)
loLen = input(title="Lowest Low Lookback", type=input.integer,
  defval=46, minval=2)
stop_level_long = lowest(low, loLen)[1]

if strategy.position_size>0 
    profit_level_long = strategy.position_avg_price + ((strategy.position_avg_price - stop_level_long[barsbought])*profitfactorlong)
    strategy.exit(id="TP/ SL", stop=stop_level_long[barsbought], limit=profit_level_long)

//Lowest Low SHORT
profitfactorshort = input(title="ProfitfactorShort", type=input.float, step=0.1, defval=2.1)
highLen = input(title="highest high lookback", type=input.integer,
  defval=25, minval=2)
stop_level_short = highest(high, highLen)[1]

if strategy.position_size<0 
    profit_level_short = strategy.position_avg_price - ((stop_level_short[barssold] - strategy.position_avg_price)*profitfactorshort)
    strategy.exit(id="TP/ SL", stop=stop_level_short[barssold], limit=profit_level_short)
    
//PLOTT TP SL
plot(stop_level_long, title="SL Long", linewidth=1, color=color.red)
plot(stop_level_short, title="SL Short", linewidth=1, color=color.red)