Noros Ausbruchsstrategie v1.0

Schriftsteller:ChaoZhang, Datum: 21.09.2023
Tags:

Übersicht

Diese Strategie handelt auf der Grundlage von Preisschwankungen über die jüngsten Extreme hinaus. Sie berechnet den höchsten Höchststand und das niedrigste Tief über einen Zeitraum und erzeugt Signale, wenn der Preis diese Niveaus durchbricht.

Wie es funktioniert

  1. Berechnen Sie höchste Höchst- und niedrigste Höchst-Dnex über N Perioden.

  2. Gehen Sie lang, wenn der Preis oberhalb des Höchststandes bricht.

  3. Gehen Sie kurz, wenn der Preis unter Dnex fällt.

  4. Nur für lange, nur für kurze oder beide Richtungen konfigurierbar.

  5. Konfigurierbare Kapitalverwendungsrate.

  6. Konfigurierbarer Handelszeitbereich.

Vorteile

  • Erfasst Breakout-Signale, gut für den Trendhandel
  • Einfache und intuitive Regeln, einfach umzusetzen
  • Richtungskonfiguration passt sich an verschiedene Märkte an
  • Kann den Handelszeitrahmen einschränken
  • Steuerung der Kapitalverwertung

Risiken

  • Nicht in der Lage, falsche Ausbrüche effektiv zu filtern
  • Zwei-Wege-Handel erhöht Kosten
  • Eine hohe Kapitalnutzung erhöht das Risiko

Optimierungsrichtlinien

  • Hinzufügen von Validierung, um falsche Ausbrüche zu vermeiden
  • Optimieren des N-Werts für eine optimale Leistung
  • Zusätzliche Filter für Bildschirmsignale
  • Verschiedene Kapitalnutzungsraten testen
  • Höchstzahl der Geschäfte pro Tag

Schlussfolgerung

Die Strategie folgt Trends mit Hilfe von Preis-Breakout-Signalen. Die Verbesserung der Breakout-Gültigkeit und der Einstellungsparameter kann die Performance verbessern.


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

//Noro
//2018

//@version=2
strategy(title = "Noro's Brakeout Strategy v1.0", shorttitle = "Brakeout str 1.0", 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")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(4, defval = 4, minval = 1, maxval = 1000, title = "Length")
showlines = input(true, defval = true, title = "Show Lines?")
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")

//Extremums
upex = highest(high, len)
dnex = lowest(low, len)
col = showlines ? blue : na
plot(upex, color = col, linewidth = 2)
plot(dnex, color = col, linewidth = 2)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[len]))
    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)), stop = upex + syminfo.mintick)
    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)), stop = dnex - syminfo.mintick)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Mehr