Das MA MACD BB Multi-Indicator Trading Strategy Backtesting Tool ist eine leistungsfähige quantitative Trading-Strategie-Entwicklung und Backtesting-Plattform. Das Tool unterstützt drei häufig verwendete technische Indikatoren: Moving Average (MA), Moving Average Convergence Divergence (MACD) und Bollinger Bands (BB). Benutzer können flexibel einen von ihnen als Haupthandelssignalindikator auswählen. Gleichzeitig unterstützt das Tool auch den Long- und Short-Handel. Benutzer können flexibel wählen, ob sie nach den Markttrends lang oder kurz gehen möchten. In Bezug auf das Risikomanagement ermöglicht das Tool Benutzern, die Kapitalquote jeder Transaktion flexibel festzulegen, um die Risiken besser zu kontrollieren. Darüber hinaus bietet das Tool auch detaillierte Risikoindikatoranalyse und Signalgenerierungsfunktionen, um Benutzern zu helfen, Handelschancen besser zu erfassen.
Das Kernprinzip dieser Strategie besteht darin, drei gemeinsame technische Indikatoren (MA, MACD und BB) zu verwenden, um Markttrends und Handelssignale zu identifizieren.
Im tatsächlichen Handel berechnet die Strategie automatisch die Positionsgröße jeder Transaktion auf der Grundlage der vom Benutzer gewählten Handelsrichtung (lang oder kurz) und der Einstellungen für das Kapitalmanagement und führt anschließend entsprechend den Signalen entsprechende Eröffnungs- und Schließoperationen aus.
Um die oben genannten Risiken zu verringern, sollten die Nutzer angemessen die Strategieparameter festlegen, die Strategien regelmäßig bewerten und anpassen und die Marktentwicklung genau überwachen und bei Bedarf manuell eingreifen.
Die oben genannten Optimierungsrichtungen konzentrieren sich hauptsächlich auf die Verbesserung der Anpassungsfähigkeit, Robustheit, Rentabilität und Risikokontrolle der Strategie durch die Einführung fortschrittlicherer und flexiblerer Methoden zur kontinuierlichen Verbesserung und Vervollkommnung der Leistung der Strategie.
Das MA MACD BB Multi-Indicator Trading Strategy Backtesting Tool ist ein funktionsreiches, flexibles und praktisches quantitatives Handelswerkzeug. Es erfasst Handelssignale durch drei gemeinsame technische Indikatoren, unterstützt gleichzeitig sowohl den langen als auch den kurzen Handel und flexibles Risikomanagement, passt sich an verschiedene Märkte und Handelsstile an. Benutzer können dieses Tool zum Backtest und zur Optimierung historischer Daten verwenden und können es auch für den Live-Handel anwenden. Obwohl jede Strategie mit Marktrisiken und Modellrisiken konfrontiert ist, wird durch angemessene Parameter-Einstellungen, strenge Risikokontrolle und kontinuierliche Optimierung und Verbesserung erwartet, dass diese Strategie zu einem leistungsstarken Assistenten für quantitative Trader wird und langfristige stabile Renditen für sie schafft.
/*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")