Multi-Zeitrahmen-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 29.12.2023 16:17:56
Tags:

img

Übersicht

Die Multi-Timeframe Breakout-Strategie erzeugt zuverlässigere Handelssignale, indem sie Preis-Breakout-Signale aus zwei verschiedenen Zeitrahmen kombiniert. Die Strategie berechnet Preis-Breakout-Signale gleichzeitig in kürzeren Zeitrahmen wie 1 Stunde, 2 Stunden, 3 Stunden usw. und längeren Zeitrahmen wie 4 Stunden, täglich usw. Sie erzeugt nur Kauf- oder Verkaufssignale, wenn die Signale aus den beiden Zeitrahmen zur Ausführung der entsprechenden Trades in die gleiche Richtung verlaufen.

Strategie Logik

Die Kernlogik dieser Strategie besteht darin, Preis-Breakout-Signale jeweils in zwei verschiedenen Zeitrahmen zu berechnen und sie dann zum Filtern abzugleichen. Insbesondere wird die Strategie überprüfen, ob die Preise bestimmte Niveaus in einem kürzeren Zeitrahmen (z. B. 1 Stunde) durchbrechen und auch, ob die Preise entsprechende Niveaus in einem längeren Zeitrahmen (z. B. 4 Stunden) durchbrechen. Nur wenn die Breakout-Signale aus den beiden Zeitrahmen in die gleiche Richtung sind, dh die Preise in beiden Zeitrahmen nach oben oder unten brechen, wird die Strategie Handelssignale generieren.

Die Bedingung für ein Kaufsignal ist, dass die Schlusskurse oder niedrigen Preise sowohl in den kürzeren als auch in den längeren Zeitrahmen über ihre Preisniveaus hinausgehen. Die Bedingung für ein Verkaufssignal ist, dass die Schlusskurse oder hohen Preise in beiden Zeitrahmen unter ihre Niveaus hinausgehen. Durch die Abgleichung von Signalen über Zeitrahmen hinweg kann die Strategie einige falsche Signale filtern und die Signale zuverlässiger machen.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die höhere Zuverlässigkeit ihrer Handelssignale. Durch die Anforderung von Preis-Breakouts auf Ebenen in zwei Zeitrahmen kann sie effektiv Lärm filtern und schlechte Trades vermeiden. Darüber hinaus können Breakout-Signale aus verschiedenen Zeitrahmen sich gegenseitig validieren, wodurch Handelsmöglichkeiten effizienter werden. Darüber hinaus bietet die Strategie eine gewisse Flexibilität, indem sie Benutzern die Möglichkeit bietet, Zeitrahmen zu wählen, um Datenquellen usw. entsprechend ihren eigenen Bedürfnissen zu kombinieren.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass während ruhiger Zeitgeister der Märkte die Preise in keinem der Zeitrahmen ausbrechen können. In diesem Fall erzeugt die Strategie keine Handelssignale und kann Chancen verpassen. Zudem gibt es eine gewisse Zeitverzögerung zwischen den beiden Zeitrahmen, die zu ineffizienten Signalen führen kann. Darüber hinaus beinhaltet die Strategie keine Stop-Loss-Logik und birgt größere Risiken.

Optimierungsrichtlinien

Diese Strategie kann in den folgenden Aspekten optimiert werden: 1) Hinzufügen von Stop-Loss-Logik zur Risikokontrolle; 2) Optimieren von Zeitrahmenkombinationen zur Verbesserung der Effizienz; 3) Hinzufügen von mehr Zeitrahmen für Kombinationen, um Handelssignale strenger zu machen; 4) Einbeziehung anderer Indikatoren zur Filtration zur Verbesserung der Signalqualität; 5) Entwicklung von Ausstiegsmechanismen zur besseren Kontrolle der Gewinne usw.

Schlussfolgerung

Die Multi-Timeframe Breakout Strategie verbessert die Signalqualität durch den Vergleich von Preisbreakouts über Zeitrahmen hinweg und ist eine relativ zuverlässige Trendfolgestrategie. Aber sie hat auch einige Mängel. Durch ständige Optimierungen kann sie eine stabile und zuverlässige quantitative Handelsstrategie werden.


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

//Noro
//2018

//@version=3
strategy(title = "Noro's Levels Strategy v1.1", shorttitle = "Levels 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")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf1 = input('W', title = "timeframe 1")
tf2 = input('D', title = "timeframe 2")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "use saw filter")
cf = input(true, defval = true, title = "гыу color filter")
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")

//Levels
level1 = request.security(syminfo.tickerid, tf1, src)
level2 = request.security(syminfo.tickerid, tf2, src)
col = showlines ? silver : na
p1 = plot(level1, linewidth = 3, color = col, title = "Level 1")
p2 = plot(level2, linewidth = 3, color = col, title = "Level 2")

//Signals
up1 = close > level1 and ap == false ? true : low > level1 ? true : false
dn1 = close < level1 and ap == false ? true : high < level1 ? true : false
up2 = close > level2 and ap == false ? true : low > level2 ? true : false
dn2 = close < level2 and ap == false ? true : high < level2 ? true : false

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

if up1 and up2 and (close < open or cf == false)
    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 and dn2 and (close > open or cf == false)
    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)
    strategy.close_all()

Mehr