
Die Strategie ist ein dynamisches, auf Bollinger Bands basierendes System für den Durchbruch von Trends, das Trendchancen hauptsächlich durch die Beziehung zwischen dem Preis und dem Bollinger Bands erfasst. Die Strategie verwendet eine eigene Auswahlmechanik für die Auswahl der Gleichlinientypen, die in Verbindung mit dem Standard Divergence-Kanal die Merkmale der Marktfluktuation identifiziert.
Die Kernlogik der Strategie basiert auf den folgenden Schlüsselelementen:
Es handelt sich um eine Strategie zur Trendverfolgung, die vernünftig und logisch konzipiert ist. Sie erfasst die Marktdynamik durch die dynamischen Eigenschaften des Bollinger Bands und verfügt über eine gute Risikokontrolle. Die Strategie ist stark anpassbar und kann durch Parameteranpassung an verschiedene Marktumgebungen angepasst werden. Es wird empfohlen, die Parameter ausreichend zu optimieren und zu überprüfen, wenn sie in der Praxis angewendet werden, und strategische Verbesserungen in Verbindung mit der empfohlenen Optimierungsrichtung vorzunehmen.
/*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")