Diese Strategie ist ein auf Bollinger Bands basierendes Dynamik-Breakout-Handelssystem, das in erster Linie Trendchancen durch die Beziehung zwischen Preis und oberem Bollinger Band erfasst.
Die Kernlogik der Strategie beruht auf folgenden Schlüsselelementen: 1. Verwendet anpassbare gleitende Durchschnitte (einschließlich SMA, EMA, SMMA, WMA, VWMA) zur Berechnung des mittleren Bands von Bollinger Bands. 2. Bestimmt dynamisch die Position des oberen und unteren Bandes durch Standard-Abweichungs-Multiplikator (Standard 2.0). 3. Tritt in Long-Positionen ein, wenn der Preis über das obere Band bricht, was auf die Bildung starker Breakout-Trends hinweist. 4. Verlässt Positionen, wenn der Preis unter das untere Band fällt, was auf ein mögliches Ende des Aufwärtstrends hindeutet. 5. Die Handelskosten (0,1%) und der Slip (3 Punkte) werden berücksichtigt, was die realen Handelsbedingungen besser widerspiegelt.
Dies ist ein gut konzipierter Trend, der einer Strategie mit klarer Logik folgt. Er erfasst die Marktdynamik durch die dynamische Natur von Bollinger Bands und beinhaltet gute Risikokontrollmechanismen. Die Strategie ist sehr anpassbar und kann sich durch Parameteranpassungen an verschiedene Marktumgebungen anpassen. Für die Implementierung des Live-Handels wird empfohlen, eine gründliche Parameteroptimierung und Backtesting-Validierung durchzuführen und gleichzeitig die vorgeschlagenen Optimierungsrichtungen für die Strategieverbesserung zu berücksichtigen.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Demo GPT - Bollinger Bands", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs length = input.int(20, minval=1, title="Length") maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") offset = input.int(0, "Offset", minval=-500, maxval=500) // Date range inputs startYear = input.int(2018, "Start Year", minval=1970, maxval=2100) startMonth = input.int(1, "Start Month", minval=1, maxval=12) startDay = input.int(1, "Start Day", minval=1, maxval=31) endYear = input.int(2069, "End Year", minval=1970, maxval=2100) endMonth = input.int(12, "End Month", minval=1, maxval=12) endDay = input.int(31, "End Day", minval=1, maxval=31) // Time range startTime = timestamp("GMT+0", startYear, startMonth, startDay, 0, 0) endTime = timestamp("GMT+0", endYear, endMonth, endDay, 23, 59) // Moving average function ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Calculate Bollinger Bands basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev // Plot plot(basis, "Basis", color=#2962FF, offset=offset) p1 = plot(upper, "Upper", color=#F23645, offset=offset) p2 = plot(lower, "Lower", color=#089981, offset=offset) fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95)) // Strategy logic: Only go long and flat inDateRange = time >= startTime and time <= endTime noPosition = strategy.position_size == 0 longPosition = strategy.position_size > 0 // Buy if close is above upper band if inDateRange and noPosition and close > upper strategy.entry("Long", strategy.long) // Sell/Exit if close is below lower band if inDateRange and longPosition and close < lower strategy.close("Long")