El MA MACD BB Multi-Indicator Trading Strategy Backtesting Tool es una potente plataforma de desarrollo y backtesting de estrategias de trading cuantitativas. La herramienta admite tres indicadores técnicos de uso común: Moving Average (MA), Moving Average Convergence Divergence (MACD), y Bollinger Bands (BB). Los usuarios pueden elegir flexiblemente uno de ellos como el principal indicador de señal de trading. Al mismo tiempo, la herramienta también admite tanto el trading largo como el short. Los usuarios pueden elegir flexiblemente ir largo o corto de acuerdo con las tendencias del mercado. En términos de gestión de riesgos, la herramienta permite a los usuarios establecer flexiblemente la relación de capital de cada transacción para un mejor control. Además, la herramienta también proporciona funciones detalladas de análisis de indicadores de riesgos y generación de señales para ayudar a los usuarios a captar mejor las oportunidades de trading.
El principio básico de esta estrategia es utilizar tres indicadores técnicos comunes (MA, MACD y BB) para identificar las tendencias del mercado y las señales comerciales.
En el comercio real, la estrategia calcula automáticamente el tamaño de la posición de cada transacción en función de la dirección de negociación seleccionada por el usuario (larga o corta) y la configuración de gestión de capital, y luego ejecuta las operaciones de apertura y cierre correspondientes de acuerdo con las señales.
Para reducir los riesgos mencionados anteriormente, los usuarios deben establecer razonablemente los parámetros de la estrategia, evaluar y ajustarlas periódicamente y vigilar de cerca las tendencias del mercado, interviniendo manualmente cuando sea necesario.
Las direcciones de optimización anteriores se centran principalmente en mejorar la adaptabilidad, la robustez, la rentabilidad y el control de riesgos de la estrategia mediante la introducción de métodos más avanzados y flexibles para mejorar y perfeccionar continuamente el rendimiento de la estrategia.
El MA MACD BB Multi-Indicator Trading Strategy Backtesting Tool es una herramienta de trading cuantitativa rica en características, flexible y práctica. Captura señales de trading a través de tres indicadores técnicos comunes, al tiempo que admite tanto el trading largo como corto y una gestión de riesgos flexible, adaptándose a diferentes mercados y estilos de trading. Los usuarios pueden utilizar esta herramienta para backtest y optimizar datos históricos, y también pueden aplicarla al trading en vivo. Aunque cualquier estrategia enfrenta riesgos de mercado y riesgos de modelo, a través de ajustes razonables de parámetros, estricto control de riesgos y optimización y mejora continua, se espera que esta estrategia se convierta en un poderoso asistente para los traders cuantitativos, creando retornos estables a largo plazo para ellos.
/*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")