Multi-Time-Frame-Breakout-Strategie


Erstellungsdatum: 2023-12-29 16:17:56 zuletzt geändert: 2023-12-29 16:18:22
Kopie: 0 Klicks: 632
1
konzentrieren Sie sich auf
1621
Anhänger

Multi-Time-Frame-Breakout-Strategie

Überblick

Die Multi-Time-Frame-Breakout-Strategie erzeugt ein zuverlässiges Handelssignal durch die Kombination von Preis-Breakout-Signalen auf zwei verschiedenen Zeiträumen. Die Strategie berechnet gleichzeitig Preis-Breakout-Signale auf kurzen Zeiträumen wie 1 Stunde, 2 Stunden, 3 Stunden und auf längeren Zeiträumen wie 4 Stunden und Tageszeiten. Wenn die Signale auf den beiden Zeiträumen synchronisiert sind, wird ein Kauf- oder Verkaufssignal erzeugt, um in die entsprechende Richtung zu handeln.

Strategieprinzip

Die Kernlogik der Strategie besteht darin, die Preisbruchsignale auf zwei unterschiedlichen Zeiträumen zu berechnen und diese dann zu filtern. Konkret berechnet die Strategie, ob der Preis auf einem kürzeren Zeitrahmen (z. B. der 1-Stunden-Linie) das angegebene Niveau überschritten hat, während auf einem längeren Zeitrahmen (z. B. der 4-Stunden-Linie) entsprechend berechnet wird, ob der Preis das angegebene Niveau überschritten hat. Die Strategie erzeugt nur dann ein Handelssignal, wenn die Richtung der Breakoutsignale auf den beiden Zeitrahmen übereinstimmt, d. h. wenn der Preis auf den beiden Zeitrahmen das angegebene Niveau überschritten hat.

Die Erzeugung eines Kaufsignals erfolgt unter der Bedingung, dass der Schlusskurs oder der niedrigste Preis auf dem kurzen Zeitrahmen und der niedrigste Preis auf dem langen Zeitrahmen das entsprechende Preisniveau überschreiten. Die Erzeugung eines Verkaufssignals erfolgt unter der Bedingung, dass der Schlusskurs oder der höchste Preis auf dem kurzen Zeitrahmen und dem langen Zeitrahmen das entsprechende Preisniveau überschreiten. Die Strategie kann durch eine solche Mehrzeit-Frame-Matching-Methode einige falsche Signale filtern und die Signale zuverlässiger machen.

Analyse der Stärken

Der größte Vorteil dieser Strategie liegt in der hohen Zuverlässigkeit ihrer Handelssignale. Durch die Forderung, dass der Preis in beiden Zeiträumen das entsprechende Niveau durchbricht, kann ein Teil des Rausches wirksam beseitigt und Fehltrades vermieden werden. Außerdem können sich die Durchbruchssignale in verschiedenen Zeiträumen gegenseitig verifizieren, was die Handelsmöglichkeiten effektiver macht.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass es in Zeiträumen mit ruhigen Märkten zu einem Preisbruch in beiden Zeiträumen kommt. In diesem Fall erzeugt die Strategie kein Handelssignal und kann die Handelsgelegenheit verpassen. Außerdem gibt es eine gewisse Verzögerung zwischen den beiden Zeiträumen, was zu einer unerwünschten Effizienz des Signals führen kann. Außerdem ist die Strategie nicht mit einer Stop-Loss-Logik ausgestattet, was ein hohes Risiko darstellt.

Optimierungsrichtung

Diese Strategie kann optimiert werden durch: 1) Erhöhung der Stop-Loss-Logik, um das Risiko zu kontrollieren; 2) Optimierung der Kombination von Zeiträumen, um die Handels-Effizienz zu erhöhen; 3) Erhöhung der Kombination von mehr Zeiträumen, um die Handelssignale strenger zu machen; 4) Filterung in Kombination mit anderen Indikatoren, um die Signalqualität zu verbessern; 5) Entwicklung von Exiting-Mechanismen, um die Gewinne besser zu kontrollieren.

Zusammenfassen

Die Multi-Time-Frame-Breakout-Strategie verbessert die Signalqualität durch den Vergleich von Preis-Breakouts auf zwei Zeiträumen und ist eine eher zuverlässige Trendverfolgungs-Strategie. Es gibt jedoch einige Mängel, die durch ständige Optimierung zu einer stabilen und zuverlässigen quantitativen Handelsstrategie werden können.

Strategiequellcode
/*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()