CBMA Bollinger Bands Breaker Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-06 16:25:01
Tags:

img

Übersicht

Diese Strategie verwendet CBMA als den wichtigsten technischen Indikator in Kombination mit Bollinger Bands, um Markttrends zu identifizieren und eine Breaker-Strategie umzusetzen.

Strategie Logik

  1. Berechnen Sie die CBMA: Verwenden Sie die adaptive EMA, um die CBMA zu glätten, die die Preisänderungen effektiv verfolgen kann.

  2. Bollinger-Band-Parameter festlegen: CBMA als mittleres Band verwenden und obere/untere Bands mithilfe eines Standardabweichungsmultiplikators festlegen, der je nach Markt angepasst werden kann.

  3. Breakout-Handel: Verkaufen, wenn der Preis über den oberen Bereich bricht, kaufen, wenn der Preis unter den unteren Bereich bricht, wobei die Trend-following-Breaker-Strategie verwendet wird.

  4. Verwenden Sie Stornierungsanordnungen, handeln Sie nur in eine Richtung.

  5. Festes Auftragsvolumen, das je nach Kapital angepasst werden kann.

Analyse der Vorteile

  1. Die CBMA hat eine gute Geschwindigkeit und kann den Preis effektiv verfolgen.

  2. Adaptive EMA optimiert die Reaktionsfähigkeit des gleitenden Durchschnitts.

  3. Die oberen und unteren Bande geben klare Richtungssignale, wenn ein Ausbruch eintritt.

  4. Das Trendfolgende Modell vermeidet Whipsaw-Trades.

  5. Die festgelegte Auftragsgröße kontrolliert das Einzelhandelsrisiko.

Risikoanalyse

  1. Bollinger Bands Parameter müssen optimiert werden, zu breit oder zu eng kann Probleme verursachen.

  2. Ausbruchsignale können falsche Ausbrüche haben.

  3. Stop-Loss, um den Verlust zu kontrollieren.

  4. Eine festgelegte Auftragsgröße kann die Position nicht anhand des Marktes anpassen.

  5. Handel nur in eine Richtung, kann nicht mehr profitieren.

Optimierungsrichtlinien

  1. Dynamische Optimierung der Bollinger Bands-Parameter, um besser auf den Markt anzupassen.

  2. Fügen Sie mehr Indikatoren zur Filtration hinzu, um falsche Ausbrüche zu vermeiden.

  3. Hinzufügen Sie einen Stop-Loss, um Gewinne zu erzielen.

  4. Hedge-Handel, sowohl Long als auch Short für größere Gewinne.

  5. Fügen Sie ein Positionsmesssystem hinzu.

Schlussfolgerung

Diese Strategie ist ein Breaker Trend Following System, das adaptive gleitende Durchschnittstechnologie kombiniert mit Bollinger Bands für klare Breakout-Signale verwendet. Es hat eine einfache Logik und fixierte Auftragsgröße kontrolliert das Risiko und hat einen gewissen praktischen Wert. Aber Probleme wie falsche Breakouts und Parameteroptimierung bleiben bestehen, die mehr Indikatoren benötigen, um die reale Handelsleistung zu verbessern und zu verbessern, während das Risiko kontrolliert wird. Insgesamt ist es ein anständiges Starter-Breakout-System mit viel Verbesserungspotential.


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


Mehr