Esta estratégia combina o indicador MACD com médias móveis, indo longo quando ambos dão sinais alinhados.
A lógica é:
Calcular o MACD FAST, normalmente a EMA de 12 dias
Calcular o MACD lento, normalmente a EMA de 26 dias
MACD é FAST menos LENTO
A linha de sinal é tipicamente MA de 9 dias do MACD
Cálculo de MA de 9 e 26 dias
Considere longo quando o MACD cruza acima da linha de sinal
Caso o valor da posição em risco seja superior a 25%, a posição em risco deve ser considerada como uma posição em risco.
Fechar longo quando o MACD cruza abaixo da linha de sinal e a MA de 9 dias cruza abaixo da MA de 26 dias
A estratégia aproveita o indicador de sobrecompra e sobrevenda do MACD e a capacidade de seguir a tendência do MA, combinando ambos para negociações de probabilidades mais altas.
O MACD julga que a tendência foi supercomprada/supervendida, a MA determina a tendência
A combinação proporciona oportunidades de longo prazo de alta probabilidade
Regras claras e fáceis de aplicar
Requer otimização para determinar os melhores parâmetros
LONGOS apenas incapazes de utilizar oportunidades de curta duração
As negociações com tendência podem aumentar as perdas
Esta estratégia utiliza os pontos fortes do MACD e do MA
/*backtest start: 2023-09-06 00:00:00 end: 2023-09-13 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MACD Cross+MA", overlay=true) //@version=4 // Getting inputs fast_length = input(title="Fast Length", type=input.integer, defval=12) slow_length = input(title="Slow Length", type=input.integer, defval=26) 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=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2019, title = "From Year", minval = 2009) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2009) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // 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 plot(sma(close,9),color=color.red) plot(sma(close,26),color=color.green) //Condition BMacdcondition= (macd>signal) SMacdcondition= (macd<signal) longCondition = crossover(sma(close, 9), sma(close, 26)) shortCondition = crossunder(sma(close, 9), sma(close, 26)) //entry if (BMacdcondition) and window() (longCondition) strategy.entry("LONG", strategy.long) if (shortCondition) and window() (SMacdcondition) strategy.close("LONG", qty_percent=100 , comment="หนีตาย")