Herramienta de backtesting de estrategia de trading con múltiples indicadores MA MACD BB

MA MACD BB
Fecha de creación: 2024-06-03 09:49:08 Última modificación: 2024-06-03 09:49:08
Copiar: 0 Número de Visitas: 684
1
Seguir
1617
Seguidores

Herramienta de backtesting de estrategia de trading con múltiples indicadores MA MACD BB

Descripción general

La herramienta de retroalimentación de estrategias de trading de múltiples indicadores MA MACD BB es una plataforma de desarrollo y retroalimentación de estrategias de trading cuantitativas de gran alcance. La herramienta admite el uso de tres indicadores técnicos comunes: el promedio móvil ((MA), el promedio móvil convergente disperso ((MACD) y el cinturón de Brin ((BB), y el usuario puede elegir con flexibilidad uno de ellos como su principal indicador de señal de negociación.

Principio de estrategia

El principio central de esta estrategia es el uso de tres indicadores técnicos comunes (MA, MACD y BB) para identificar tendencias en el mercado y señales de negociación. En concreto:

  1. Cuando el usuario elige MA como indicador principal, la estrategia calcula el promedio móvil del período especificado, generando señales de compra y venta cuando el precio sube o baja el promedio móvil.
  2. Cuando el usuario selecciona el MACD como indicador principal, la estrategia calcula el valor del MACD y la línea de señal, generando señales de compra y venta respectivamente cuando el MACD pasa por encima o por debajo de la línea de señal. Además, la estrategia también traza un gráfico de columnas MACD para mostrar la fuerza de la tendencia de manera más intuitiva.
  3. Cuando el usuario selecciona BB como el indicador principal, la estrategia calcula el trayecto ascendente y descendente de la banda de Bryn, genera una señal de compra cuando el precio rompe la trayectoria descendente, genera una señal de venta cuando rompe la trayectoria ascendente y se cierra cuando regresa cerca de la trayectoria media.

En las operaciones concretas, la estrategia calcula automáticamente el tamaño de la posición de cada operación según la dirección de la operación elegida por el usuario (político o vacante) y la configuración de administración de fondos, y luego ejecuta las operaciones de apertura de posición y posición correspondientes según la señal.

Ventajas estratégicas

  1. Indicador de flexibilidad: los usuarios pueden elegir MA, MACD o BB como indicadores de negociación principales, según sus propias preferencias y características del mercado, para adaptarse a diferentes estilos de negociación y entornos de mercado.
  2. Comercialización bidireccional: La estrategia apoya el comercio bidireccional de múltiples espacios, lo que permite a los usuarios elegir la dirección de negociación de manera flexible en función de las tendencias del mercado, no solo para obtener ganancias en situaciones de alza, sino también para obtener ganancias en situaciones de caída.
  3. Control de riesgos: El usuario puede configurar la proporción de fondos de cada operación con flexibilidad, controlar razonablemente el umbral de riesgo de cada operación, y la estrategia calcula automáticamente el tamaño de la posición de cada operación en función del saldo de la cuenta, evitando el riesgo excesivo.
  4. Claridad de la señal: la estrategia utiliza indicadores técnicos de uso común para generar una señal de negociación clara y objetiva, y mediante la visualización de gráficos, el usuario puede identificar claramente la dirección de la tendencia y el momento de negociación.
  5. Facilidad de retroalimentación: los usuarios pueden utilizar la herramienta para retroalimentar los datos históricos, evaluar rápidamente y optimizar el rendimiento de las estrategias, proporcionando una referencia importante para las operaciones en el disco.

Riesgo estratégico

  1. Riesgo de mercado: cualquier estrategia de negociación está expuesta a riesgos de fluctuación e incertidumbre en el mercado, y esta estrategia no es una excepción. Si el mercado se ve muy volátil o actúa irracionalmente, puede causar una estrategia de señales erróneas y pérdidas.
  2. Riesgo de parámetros: el rendimiento de la estrategia depende en parte de los parámetros indicadores seleccionados por el usuario, como el ciclo de la MA, el ciclo de la línea rápida y lenta de la MACD, el ciclo y la anchura de la BB, etc. La configuración inadecuada de los parámetros puede causar una mala eficacia de la estrategia.
  3. Riesgo de sobreajuste: si el usuario optimiza excesivamente los parámetros de la estrategia en la retroalimentación, puede causar que la estrategia se enfoque demasiado en datos históricos específicos y no funcione bien en el mercado real, es decir, se produce un problema de ajuste.
  4. Riesgo de cigüeña negra: la estrategia depende principalmente de los indicadores técnicos para generar señales de negociación, y si el mercado experimenta cambios fundamentales significativos o eventos extremos, la estrategia puede no responder a tiempo, lo que genera grandes pérdidas.

Para reducir estos riesgos, los usuarios deben establecer los parámetros de la estrategia de manera razonable, evaluar y ajustar la estrategia periódicamente, y seguir de cerca el movimiento del mercado e intervenir manualmente cuando sea necesario. Además, las medidas estrictas de gestión de riesgos, como el establecimiento de límites de pérdidas y posiciones, también son indispensables.

Dirección de optimización de la estrategia

  1. Optimización de parámetros dinámicos: los parámetros indicadores de las estrategias actuales son fijos, se puede considerar la introducción de un mecanismo de adaptación, para ajustar los parámetros dinámicos de acuerdo con los cambios en la situación del mercado, con el fin de adaptarse mejor al mercado.
  2. Optimización de señales combinadas: las estrategias actuales se basan principalmente en un solo indicador para generar señales de negociación. Se puede considerar la combinación de señales de varios indicadores, como la combinación de señales de MA y MACD, para mejorar la fiabilidad y solidez de la señal.
  3. Optimización de la gestión de posiciones: la estrategia actual utiliza la gestión de posiciones de proporción fija, se puede considerar la introducción de métodos más avanzados, como la fórmula de Kelly o la estrategia de equilibrio dinámico, para optimizar el tamaño de la posición y el riesgo-beneficio.
  4. Optimización de stop loss: la estrategia actual carece de una lógica de stop loss clara, se puede considerar la adición de un mecanismo de stop loss dinámico basado en ATR o porcentaje para controlar mejor el riesgo a la baja.
  5. Optimización de varios mercados: las estrategias actuales se centran en un solo mercado, pero se puede considerar la posibilidad de extenderse a varios mercados relacionados o complementarios, aprovechando las relaciones entre los mercados para mejorar la estabilidad de la estrategia y los niveles de ganancias.

La orientación de optimización anterior se basa principalmente en la mejora de la adaptabilidad, la estabilidad, la rentabilidad y el control del riesgo de la estrategia, y en la mejora continua y el perfeccionamiento del rendimiento de la estrategia mediante la introducción de métodos más avanzados y flexibles.

Resumir

La herramienta de retroalimentación de estrategias de negociación de múltiples indicadores MA MACD BB es una herramienta de negociación cuantitativa de gran funcionalidad y flexibilidad. Captura señales de negociación a través de tres indicadores técnicos de uso común, al mismo tiempo que admite operaciones binarias en varios espacios y una gestión de riesgos flexible, capaz de adaptarse a diferentes mercados y estilos de negociación.

Código Fuente de la Estrategia
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Future_Billi0naire_

//@version=5
strategy("MA MACD BB Backtester", overlay=true)

//@variable Input for Strategy
which_ta = input.string("MA", title="Select Indicator", options=["MACD", "BB", "MA"])
which_camp = input.string("Long", title="Select Long / Short", options=["Short", "Long"])

//@variable Input parameters for Risk Management
positionSize = input.float(100.0, title="Each position's capital allocation %", minval=0.0, maxval = 100.0) / 100

//@variable Input parameters for MACD
fast_length = input.int(12, title="MACD Fast Length")
slow_length = input.int(26, title="MACD Slow Length")
signal_smoothing = input.int(9, title="MACD Signal Smoothing")
macd_source = input.source(close, title="MACD Source")

//@variable Input parameters for Moving Average
ma_length = input.int(50, title="Moving Average Length")

//@variable Input parameters for Bollinger Bands
bb_length = input.int(20, title="Bollinger Bands Length")
bb_mult = input.float(2.0, title="Bollinger Bands Multiplier")

// Choosing the Strategy
int x = na
if which_ta == "MA"
    x := 1
else if which_ta == "MACD"
    x := 2
else if which_ta == "BB"
    x := 3

// Calculate MACD and Signal line
[macdLine, signalLine, _] = ta.macd(macd_source, fast_length, slow_length, signal_smoothing)

// Calculate Moving Average
ma = ta.sma(close, ma_length)

// Calculate Bollinger Bands
basis = ta.sma(close, bb_length)
dev = bb_mult * ta.stdev(close, bb_length)
upper = basis + dev
lower = basis - dev

// Plotting MACD and Signal lines
plot(x == 2 ? macdLine : na, color=color.blue, title="MACD Line")
plot(x == 2 ? signalLine : na, color=color.red, title="Signal Line")

// Plotting histogram
histogram = macdLine - signalLine
plot(x == 2 ? histogram : na, color=color.gray, style=plot.style_histogram, title="MACD Histogram")

// Plotting Moving Average
plot(x == 1 ? ma : na, color=color.orange, title="Moving Average")

// Plotting Bollinger Bands
plot(x == 3 ? upper : na, color=color.green, title="Upper Bollinger Band")
plot(x == 3 ? lower : na, color=color.red, title="Lower Bollinger Band")
plot(x == 3 ? basis : na, color=color.blue, title="Basis Bollinger Band")

// Generate buy signals
buySignalMACD = ta.crossover(macdLine, signalLine)
buySignalMA = ta.crossover(close, ma)
buySignalBB = close < lower
sellSignalBBExit = close > basis

// Generate sell signals
sellSignalMACD = ta.crossunder(macdLine, signalLine)
sellSignalMA = ta.crossunder(close, ma)
sellSignalBB = close > upper
buySignalBBExit = close < basis

// Plot buy signals on the chart
plotshape(series=buySignalMACD and x == 2 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalMACD : na, title="Buy Signal MACD", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY MACD")
plotshape(series=buySignalMA and x == 1 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalMA : na, title="Buy Signal MA", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY MA")
plotshape(series=buySignalBB and x == 3 and which_camp=="Long" and strategy.opentrades == 0 ? buySignalBB : na, title="Buy Signal BB", location=location.belowbar, color=color.lime, style=shape.labelup, text="BUY BB")

// Plot sell signals on the chart
plotshape(series=sellSignalMACD and x == 2 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalMACD : na, title="Sell Signal MACD", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL MACD")
plotshape(series=sellSignalMA and x == 1 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalMA : na, title="Sell Signal MA", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL MA")
plotshape(series=sellSignalBB and x == 3 and which_camp=="Short" and strategy.opentrades == 0 ? sellSignalBB : na, title="Sell Signal BB", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL BB")

// Calculate stop loss and take profit levels
accountSize = strategy.equity
positionSizeAmount = accountSize * positionSize

// Calculate order size based on stop loss amount
orderSize = math.floor(positionSizeAmount / close)

// Enter long positions based on buy signals
if strategy.opentrades == 0
    if (buySignalMACD) and x == 2 and which_camp == "Long"
        strategy.entry("Buy MACD", strategy.long, qty=orderSize)
    if (buySignalMA) and x == 1 and which_camp == "Long"
        strategy.entry("Buy MA", strategy.long, qty=orderSize)
    if (buySignalBB) and x == 3 and which_camp == "Long"
        strategy.entry("Buy BB", strategy.long, qty=orderSize)

// Enter short positions based on sell signals
if strategy.opentrades == 0
    if (sellSignalMACD) and x == 2 and which_camp == "Short"
        strategy.entry("Sell MACD", strategy.short, qty=orderSize)
    if (sellSignalMA) and x == 1 and which_camp == "Short"
        strategy.entry("Sell MA", strategy.short, qty=orderSize)
    if (sellSignalBB) and x == 3 and which_camp == "Short"
        strategy.entry("Sell BB", strategy.short, qty=orderSize)

// Close positions based on exit signals
if (sellSignalMACD) and which_camp == "Long"
    strategy.close("Buy MACD")
if (sellSignalMA) and which_camp == "Long"
    strategy.close("Buy MA")
if (sellSignalBBExit) and which_camp == "Long"
    strategy.close("Buy BB")
if (buySignalMACD) and which_camp == "Short"
    strategy.close("Sell MACD")
if (buySignalMA) and which_camp == "Short"
    strategy.close("Sell MA")
if (buySignalBBExit) and which_camp == "Short"
    strategy.close("Sell BB")