Einziger gleitender Durchschnitt Crossover Bollinger Bands Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-22
Tags:

img

Übersicht

Diese Strategie basiert auf einem einzigen gleitenden Durchschnitt und einem Bollinger Bands Indikator. Es erzeugt Kauf- und Verkaufssignale, wenn der Preis durch das obere oder untere Band der Bollinger Bands bricht. Außerdem beinhaltet es die Richtung des gleitenden Durchschnitts, um den Trend zu bestimmen.

Strategie Logik

Die Strategie verwendet hauptsächlich folgende Indikatoren:

  1. Beweglicher Durchschnitt (SMA): Einfacher gleitender Durchschnitt des CLOSE-Preises, der die Kursentwicklung darstellt.
  2. Oberer Bollinger Band: stellt das Widerstandsniveau dar, ein Ausbruch zeigt eine starke Dynamik an.
  3. Unterer Bollinger-Band: stellt das Unterstützungsniveau dar, die Aufschlüsselung zeigt eine mögliche Trendumkehr an.

Die spezifischen Handelssignale sind:

  1. Kaufsignal: Wenn der Schlusskurs durch das obere Band bricht und der MA steigt.
  2. Verkaufssignal: Wenn der Schlusskurs durch das untere Band bricht und der MA fällt.

Durch die Kombination von Trend und Ausbruch wird das Handelssignal zuverlässiger und verhindert einen falschen Ausbruch.

Vorteile

  1. Einfache und klare Regeln, leicht verständlich und umsetzbar.
  2. MA beurteilt die allgemeine Tendenz zur Vermeidung von Short-Bull- und Long-Bear-Markt.
  3. Bollinger-Bänder Ober- und Unterband lokalisiert lokale Ausbruchspunkte genau.
  4. Relativ geringe Abzüge entsprechen den Risikopräferenzen der meisten.

Risiken

  1. Ein einzelner Indikator neigt dazu, falsche Signale zu erzeugen, kann durch Parameter-Tuning verbessert werden.
  2. Kann nicht mit großen Marktschwankungen umgehen, kann Stop-Loss entsprechend anpassen.
  3. Da sie nicht mehr von Mega-Trends profitieren können, können sie eine größere Positionsgröße in Betracht ziehen.

Verbesserungen

  1. Optimierung der Zulassungsfristen für mehr Produkte.
  2. Hinzufügen anderer Filter wie MACD, um falsche Signale zu reduzieren.
  3. Dynamische Einstellung des Stop-Loss, um den maximalen Drawdown zu begrenzen.
  4. Einführung eines Geldmanagements zur Stabilisierung der PNL-Leistung.

Schlussfolgerung

Im Allgemeinen ist dies eine einfache, aber praktische Strategie, die für die meisten Menschen geeignet ist. Mit einigen Anpassungen und Optimierungen kann sie robuster und anpassungsfähiger an mehr Marktsituationen sein.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="single sma cross", shorttitle="single sma cross",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,overlay=true,currency="USD")
s=input(title="s",defval=90)
p=input(title="p",type=float,defval=.9,step=.1)

sa=sma(close,s)
plot(sa,color=red,linewidth=3)
band=stdev(close,s)*p
plot(band+sa,color=lime,title="")
plot(-band+sa,color=lime,title="")

// ===Strategy Orders============================================= ========
inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

longCondition = crossover(close,sa+band) and rising(sa,5)
shortCondition = crossunder(close,sa-band) and falling(sa,5)
crossmid = cross(close,sa)


strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = shortCondition)
strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = longCondition)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=crossmid)

Mehr