Momentum-Breakout-Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-09-18 21:28:22
Tags:

Übersicht

Die Strategie verwendet die Dynamik-Indikator Breaking-Band, um zu entscheiden, ob der Preis den Breaking-Band durchbricht und ein Kauf- und Verkaufssignal sendet.

Grundsätze

Die Strategie basiert hauptsächlich auf der Tendenzbestimmung der Brennbänder. Die Brennbänder bestehen aus einer Bandbreite, die aus einem gleitenden Durchschnitt und seiner Standarddifferenz besteht. Die Brennbänder sind mitten an den n-tägigen gleitenden Durchschnitten, die oberen sind +2 Standarddifferenzen und die unteren sind +2 Standarddifferenzen.

Insbesondere berechnet man zunächst den Höchstpreis und den Mindestpreis für n Tage und berechnet den Mittelkurs (höchstpreis + Mindestpreis) /2); dann berechnet man den Schlusskurs und den gewichteten Bewegungsdurchschnitt der Entfernung zum Mittelkurs, der die Mittellinie des Breinstroms bildet, wobei die mittlere Linie auf der Unterseite ein doppeltes Standarddifferenz hinzufügt, das die Unterseite bildet.

Wenn der Kurs den Kurs durchbricht, zeigt er einen Aufwärtstrend an; wenn er den Kurs durchbricht, zeigt er einen Abwärtstrend an.

Darüber hinaus führt die Strategie einen Umkehr-Open-Halt-Mechanismus ein. Wenn der Preis den Brechen des Brechen-Bandes überschreitet, wird eine Umkehr-Markt-Operation durchgeführt, wenn der MACD sinkt.

Vorteile

  1. Mit dem Blinkband kann man die Richtung der Trends bestimmen.

  2. Ein umgekehrter Handel kann einen negativen Gewinn bringen.

  3. Sie können Parameter wie Brainstorming-Zyklen, Standarddifferenzmengen und andere anpassen, um sich an verschiedene Zyklen anzupassen.

  4. Sie schließen die umgekehrten Positionen und reduzieren das Risiko.

Risiken und Gegenmaßnahmen

  1. Ein Brin-Band wird häufig für hochflüchtige Aktien verwendet und ist möglicherweise nicht für eine Vielfalt wie langzyklische Ressourcen oder Indizes geeignet. Es kann die Wirkung verschiedener Zyklusparameter testen.

  2. Durchbruchsignale können zu falschen Durchbrüchen führen. Sie können in Kombination mit anderen Faktoren filtert werden.

  3. Eine Umkehrposition kann die Verluste weiter vergrößern.

  4. Der Rückzug kann größer sein.

Optimierung

  1. Es ist möglich, Trends Filter einzubeziehen, um unsichere Marktbewegungen zu vermeiden.

  2. Man kann die Standarddifferenzmengen der Blinkenbänder testen, um nach einem passenderen Parameter zu suchen.

  3. Ein Stop-Loss-Strategie kann eingeführt werden, um einen Einzelschaden zu kontrollieren.

  4. Die Logik für die Eröffnung und Aufstockung von Positionen kann optimiert werden, um die Handelssignale klarer zu machen.

Zusammenfassung

Diese Strategie handelt mit einem Brings-Basis-Indikator, um den Preistrend zu bestimmen. Eine grundlegende Trendverfolgungsstrategie kann mit einfachen Parameter-Einstellungen realisiert werden. Es besteht jedoch ein falsches Durchbruchrisiko, das mit anderen Indikatoren filtert werden muss.

Übersicht

Diese Strategie verwendet den Bollinger-Bands-Momentumsindikator für den Breakout-Handel und beurteilt hauptsächlich, ob der Preis die oberen oder unteren Bollinger-Bänder für Handelssignale durchbricht.

Grundsätze

Die Strategie basiert hauptsächlich auf dem Bollinger Bands-Indikator, um die Trendrichtung zu bestimmen. Bollinger Bands bestehen aus einem mittleren Band basierend auf einem gleitenden Durchschnitt und oberen/unteren Bands, die durch Standardabweichungen definiert werden. Das mittlere Band ist ein n-Perioden gleitender Durchschnitt, das obere Band ist mittleres Band + 2 Standardabweichungen und das untere Band ist mittleres Band - 2 Standardabweichungen. Wenn der Preis sich dem oberen Band nähert, zeigt er überkaufte Bedingungen an, und wenn er sich dem unteren Band nähert, signalisiert er überverkaufte Bedingungen.

Insbesondere berechnet die Strategie zunächst das höchste Hoch und das niedrigste Tief in den letzten n Perioden und den mittleren Preis ((höchste Hoch + niedrigste Tief) /2). Sie berechnet dann den Abstand zwischen Schlusskurs und Mittelkurs, verwendet den exponentiellen gleitenden Durchschnitt der Entfernung, um das mittlere Band zu bilden, und addiert/subtrahiert 2 Mal die Standardabweichung über und unter, um die oberen und unteren Bänder zu bilden.

Wenn der Schlusskurs das obere Band durchbricht, signalisiert er einen Aufwärtstrend; wenn er das untere Band durchbricht, signalisiert er einen Abwärtstrend.

Darüber hinaus beinhaltet die Strategie einen Gegentrendmechanismus, bei dem der Kurs die obere Bandbreite durchbricht, der MACD aber fällt.

Vorteile

  1. Die Verwendung von Bollinger Bands zur Bestimmung der Trendrichtung bietet eine gewisse Trendverfolgungsfähigkeit.

  2. Gegen-Trend-Design ermöglicht es, von Umkehrungen zu profitieren.

  3. Anpassbare Parameter wie Perioden- und Standardabweichungsmultiplikatoren machen es an unterschiedliche Handelshorizonte anpassungsfähig.

  4. Deaktivieren Sie den Gegentrendhandel, um das Risiko zu reduzieren.

Risiken und Minderungsmaßnahmen

  1. Bollinger-Bänder funktionieren am besten für Aktien mit hoher Volatilität, sind jedoch möglicherweise nicht für stabile Rohstoffe oder Indizes geeignet.

  2. Ausbruchsignale können falsche Ausbrüche haben, Filter mit anderen Indikatoren.

  3. Gegen-Trend-Handel kann Verluste weiter erhöhen.

  4. Die Abzüge können erheblich sein und die Positionsgröße anpassen.

Möglichkeiten zur Verbesserung

  1. Erwägen Sie, einen Trendfilter hinzuzufügen, um in nicht-direktiven Märkten Whipsaw zu vermeiden.

  2. Versuche verschiedene Standardabweichungsmultiplen, um optimale Parameter zu finden.

  3. Einbeziehung von Stop Loss zur Kontrolle von Einzelverlusten.

  4. Optimieren Sie die Logik für den Einstieg und die Ergänzung für klarere Handelssignale.

Zusammenfassung

Die Strategie verwendet Bollinger Bands als primären Indikator und handelt basierend auf Trend-Breakouts. Mit einfachen Parametern bietet sie grundlegende Trend-Folge-Fähigkeiten. Es gibt jedoch falsche Breakout-Risiken, die zusätzliche Filter erfordern. Parameter, Stop-Loss und Risikokontrolle können verbessert werden. Insgesamt dient sie als eine vernünftige Basisbreakout-Strategie.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bands Scalper Strategy v1.6", shorttitle = "Scalper str 1.6", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
bodylen = input(10, defval = 10, minval = 0, maxval = 50, title = "Body length")
trb = input(1, defval = 1, minval = 1, maxval = 5, title = "Trend bars")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
chd = close > hd
cld = close < ld
uptrend = trb == 1 and chd ? 1 : trb == 2 and chd and chd[1] ? 1 : trb == 3 and chd and chd[1] and chd[2] ? 1 : trb == 4 and chd and chd[1] and chd[2] and chd[3] ? 1 : trb == 5 and chd and chd[1] and chd[2] and chd[3] and chd[4] ? 1 : 0
dntrend = trb == 1 and cld ? 1 : trb == 2 and cld and cld[1] ? 1 : trb == 3 and cld and cld[1] and cld[2] ? 1 : trb == 4 and cld and cld[1] and cld[2] and cld[3] ? 1 : trb == 5 and cld and cld[1] and cld[2] and cld[3] and cld[4] ? 1 : 0
trend = dntrend == 1 and high < center ? -1 : uptrend == 1 and low > center ? 1 : trend[1]

//trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = ema(body, 30) / 10 * bodylen

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00)
    strategy.close_all()

Mehr