BB21_SMA200 Trend nach der Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-16 11:04:42
Tags:

img


Übersicht

Diese Strategie kombiniert Bollinger Bands und Moving Average, um ein Trend nach dem Handelssystem zu entwerfen. Sie geht lang, wenn der Preis durch das obere Band der Bollinger Bands bricht und das untere Band über dem SMA200 liegt, schließt eine teilweise Position, wenn der Preis durch das untere Band bricht, und tritt alle aus, wenn der Preis unter dem SMA200 überschreitet. Die Strategie folgt dem Trend und schneidet Verluste in der Zeit ab, wenn sich der Trend ändert.

Strategie Logik

  1. Berechnen Sie SMA200 als exponentiellen gleitenden Durchschnitt, um den wichtigsten Trend zu bestimmen
  2. Berechnen Sie Bollinger-Bänder, einschließlich des oberen, mittleren und unteren Bandes, und füllen Sie die Farbe als Gewinnbereich aus
  3. Wenn sowohl der obere als auch der untere Bereich über dem SMA200 liegen, zeigt dies einen Aufwärtstrend an.
  4. Wenn der Preis durch das mittlere Band der Bollinger Bands nach oben bricht, gehen Sie lang
  5. Wenn der Preis durch das untere Band nach unten bricht, schließt man die partielle Position
  6. Wenn der Kurs unter den SMA200 fällt, zeigt dies eine Umkehr des Haupttrends an, schließen Sie alle Positionen.
  7. Stellen Sie den Stop-Loss-Punkt ein, um einen übermäßigen Verlust zu vermeiden
  8. Berechnung der Handelsgröße auf der Grundlage des Kontokapitals und des akzeptablen Risikos

Die Prämisse dieser Strategie zur Identifizierung eines Trends besteht darin, dass die Bollinger Bands vollständig über der SMA200 liegen und nur lang gehen, wenn sich ein klarer Aufwärtstrend zeigt.

Analyse der Vorteile

  1. Verwenden Sie Bollinger-Bänder anstelle eines einzelnen Indikators, um einen klaren Trend zu erkennen
  2. SMA200 bestimmt die wichtigste Trendrichtung, vermeidet unnötigen Handel auf dem Bereichsmarkt
  3. Teilweiser Stop-Loss nach Trendläufen
  4. Zeitnahe Stop-Loss-Aktionen an wichtigen Punkten zur Verringerung von Verlusten
  5. Berechnung der Handelsgröße führt Risikomanagement ein, um übermäßige Verluste bei einem einzigen Handel zu vermeiden

Risikoanalyse

  1. Ausbrechungssignale aus Bollinger-Bändern können relativ hohe falsche Signale aufweisen.
  2. Teilstop-Loss-Punkte müssen optimiert werden, um vorzeitigen Stop-Loss zu verhindern
  3. Wenn der Stop-Loss-Punkt zu eng ist, kann der Stop-Loss zu häufig ausgelöst werden
  4. Die SMA-Periode muss getestet und optimiert werden, um Verzögerung und Empfindlichkeit auszugleichen
  5. Die Methode zur Berechnung der Handelsgröße muss möglicherweise optimiert werden, um eine übermäßige Größe bei einzelnen Geschäften zu vermeiden

Diese Risiken könnten durch sorgfältiges Testen der Bollinger-Bands-Parameter, die Optimierung der partiellen Stop-Loss-Strategie, die Anpassung der SMA-Periode und die Einführung wissenschaftlicherer Risikomanagementmethoden reduziert werden.

Optimierungsrichtlinien

  1. Test und Optimierung der Bollinger Bands-Parameter zur Senkung falscher Signale
  2. Untersuchen Sie, wie Sie die richtigen partiellen Stop-Loss-Punkte festlegen
  3. Optimale SMA-Periode testen
  4. Überlegen Sie adaptive Stopps anstelle von festen Stop-Loss-Punkten
  5. Studie unter Verwendung einer volatilitätsbasierten Positionsgröße für eine wissenschaftlichere Berechnung der Handelsgröße
  6. Backtest mit Handelskosten zur Simulation des realen Handels
  7. Erwägen Sie eine Kombination mit anderen Indikatoren, um die Strategie zu verbessern

Schlussfolgerung

Diese Strategie integriert Bollinger Bands und SMA, um ein relativ vollständiges Trendfolgensystem zu entwerfen. Sie ist zuverlässig bei der Identifizierung der Existenz des Trends und verfügt über eine starke Trendverfolgungsfähigkeit. Durch die kontinuierliche Optimierung der Stop-Loss-Strategie, die Verringerung von Signalfehlern und die Einführung wissenschaftlicher Risikomanagementtechniken kann diese Strategie zu einem lohnenden System für den Live-Handel werden. Sie bietet einen Ansatz, um mehrere Indikatoren für quantitative Handelsstrategieentwicklung zu kombinieren.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
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/
// © mohanee

//@version=4
strategy(title="BB9_MA200_Strategy", overlay=true, pyramiding=1,     default_qty_type=strategy.cash,  initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 


var stopLossVal=0.00

//variables BEGIN
smaLength=input(200,title="MA Length")
bbLength=input(21,title="BB Length")  

bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")


stopLoss = input(title="Stop Loss%", defval=5, minval=1)

riskCapital = input(title="Risk % of capital  == Based on this trade size is claculated    numberOfShares = (AvailableCapital*risk/100) / stopLossPoints", defval=10, minval=1)


sma200=ema(close,smaLength)

plot(sma200, title="SMA 200", color=color.orange)


//bollinger calculation
basis = sma(bbsrc, bbLength)
dev = mult * stdev(bbsrc, bbLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

//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)


strategy.initial_capital = 50000

//Entry---

strategy.entry(id="LE", comment="LE capital="+tostring(strategy.initial_capital + strategy.netprofit ,"######.##"), qty=( (strategy.initial_capital + strategy.netprofit ) * riskCapital / 100)/(close*stopLoss/100) , long=true,  when=strategy.position_size<1 and upperBand>sma200 and lowerBand > sma200 and crossover(close, basis) )     //  // aroonOsc<0  //(strategy.initial_capital * 0.10)/close


barcolor(color=strategy.position_size>=1? color.blue: na)

//partial Exit
tpVal=strategy.position_size>1 ? strategy.position_avg_price * (1+(stopLoss/100) ) : 0.00
strategy.close(id="LE", comment="Partial points="+tostring(close - strategy.position_avg_price, "####.##"),  qty_percent=30 , when=abs(strategy.position_size)>=1 and close>tpVal and crossunder(lowerBand, sma200)   )   //close<ema55 and rsi5Val<20 //ema34<ema55


//close All on stop loss
//stoploss
stopLossVal:=   strategy.position_size>1 ? strategy.position_avg_price * (1-(stopLoss/100) ) : 0.00

strategy.close_all( comment="SL Exit points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and close < stopLossVal  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89//

strategy.close_all( comment="BB9 X SMA200 points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and  crossunder(basis, sma200)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89
    

Mehr