Esta estratégia gera o indicador MACD calculando a diferença entre as linhas médias móveis rápidas e lentas, e julga a tendência e as áreas de sobrecompra / sobrevenda dos mercados financeiros juntamente com a linha de sinal.
A lógica básica é usar o indicador MACD gerado a partir da diferença de MA rápida e lenta para determinar a direção da tendência do mercado e a linha de sinal para julgar os níveis de sobrecompra / sobrevenda. Quando o MACD e a linha de sinal formam uma cruz de ouro, é um sinal longo para ir longo. Quando forma uma cruz morta, é um sinal curto para ir curto. Enquanto isso, ele usa a relação do preço com o MA de 200 dias para filtrar os sinais, tomando apenas sinais longos quando o preço está acima do MA de 200 dias e sinais curtos quando o preço está abaixo do MA de 200 dias, a fim de evitar deslizamentos durante tendências fortes.
O método específico de cálculo é o seguinte:
Quando o MACD cruza acima da linha de sinal enquanto ambos estão abaixo de 0, é um sinal longo de cruz de ouro. Quando o MACD cruza abaixo da linha de sinal enquanto ambos estão acima de 0, é um sinal curto de cruz morta. Enquanto isso, só leva muito tempo quando o preço está acima de MA de 200 dias e curto quando o preço está abaixo de MA de 200 dias.
O valor da posição em risco deve ser calculado de acordo com o método de classificação da posição em risco.
1.Testado em diferentes prazos de tempo, de 15m até 1D, resultados ótimos em 4H em rendimentos ajustados ao risco
2.Optimize MA rápido e lento para que o MACD capte ciclos, 7-21 bom para 15m
3.A MA de Hull para o MACD deu bons resultados
4.A suspensão de perdas de atraso melhora a gestão dos riscos
Esta é, em geral, uma estratégia muito simples e prática, gerando sinais de negociação de alta probabilidade através de sistema de indicadores duplos e filtragem de preços. Tem uma margem de lucro relativamente alta, usa a combinação clássica de parâmetros MACD para evitar a otimização excessiva. Ainda há grande espaço para otimização ajustando os parâmetros MA, adicionando outros indicadores e mecanismos de stop loss para melhorar ainda mais o desempenho.
/*backtest start: 2024-02-14 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Hurmun //@version=4 strategy("Simple MACD strategy ", overlay=true, margin_long=100, margin_short=100) 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) // 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 movinga2 = input(title="movinga 2", type=input.integer, defval=200) movinga200 = sma(close, movinga2) plot(movinga200, "MA", color.orange) longCondition = crossover(macd, signal) and macd < 0 and signal < 0 and close > movinga200 if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(macd, signal) and macd > 0 and signal > 0 and close < movinga200 if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) shortProfitPerc = input(title="Short Take Profit (%)", minval=0.0, step=0.1, defval=2) / 100 longProfitPerc = input(title="Long Take Profit (%)", minval=0.0, step=0.1, defval=2) / 100 stoploss = input(title="stoploss in %", minval = 0.0, step=1, defval=2) /100 longStoploss = strategy.position_avg_price * (1 - stoploss) longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) shortStoploss = strategy.position_avg_price * (1 + stoploss) if (strategy.position_size > 0 ) strategy.exit(id="XL TP", limit=longExitPrice, stop=longStoploss) if (strategy.position_size < 0 ) strategy.exit(id="XS TP", limit=shortExitPrice, stop=shortStoploss)