Bullische Ausbruchsstrategie basierend auf Bollinger Bands und VWAP


Erstellungsdatum: 2024-02-06 14:36:26 zuletzt geändert: 2024-02-06 14:36:26
Kopie: 1 Klicks: 885
1
konzentrieren Sie sich auf
1617
Anhänger

Bullische Ausbruchsstrategie basierend auf Bollinger Bands und VWAP

Überblick

Die Strategie nutzt die Brin-Band-Indikatoren, um den VWAP zu verfolgen. Wenn der VWAP nach oben durch den Brin-Band geht, wird er als mehrköpfiger Durchbruch beurteilt. Wenn der VWAP nach unten durch den Brin-Band geht, wird er als leerer Durchbruch beurteilt.

Strategieprinzip

  1. Berechnung des VWAP.
  2. Berechnen Sie die Brin-Band für VWAP, die Oberbahn, Mittelbahn und Unterbahn umfasst.
  3. Beurteilen Sie, ob VWAP den Brin-Band-Mittelkurs nach oben durchbrechen wird, und wenn ja, gehen Sie mit einer Mehrkopfstrategie ein, wenn der Preis über dem Hauptstützpunkt Pivot Point liegt.
  4. Der Stop-Loss wurde auf 5% festgelegt.
  5. Wenn der VWAP nach unten durch die Brin-Band-Abfahrt geht, wird die Luftwaffe als bestätigt angesehen und die Position aufgelöst; wenn der Stoppschaden ausgelöst wird, wird auch die Position aufgelöst.

Analyse der Stärken

  1. VWAP verfügt über eine starke Trend-Tracking-Fähigkeit, kombiniert mit einem Brin-Band, der Trends präzise bestimmen kann.
  2. Das Hinzufügen von Pivot Points als zusätzliche Bedingung filtert viele falsche Durchbrüche und verhindert unnötige Verluste.
  3. Mit einer partiellen Ausstiegsstrategie können Sie einen Teil der Gewinne sperren und die Risiken kontrollieren.
  4. Die Rückmeldung ergab, dass die Strategie in den Bullenmärkten hervorragend funktioniert und eine hohe Stabilität aufweist.

Risikoanalyse

  1. In einem Schock kann es zu False Breaks kommen, die zu Verlusten führen.
  2. Pivot Points können nicht vollständig vor False Breaks bewahrt werden, sondern müssen mit weiteren Indikatoren kombiniert werden, um Filtersignale zu filtern.
  3. Ein Teil der Abwanderung erhöht die Häufigkeit der Operationen und erhöht die Transaktionskosten.
  4. In einem Bärenmarkt ist die Wirkung nicht optimal und es ist notwendig, die Risiken zu kontrollieren.

Optimierungsrichtung

  1. In Kombination mit anderen Indikatoren wie MACD, KDJ und anderen, kann die Filterung von Ein- und Ausstiegssignalen unterstützt werden.
  2. Die optimale Kombination von Parametern kann durch Optimierung der Längen und der Standardabweichung der Brin-Bänder gefunden werden.
  3. Eine dynamische Optimierung der Brin-Band-Parameter kann durch die Einführung von Machine-Learning-Algorithmen erreicht werden.
  4. Es ist möglich, verschiedene Stop-Loss-Levels zu testen, um die optimale Stop-Loss-Punkt zu finden.
  5. Es ist möglich, sich an einen Anpassungsmechanismus anzupassen, um die Zielgewinnspanne an die Marktschwankungen anzupassen.

Zusammenfassen

Diese Strategie ist insgesamt ein stabiles Durchbruchssystem. Die Standardisierungsmethode, die Optimierung der Parameter sind groß und eignen sich für quantitative Transaktionen. Gleichzeitig muss auf die Risikokontrolle und die Vermeidung von Verlusten durch außergewöhnliche Verhaltensweisen geachtet werden. Insgesamt ist es eine Strategie der Durchbruchart, die es wert ist, eingehend untersucht und kontinuierlich optimiert zu werden.

Strategiequellcode
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 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/
// © ediks123

//@version=4
strategy("BBofVWAP with entry at Pivot Point", overlay=false, pyramiding=1,   default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

// Function outputs 1 when it's the first bar of the D/W/M/Y
is_newbar(res) =>
    ch = 0
    if(res == 'Y')
        t  = year(time('D'))
        ch := change(t) != 0 ? 1 : 0
    else
        t = time(res)
        ch := change(t) != 0 ? 1 : 0
    ch


//variables BEGIN
//smaLength=input(200,title="Slow MA Length")

bbLength=input(50,title="BB Length")  
//bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

pp_period = input(title = "Pivot Period", type=input.string, defval="Week", options = ['Day', 'Week'])

pp_res = pp_period == 'Day' ? 'D' : pp_period == 'Week' ? 'W' : pp_period == 'Month' ? 'M' : 'Y' 

riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(5,title="Stop Loss",minval=1)



//sma200=sma(close,smaLength)
//plot(sma200, title="SMA 200", color=color.orange)

myVwap=vwap(hlc3)

//bollinger calculation
basis = sma(myVwap, bbLength)
dev = mult * stdev(myVwap, bbLength)
upperBand = basis + dev
lowerBand = basis - dev

//plot bb
plot(basis, "Basis", color=color.teal, style=plot.style_circles , offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=color.teal, transp=95)

plot(myVwap, title="VWAP", color=color.purple)


//pivot points 


// Calc High
high_cur = 0.0
high_cur := is_newbar(pp_res) ? high : max(high_cur[1], high)

phigh = 0.0
phigh := is_newbar(pp_res) ? high_cur[1] : phigh[1]

// Calc Low
low_cur = 0.0
low_cur := is_newbar(pp_res) ? low : min(low_cur[1], low)

plow = 0.0
plow := is_newbar(pp_res) ? low_cur[1] : plow[1]

// Calc Close
pclose = 0.0
pclose := is_newbar(pp_res) ? close[1] : pclose[1]


vPP = (phigh + plow + pclose) / 3

//pivot points


//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


strategy.entry(id="BB_VWAP_PP",long=true, qty=qty1, when=   crossover(myVwap,basis)  and close>=vPP  )

bgcolor(strategy.position_size>=1?color.blue:na, transp=75)
barcolor(strategy.position_size>=1?color.green:na)

stopLossVal=  strategy.position_size>=1 ?  close * (1 - (stopLoss*0.01) ) : 0.00

//partial exit
//strategy.close(id="BBofVwap", qty=strategy.position_size/3, when=crossunder(myVwap,upperBand) and strategy.position_size>=1 )  //and close>strategy.position_avg_price)



//exit on lowerband or stoploss 
strategy.close(id="BB_VWAP_PP", comment="P" , qty=strategy.position_size/3, when= crossunder(myVwap,upperBand) and strategy.position_size>=1 and close>strategy.position_avg_price)  //
strategy.close(id="BB_VWAP_PP", comment="Exit All", when=crossunder(myVwap,lowerBand) and strategy.position_size>=1 )
//strategy.close(id="BBofVwapWithFibPivot", comment="Exit All", when=crossunder(close,vPP) and strategy.position_size>=1 )

strategy.close(id="BB_VWAP_PP", comment="Stop Loss Exit", when=crossunder(close,stopLossVal) and strategy.position_size>=1 )