Strategie zur Rückkehrverfolgung der CCTBBO

Schriftsteller:ChaoZhang, Datum: 2023-11-23 13:42:03
Tags:

img

Übersicht

Diese Strategie basiert auf dem von Steve Karnish entwickelten CCT Bollinger Band Oscillator (CCTBO).

Strategie Logik

Der Oszillator schwankt zwischen -200 und 200, wobei 0 den Durchschnittspreis minus 2 Standardabweichungen und 100 den Durchschnittspreis plus 2 Standardabweichungen darstellt. Handelssignale werden erzeugt, wenn der Oszillator seine EMA-Linie überschreitet oder darunter fällt. Insbesondere, wenn der Oszillator seine EMA-Linie überschreitet und der Abstand zwischen ihnen größer ist als der festgelegte Marginwert, wird eine Long-Position eröffnet. Wenn der Oszillator unter seine EMA-Linie fällt und die Entfernung kleiner als der negative festgelegte Wert ist, wird eine Short-Position eröffnet. Die Positionsmargingröße wird nach dem festgelegten Prozentsatz berechnet. Darüber hinaus verwendet die Strategie einen Trailing-Stop-Loss basierend auf der prozentualen Preisänderung oder der Anzahl der Ticks, um Positionen zu verlassen.

Analyse der Vorteile

  • Verwendet den einflussreichen CCT Bollinger Band Oscillator-Indikator, um falsche Signale zu reduzieren
  • Die Kombination von EMA-Linie und Margin-Bedingung filtert Signale, um übermäßige ungültige Trades während Schwankungen zu vermeiden
  • Anwendung des Trailing Stop Loss Mechanismus, um Verluste rechtzeitig zu stoppen, wenn die Verluste zu groß sind

Risikoanalyse

  • Der CCT-Oszillator selbst hat eine gewisse Verzögerung und verpasst somit den optimalen Zeitpunkt für Preisumkehrungen
  • Übermäßiger Marginwert und zu kurze EMA-Perioden erhöhen die Handelshäufigkeit und das Risiko
  • Zu locker eingestellte Trailing Stop Loss erhöht das Verlustrisiko

Risikomanagement:

  • Anpassung der EMA-Linienperiode, Verwendung einer längeren Periode zum Filtern
  • angemessene Anpassung des Margenwerts an die Risiken und Renditen
  • Verringerung des Positionsprozentsatzes zur Kontrolle einzelner Verluste
  • Verringern Sie den Rückhaltverlustbereich für schnelleres Anhalten

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Ersetzen Sie mit anderen Volatilitätsindikatoren wie Bollinger-Bändern, Keltner-Kanälen usw., um Ein- und Ausstiege zu bestimmen
  2. Hinzufügen anderer Filterindikatoren wie MACD, RSI, um die Signalzuverlässigkeit zu gewährleisten
  3. Verwenden Sie Machine-Learning-Algorithmen zur automatischen Optimierung von Parametern wie EMA-Periode, Margin-Werte usw.
  4. Hinzufügen von Positionsgrößerung Mechanismen wie feste Bruchteil, Martingale, um Handelsrisiko zu kontrollieren
  5. Optimierung von Trailing Stop Loss-Mechanismen unter Verwendung von Volatilitäts- oder ATR-Stops

Zusammenfassung

Zusammenfassend ist dies eine quantitative Handelsstrategie zur Identifizierung von Preisumkehrungen mithilfe des CCT-Bollinger-Band-Indikators. Sie hat gewisse Vorteile, aber auch Verbesserungsmöglichkeiten. Durch die Optimierung von Parametern, das Hinzufügen von Filtern, die Verwendung von Feature Engineering, die Einführung von maschinellem Lernen usw. können die Stabilität und Rentabilität dieser Strategie weiter verbessert werden.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 11:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// This strategy is based on the CCT Bollinger Band Oscillator (CCTBO) 
// developed by Steve Karnish of Cedar Creek Trading and coded by LazyBear.
// Indicator is available here https://www.tradingview.com/v/iA4XGCJW/

strategy("Strategy CCTBBO v2 | Fadior", shorttitle="Strategy CCTBBO v2", pyramiding=0, precision=2, calc_on_order_fills=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100, overlay=false)

length_stddev=input(title="Stddev loopback period",defval=20)
length_ema=input(title="EMA period", defval=2)
margin=input(title="Margin", defval=0, type=float, step=0.1)
price = input(title="Source", defval=high)
digits= input(title="Number of digits",defval=2,step=1,minval=2,maxval=6)
offset = input(title="Trailing offset (0.01 = 1%) :", defval=0.013, type=float, step=0.01)
pips= input(title="Offset in ticks ?",defval=false,type=bool)

src=request.security(syminfo.tickerid, "1440", price)

cctbbo=100 * ( src + 2*stdev( src, length_stddev) - sma( src, length_stddev ) ) / ( 4 * stdev( src, length_stddev ) )

ul=hline(150, color=gray, editable=true)
ll=hline(-50, color=gray)
hline(50, color=gray)
fill(ul,ll, color=green, transp=90)
plot(style=line, series=cctbbo, color=blue, linewidth=2)
plot(ema(cctbbo, length_ema), color=red)

d = digits == 2 ? 100 : digits == 3 ? 1000 : digits == 4 ? 10000 : digits == 5 ? 100000 : digits == 6 ? 1000000 : na

TS = 1
TO = pips ? offset : close*offset*d
CQ = 100
TSP = TS
TOP = (TO > 0) ? TO : na

longCondition = crossover(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) > margin
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Close Long", "Long", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)


shortCondition = crossunder(cctbbo, ema(cctbbo, length_ema)) and cctbbo - ema(cctbbo, length_ema) < -margin
if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Close Short", "Short", qty_percent=CQ, trail_points=TSP, trail_offset=TOP)
    
    

Mehr