Diese Strategie verwendet die Länge des Kerzenkörpers, um die lange und kurze Richtung zu bestimmen. Sie berechnet die durchschnittliche Körperlänge der letzten 30 Kerzen. Wenn die bullische Kerzenkörperlänge größer als der Durchschnitt ist, geht sie lang. Wenn die bärische Kerzenkörperlänge größer als der Durchschnitt ist, geht sie kurz.
Diese Strategie berechnet zunächst die Körperlänge des Leuchterkörpers und die durchschnittliche Körperlänge der letzten 30 Leuchterkörper.
Wenn der heutige Kerzenhalter bärisch ist (Bar==-1) und die Körperlänge größer als die durchschnittliche Körperlänge ist, eröffnet er eine Longposition (up1).
Wenn der heutige Candlestick bullisch ist (Bar==1) und die Körperlänge größer ist als die durchschnittliche Körperlänge, eröffnet er eine Shortposition (dn1).
Wenn die heutige Candlestick-Marke nach Long-Eröffnung bullisch ist (Bar==1) und die aktuelle Position profitabel ist, schließt sie die Long-Position.
Wenn die heutige Candlestick-Marke nach dem Short-Aufschluss bearish ist (Bar==-1) und die aktuelle Position profitabel ist, wird die Short-Position geschlossen.
Die Strategie verwendet einfach und effektiv die Länge des Leibs des Leuchters, um den Markttrend zu bestimmen. Je länger der Leib, desto stärker der Trend.
Die Vorteile dieser Strategie:
Die Logik ist einfach und klar, leicht zu verstehen und umzusetzen.
Verwenden Sie die Körperlänge des Leuchters, um den Trend zu bestimmen, und vermeiden Sie Geräuschstörungen.
Die dynamische Durchschnittsberechnung ist an die Marktänderungen angepasst.
Setzen Sie eine rentable Ausstiegsbedingung, um die Rentabilität zu verbessern.
Konfigurierbare Parameter, die sich an verschiedene Marktumgebungen anpassen lassen.
Die Risiken dieser Strategie:
Ein langer Körper bedeutet nicht unbedingt einen starken Trend, es könnte eine normale Schwankung sein.
Eine falsche Zeitfenster für die durchschnittliche Körperlänge kann Handelsmöglichkeiten verpassen.
Schwarze Schwäne können Verluste verursachen.
Zu lange gehaltene Positionen können Verluste verstärken.
Lösungen:
Kombinieren Sie mit anderen Indikatoren, um den Trend zu bestimmen, vermeiden Sie falsche Trades.
Verschiedene Parameterwerte testen, die durchschnittliche Körperlänge berechnen.
Setzen Sie Stop-Loss auf Einzelverlust.
Optimieren Sie die Ein- und Ausstiegslogik, um zu lange nicht zu warten.
Die Strategie kann in folgenden Aspekten optimiert werden:
Kombinieren Sie MACD, RSI, um den Trend zu bestimmen, vermeiden Sie falsche Signale von normalen Schwankungen.
Verschiedene durchschnittliche Körperlänge-Zeitfensterparameter testen, um einen optimalen Parametersatz zu finden.
Ergänzen Sie die Positionsgrößenregelungslogik und reduzieren Sie die Positionsgröße bei Verlusten allmählich.
Setzen Sie das Ziel für einen Stop-Loss oder Gewinn, um den einzelnen Verlustprozentsatz zu kontrollieren.
Optimieren Sie die Einstiegs- und Ausstiegsbedingungen, um ineffektive Trades zu vermeiden.
Vermeiden Sie den Handel in bestimmten Perioden oder um wichtige Daten zu veröffentlichen, um Verluste durch Volatilität zu kontrollieren.
Die Strategie verfügt über eine klare und leicht verständliche Logik des Vergleichs des Kerzenkörpers mit seiner durchschnittlichen Länge für die Eintrittszeit. Großer Raum für die Optimierung aus mehreren Dimensionen, um es besser für verschiedene Marktumgebungen anzupassen. Insgesamt eine einfache und zuverlässige einführende Quant-Handelsstrategie, die für Anfänger geeignet ist, zu verwenden und zu lernen. Weiter kombinieren Sie mehr Indikatoren und optimieren Sie, um die Rentabilität und Robustheit zu verbessern.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's ColorBar Strategy v1.0", shorttitle = "ColorBar str v1.0", 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") usebody = input(true, defval = true, title = "Use body") 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") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Signals bar = close > open ? 1 : close < open ? - 1 : 0 body = abs(close - open) sbody = ema(body, 30) up1 = bar == -1 and (body > sbody or usebody == false) dn1 = bar == 1 and (body > sbody or usebody == false) plus = (close > strategy.position_avg_price and strategy.position_size > 0) or (close < strategy.position_avg_price and strategy.position_size < 0) exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and plus if up1 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00))) if dn1 strategy.entry("Short", strategy.short, needshort == 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) or exit strategy.close_all()