Esta estratégia combina Bollinger Band, média móvel e MACD, formando um sistema de negociação relativamente completo.
A estratégia é chamada
A lógica básica da negociação é:
Comparar Bollinger Mid Band, EMA e linha zero do MACD para determinar se o mercado está em uma fase de tendência de alta ou baixa.
Após a identificação de uma tendência, a estratégia verifica se a EMA cruza a faixa média BB e se o histograma MACD cruza a linha de sinal para determinar as entradas.
Estabeleça o objetivo de lucro e o stop loss.
A maior vantagem desta estratégia é o uso simultâneo de ferramentas de tendência, média móvel e MACD para guiar as decisões.
Em primeiro lugar, o BB Mid Band reflete claramente a direcção principal da tendência actual.
Em segundo lugar, o próprio BB possui fortes características de envelope. A área ao redor da faixa média também indica certos níveis de suporte/resistência.
Além disso, o MACD mede o crescimento e declínio do ímpeto de alta/baixa.
Por último, a meta de lucro pré-estabelecida e o stop loss controlam o risco/recompensa das operações individuais, garantindo a estabilidade geral.
Apesar da utilização de várias ferramentas analíticas, os principais riscos são:
Os parâmetros BB incorretos não refletem claramente a tendência primária.
O sistema EMA sinaliza longo mas o MACD não se torna claramente positivo, as forças de baixa podem expandir.
Intervalo de lucro-alvo/stop loss demasiado amplo, perda de transacções individuais aumenta.
As principais soluções são:
Ajustar os parâmetros BB para garantir que a faixa média reflita eficazmente a tendência principal.
Introduzir mais indicadores técnicos para julgar o impulso touro/urso.
Avaliar os negócios históricos e otimizar a meta de lucro/stop loss.
A estratégia pode ser melhorada nos seguintes aspectos:
Introduzir mais indicadores como KDJ, ATR, etc. para ajudar a julgar a tendência e melhorar a precisão.
Implementar paradas mais sofisticadas, como paradas de trail, paradas de fuga, etc.
Avaliar o desempenho de diferentes produtos, ajustar os parâmetros para se adequarem às diferentes condições do mercado.
Estratégia de teste e ajuste baseada em resultados de backtest em diferentes prazos e mercados.
Incorporar aprendizado de máquina para otimização automática de parâmetros e atualização dinâmica de estratégias.
Esta estratégia alavanca BB, MA e MACD juntos. Tem um julgamento claro da tendência, certas características de envelope e também capta algumas reversões. Com mais ferramentas auxiliares para julgar entradas/saídas, pode alcançar um desempenho mais confiável.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Combined Strategy", overlay=true, shorttitle="Comb Strat", default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Precio de beneficio y Stop Loss takeProfitTicks = 87636 stopLossTicks = 53350 // Bollinger Bands + EMA length_bb = input(150, title="BB Length") src_bb = input(close, title="BB Source") mult = input(2.0, title="BB StdDev") basis = ta.sma(src_bb, length_bb) dev = mult * ta.stdev(src_bb, length_bb) upper = basis + dev lower = basis - dev len_ema = input(34, title="EMA Length") src_ema = input(close, title="EMA Source") out_ema = ta.ema(src_ema, len_ema) typeMA = input("SMA", title="Method") smoothingLength = input(5, title="Length") var float smoothingLine = na if (typeMA == "SMA") smoothingLine := ta.sma(out_ema, smoothingLength) else if (typeMA == "EMA") smoothingLine := ta.ema(out_ema, smoothingLength) // MACD fast_length = input(title="Fast Length", defval=9) slow_length = input(title="Slow Length", defval=17) src_macd = input(title="Source", defval=close) signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=9) sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"]) fast_ma = sma_source == "SMA" ? ta.sma(src_macd, fast_length) : ta.ema(src_macd, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src_macd, slow_length) : ta.ema(src_macd, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal // Condiciones de compra y venta longCondition = (out_ema > basis) and (macd > signal) and (signal > 0) shortCondition = (out_ema < basis) and (macd < signal) and (signal < 0) // Variables de estado var bool longExecuted = na var bool shortExecuted = na // Estrategia if (longCondition and not longExecuted) strategy.entry("Long", strategy.long) longExecuted := true shortExecuted := na if (shortCondition and not shortExecuted) strategy.entry("Short", strategy.short) shortExecuted := true longExecuted := na // Take Profit y Stop Loss para Compras y Ventas Cortas strategy.exit("Take Profit/Close Long", from_entry="Long", profit=takeProfitTicks, loss=stopLossTicks) strategy.exit("Take Profit/Close Short", from_entry="Short", profit=takeProfitTicks, loss=stopLossTicks) // Cierre de posiciones cuando la dirección cambia if ((out_ema < basis) and (macd < signal)) strategy.close("Long") longExecuted := na if ((out_ema > basis) and (macd > signal)) strategy.close("Short") shortExecuted := na // Plots plot(basis, "BB Basis", color=#FF6D00) plot(upper, "BB Upper", color=color.new(#2962FF, 0.5)) plot(lower, "BB Lower", color=color.new(#2962FF, 0.5)) plot(smoothingLine, title="Smoothing Line", color=#f37f20, linewidth=2) hline(0, "Zero Line", color=color.new(#787B86, 50)) plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? color.green : color.red) : (hist[1] < hist ? color.red : color.green))) plot(macd, title="MACD", color=color.blue) plot(signal, title="Signal", color=color.orange)