Erweiterte Bollinger Band Moving Average Grid Trend Tracking-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-24 14:48:28
Tags:

img

Übersicht

Die Strategie heißt Advanced Bollinger Band Moving Average Grid Trend Tracking Strategy. Es ist eine Strategie, die Bollinger Bands und gleitende Durchschnitte zur Trendbestimmung verwendet und Rasterpositionen zur Verfolgung der Trendrichtung festlegt.

Grundsätze

Die Hauptidee dieser Strategie lautet:

  1. Die mittlere Schiene der Bollinger Bands ist der einfache gleitende Durchschnitt für n Tage und die Breite ist die durchschnittliche Amplitude des ATR für n Tage.

  2. Die vier Linien außerhalb der Bollinger Bands sind abnorme Vielfache der durchschnittlichen echten Volatilitätsamplitude.

  3. Die schnellen und langsamen gleitenden Durchschnitte der EMA bestimmen die Trendrichtung des großen Zyklus.

  4. Verfolgen und bauen Positionen in Richtung des Trends auf, schließen Positionen für Gewinn, wenn Sie Pinbars sehen.

Die wichtigsten Bestandteile dieser Strategie sind insbesondere:

  1. Bollinger-Band-Parameter ermitteln. Die mittlere Schiene der Bollinger-Bands ist der n-tägige gleitende SMA und die Breite der Bollinger-Bands ist der n-tägige ATR. Die Bollinger-Länge n in der Strategie beträgt 20.

  2. Stellen Sie vier erweiterte Linien außerhalb der Bollinger Bands ein. Die Entfernung zwischen den Linien und der mittleren Schiene beträgt 1.236 mal, 2.382 mal, 3.618 mal und 4.236 mal die durchschnittliche wahre Volatilitätsamplitude.

  3. Setzen Sie schnelle und langsame gleitende EMA-Durchschnitte, um den großen Zyklustrend zu bestimmen.

  4. Graduell lange Positionen einrichten, wenn Sie in einem großen Aufwärtstrend die vier unten liegenden Linien durchbrechen.

  5. Wenn ein Pinbar erscheint oder der Preis den großen Zyklus gleitenden Durchschnitt wieder überschreitet, wird es als ein Pinbar Ende Signal für Positionen für Gewinn zu schließen betrachtet.

Das oben genannte ist das wichtigste technische Prinzip dieser Strategie: Durch die Beurteilung der aktuellen Volatilitätsspanne durch Bollinger-Bänder und die Festlegung von Positionen unter dem Trend des großen Zyklus kann der endgültige Effekt von Positionen mit hoher Wahrscheinlichkeit erreicht werden.

Analyse der Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Nutzen Sie die Merkmale des Trends voll aus, bestimmen Sie die Trendrichtung in großen Zyklen, bauen Sie Positionen in Trendrichtung auf, um unnötige Umkehroperationen zu reduzieren.

  2. Durch die Verwendung mehrerer Bollinger-Linien kann der aktuelle Volatilitätsbereich klarer beurteilt werden, wodurch die meisten Trends erfasst werden können.

  3. Die Grid-Positionsmethode ermöglicht eine gleichmäßige Verteilung der Risiken auf jede Fondsmenge, um eine stabile Rendite zu erzielen.

  4. Die Verwendung von hocheffizienten Pinbar-Signalen zum Schließen von Positionen kann schnell Gewinne erzielen.

  5. Die Gesamtstrategie integriert Trendbestimmung, Netzpositionen und spezifische Signalpositionsschließung und ist eine relativ reife und vollständige quantitative Strategie.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Wahrscheinlichkeit einer falschen Bestimmung des großen Zyklustrends Es besteht eine gewisse Wahrscheinlichkeit eines Fehlers bei schnellen und langsamen gleitenden Durchschnitten, was zu unnötigen Umkehroperationen führen kann.

  2. Wahrscheinlichkeit eines Ausbruchs der Bollinger-Linie.

  3. Pinbar-Signale können zu spät erscheinen und können nicht rechtzeitig Gewinne erzielen.

  4. Es ist leicht, bei großen Zyklusschlaganpassungen zu viele überlappende Positionen zu bilden.

Die entsprechenden Lösungen sind:

  1. Anpassung der schnellen und langsamen gleitenden Durchschnittsparameter zur Verringerung der Fehlerwahrscheinlichkeit.

  2. Die Bollinger-Linienparameter so anpassen, dass die Bollinger-Linien so weit wie möglich an die meisten Schwankungen festhalten.

  3. Testen Sie empfindlichere spezifische Muster für Profit-Taking-Signale.

  4. Vergrößern Sie den Abstand zum Kontrollstand.

Optimierungsrichtlinien

Die Strategie kann in folgenden Richtungen optimiert werden:

  1. Testen Sie verschiedene gleitende Durchschnittsparameter, um große Zyklus-Trendbestimmungen zu optimieren. Zum Beispiel testen Sie andere Indikatoren wie EMA, RSI usw.

  2. Testen Sie verschiedene Multiple ATR-Parameter, um die Bollinger-Kanalbreiten-Einstellungen zu optimieren.

  3. Testen Sie andere effiziente Profit-Taking-Signale, z. B. SAR, Kalman Lines usw.

  4. Optimieren Sie das Gitterintervall, damit sich die Volatilitätsintervalle gleichmäßiger aufteilen, um Überlappungen von Positionen zu reduzieren.

  5. Steigern Sie die Stop-Loss-Mechanismen und vermeiden Sie große Verluste bei extremen Marktbedingungen.

Zusammenfassung

Die Strategie integriert die Verwendung von Bollinger-Kanal, gleitenden Durchschnittsindikatoren, spezifischen K-Linienmustern und anderen technischen Mitteln. Unter der Prämisse der Bestimmung des großen Zyklustrends baut sie eine Trend-Tracking-Gitterstrategie auf der Grundlage von gleitenden Durchschnitten und Bollinger-Bändern auf. Im Vergleich zu traditionellen Bollinger-Band-Breakouts fügt diese Strategie ein trendcharakteristisches Urteil hinzu, das unnötige Reverse-Positionen reduzieren kann. Gleichzeitig diversifiziert die Gitterposition-Methode Risiken für jede Einheit von Fonds, um stabile Renditen zu erzielen. Die Strategie kann aus mehreren Blickwinkeln wie Trendbestimmung, Bollinger-Breite, Gewinnsignale, Stop-Loss-Methoden usw. optimiert werden, um stabilere Strategieeffekte zu erzielen.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 plot

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy1)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend 
buy3=ta.crossunder(close,bott3) and longTrend 
buy4=ta.crossunder(close,bott4) and longTrend 
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")
     

Mehr