Doppelspurige Bullen-/Bear-Strategie mit gleitendem Durchschnitt


Erstellungsdatum: 2023-11-06 16:25:01 zuletzt geändert: 2023-11-06 16:25:01
Kopie: 1 Klicks: 646
1
konzentrieren Sie sich auf
1617
Anhänger

Doppelspurige Bullen-/Bear-Strategie mit gleitendem Durchschnitt

Überblick

Die Strategie verwendet die Bruch- und Moving-Average als primären technischen Indikator, kombiniert mit dem Bollinger-Band-Doppelrad, um eine Breaker-Strategie zur Identifizierung von Markttrends zu realisieren. Blick nach unten, wenn der Preis den Bollinger-Band überschreitet, und Blick nach unten, wenn der Preis den Bollinger-Band überschreitet.

Strategieprinzip

  1. Berechnen Sie den Schrottbewegungsdurchschnitt (CBMA): Der EMA-Schleifschrottbewegungsdurchschnitt wird verwendet, um die Preisentwicklung effektiv zu verfolgen.

  2. Einstellung der Brin-Band-Parametern: Der Schrott-Wegmittelwert wird als mittlere Bahn gewählt, die oberen und unteren Bahnen verwenden die Standarddifferenz-Stomach-Multiple-Einstellung, die je nach Markt angepasst werden kann.

  3. Breakout-Trading: Bei einem Breakout-Trading ist der Preis hoch, wenn der Kurs auf der Oberfläche liegt, und bei einem Breakout-Trading ist der Preis unter der Oberfläche, wenn der Kurs unter der Oberfläche liegt.

  4. Die Transaktionen werden nur in eine Richtung abgewickelt.

  5. Die Anzahl der Transaktionen kann je nach Kapital angepasst werden.

Analyse der Stärken

  1. Der bewegliche Durchschnitt von Rubble ist glatt und kann die Preise effektiv verfolgen.

  2. Die EMA-Algorithmen optimieren die Echtzeit der Moving Averages.

  3. Brin, der sich auf und ab von der Bahn befand, gab ein klares Signal für den Durchbruch.

  4. Der Trend folgt dem Trend und vermeidet Whipsaw.

  5. Die Festbetragshöhe kann einmalige Verluste kontrollieren.

Risikoanalyse

  1. Die Einstellungen für die Brin-Band-Parameter müssen optimiert werden, und es gibt Probleme mit zu großen oder zu kleinen Parametern.

  2. Durchbruchsignale können zu falschen Durchbrüchen führen.

  3. Die Einrichtung von Stop-Loss-Systemen ist notwendig, um die Verluste zu kontrollieren.

  4. Die Position kann nicht an die Marktlage angepasst werden.

  5. Es ist nicht möglich, mehr zu verdienen, wenn man nur einseitig handelt.

Optimierungsrichtung

  1. Dynamische Optimierung der Brin-Band-Parameter, um die Brin-Band-Parameter besser auf die Marktlage abzustimmen.

  2. Es werden weitere Indikatoren hinzugefügt, um False Breaks zu vermeiden.

  3. Ein Tracking-Stop-Loss wird eingesetzt, um Gewinne zu sichern.

  4. Es ist eine sehr gute Gelegenheit, sich mit anderen zu beschäftigen, um sich mit anderen zu beschäftigen.

  5. Eintritt in das Lagerverwaltungssystem.

Zusammenfassen

Die Strategie ist einfach und einfach zu bedienen, mit festen Transaktionsvolumen kann das Risiko zu kontrollieren, hat einen gewissen realen Wert. Aber es gibt auch einige Probleme, wie falsche Durchbruch und Parameter-Optimierung, die durch die Aufnahme von mehr technischen Indikatoren zu optimieren, während die Risiken zu kontrollieren, weiter zu verbessern, die die Wirksamkeit der Strategie zu verbessern.

Strategiequellcode
/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="CBMA Bollinger Bands Strategy directed [ChuckBanger]", shorttitle="CBMA BB CB", 
   overlay=true )


length = input(title="Length", type=input.integer, defval=12, minval=1)
regular = input(title="Regular BB Or CBMA?", type=input.bool, defval=false)
src = input(title="Source", type=input.source, defval=close)
mult = input(title="Multipler", type=input.float, defval=2.3, minval=.001, maxval=50, step=.1)
emaLen = input(title="EMA Length", type=input.integer, defval=11, minval=1)
emaGL = input(title="EMA Gain Limit", type=input.integer, defval=50, minval=1)
highlight = input(title="Highlight On/Off", type=input.bool, defval=true)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

//strategy.risk.max_drawdown(50, strategy.percent_of_equity)

calc_hma(src, length) =>
    hullma = wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
    hullma

calc_cbma(price, length, emaLength, emaGainLimit) =>
    alpha = 2 / (emaLength + 1)
    ema = ema(price, emaLength)
    int leastError = 1000000
    
    float ec = 0
    float bestGain = 0
    
    for i = emaGainLimit to emaGainLimit
        gain = i / 10
        ec := alpha * ( ema + gain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
        error = price - ec
        if (abs(error) < leastError)
            leastError = abs(error)
            bestGain = gain
    
    ec := alpha * ( ema + bestGain * (price - nz(ec[1])) ) + (1 - alpha) * nz(ec[1])
    hull = calc_hma(price, length)
    
    cbma = (ec + hull) / 2
    cbma

cbma = calc_cbma(src, length, emaLen, emaGL)
basis = regular ? sma(src, length) : cbma
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
cbmaColor = fixnan(highlight and not regular ? cbma > high ? color.purple : cbma < low ? color.aqua : na : color.red)
plot(basis, color=cbmaColor)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

if (crossover(src, lower))
    strategy.entry("CBMA_BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="CBMA_BBandLE")
else
    strategy.cancel(id="CBMA_BBandLE")

if (crossunder(src, upper))
    strategy.entry("CBMA_BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="CBMA_BBandSE")
else
    strategy.cancel(id="CBMA_BBandSE")