Noro's Preiskanalstrategie v1.1

Schriftsteller:ChaoZhang, Datum: 23.10.2023
Tags:

img

Übersicht

Die Noros Price Channel Strategy v1.1 ist eine Trendhandelsstrategie, die auf Preiskanälen und Kursrichtungsänderungen basiert. Diese Strategie kombiniert den Preiskanalindikator und den schnellen RSI-Indikator, um Preis-Breakout-Signale aus dem Kanal zu identifizieren, zusammen mit aufeinanderfolgenden roten/grünen Kerzenfarbenumkehrsignalen, um Long/Short-Positionen zu etablieren. Das Ziel dieser Strategie ist es, die Richtung von mittelfristigen bis langfristigen Trends zu erfassen und gleichzeitig Lärm von kurzfristigen Marktschwankungen zu vermeiden.

Strategie Logik

Die Strategie berechnet zunächst den Durchschnitt der höchsten und niedrigsten Preise über einen bestimmten Zeitraum, um einen mittleren Preiskanal zu konstruieren. Wenn der Preis von unten über den Kanal bricht, gilt es als langes Signal. Wenn der Preis von oben unter den Kanal bricht, gilt es als kurzes Signal.

Gleichzeitig beinhaltet die Strategie zwei Hilfsregeln: schneller RSI und Kerzenfarbe. Wenn der schnelle RSI unter 25% liegt, deutet dies auf einen Überverkaufsstatus hin und die Preise können sich erholen. Zusammen mit einem Ausbruch über dem Kanal erzeugt dies ein stärkeres Langsignal. Im Gegensatz dazu, wenn der schnelle RSI über 75% liegt, deutet er auf einen Überkaufstatus hin und die Preise können fallen. Zusammen mit einem Ausbruch unter dem Kanal erzeugt dies ein stärkeres Kurzsignal. Darüber hinaus verfolgt die Strategie die Veränderungen der Kerzenfarbe über die letzten zwei Kerzen. Zwei aufeinanderfolgende rote Kerzen verstärken das kurze Signal, während zwei aufeinanderfolgende grüne Kerzen das lange Signal verstärken.

Durch die Kombination dieser drei Signalindikatoren kann die Strategie mittelfristige und langfristige Trends effektiv identifizieren und entsprechend Positionen festlegen.

Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass mehrere Indikatoren zur Bestimmung der Trendrichtung und zur Vermeidung von Lärm durch kurzfristige Marktschwankungen verwendet werden.

  1. Der Preiskanal zeigt deutlich die Trendrichtung und -stärke an. Durchbrüche der Kanalbänder stellen eine neue Phase des Trends mit starken Signalen dar.

  2. Der schnelle RSI beurteilt überkaufte/überverkaufte Bedingungen, um zu vermeiden, dass Trends an Wendepunkten verfolgt werden.

  3. Die Validierung der Farbe der Kerze überprüft die Trendbeständigkeit weiter.

  4. Die Strategie wird nur bei zwei aufeinanderfolgenden, gleichfarbigen Kerzen eingesetzt, die den Kanal durchbrechen und falsche Signale von kurzfristigen Schwingungen vermeiden.

  5. Der einfache durchschnittliche Stop-Loss schließt Positionen, sobald sich die Farbe der Kerze ändert, wodurch Verluste effektiv minimiert werden.

Risiken

Für diese Strategie sind auch einige Risiken zu beachten:

  1. Bei falschen Einstellungen der Preiskanalparameter kann es zu zu breiten oder zu engen Kanälen kommen, zu fehlenden Trendwechselpunkten oder zu übermäßigen falschen Signalen kommen.

  2. Bei falschen Einstellungen der schnellen RSI-Parameter kann es nicht möglich sein, überkaufte/überverkaufte Konditionen genau zu identifizieren, wodurch Rückkehrmöglichkeiten verpasst werden.

  3. Der einfache Stop-Loss-Mechanismus kann bei unruhigen Trends zu empfindlich sein und zu einer übermäßigen Positionöffnung und -schließung führen.

  4. Sie kann die tatsächliche Fortführung des Trends nach dem Durchbruch des Preiskanals nicht vorhersagen, was zu verstärkten Verlusten führt.

  5. Sie kann sich nicht an schwarze Schwanen angepaßt werden, die plötzliche Auswirkungen auf den Markt haben und zu großen Verlusten führen.

Möglichkeiten zur Verbesserung

Zu den wichtigsten Möglichkeiten zur Verbesserung der Strategie gehören:

  1. Dynamische Anpassung der Preiskanalparameter, um sich besser an die Volatilität in verschiedenen Perioden und Märkten anzupassen.

  2. Einbeziehung von Volatilitätsmaßnahmen zur Anpassung der RSI-Parameter, die die Empfindlichkeit bei hoher Volatilität senken und bei geringer Volatilität erhöhen.

  3. Hinzufügen von Trailing Stop-Mechanismen mit Stop-Levels, die auf der Trendvolatilität basieren, um überempfindliche Stop-Outs zu vermeiden.

  4. Verbesserung der Identifizierung der Ausbruchstärke und der Abweichungen zwischen Bären und Bären, um falsche Ausbrüche zu vermeiden.

  5. Einbeziehung historischer Datenmodelle, um Trendwendepunkte mit hoher Wahrscheinlichkeit zu schätzen und die Eingabegenauigkeit zu verbessern.

  6. Optimierung der Positionsgrößenmodelle zur dynamischen Anpassung der Zuteilungen anhand der Risikobedingungen.

Schlussfolgerung

Insgesamt ist Noros Price Channel Strategy v1.1 eine einfache und praktische Trendfolgestrategie. Es enthält mehrere Indikatoren, um mittelfristige bis langfristige Trendrichtungen zu identifizieren, und legt relativ umsichtige Einstiegsregeln fest. In Bereichen wie Stop-Loss-Mechanismen und dynamischem Parameter-Tuning gibt es Raum für weitere Verbesserungen. Die allgemeine Logik ist jedoch einfach und klar, was es für den quantitativen Handel, insbesondere für Anfänger, einfach macht. Mit Parameter-Tuning und Mechanismusoptimierung kann es zu einem stabilen und zuverlässigen Handelssystem werden.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.1", shorttitle = "Price Channel str 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usecol = input(true, defval = true, title = "Use color strategy")
usersi = input(true, defval = true, title = "Use RSI strategy")
lev = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
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")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
trend = low > center ? 1 : high < center ? -1 : trend[1]
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Signals
body = abs(close - open)
abody = sma(body, 10)
up1 = rbars and close > center and usecol
dn1 = gbars and close < center and usecol
up2 = fastrsi < 25 and close > center and usersi
dn2 = fastrsi > 75 and close < center and usersi
exit = (((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2)
lot = strategy.equity / close * lev

//Trading
if up1 or up2
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Mehr