Basierend auf einer Trendfolgestrategie für mehrere Zeitrahmen


Erstellungsdatum: 2024-02-19 11:13:22 zuletzt geändert: 2024-02-19 11:13:22
Kopie: 1 Klicks: 545
1
konzentrieren Sie sich auf
1617
Anhänger

Basierend auf einer Trendfolgestrategie für mehrere Zeitrahmen

Überblick

Die Strategie ist eine Trend-Tracking-Strategie, die die Zustimmung mehrerer Zeitrahmen-Indikatoren nutzt. Sie wird bei gleichzeitiger Auf- oder Abnahme der Tages-, 10-Tages-, 15-Tages- und 30-Tages-Linien geöffnet und mit einem dynamischen Stop-Loss-System beendet.

Strategieprinzip

Die Strategie nutzt vier Zeiträume, nämlich die Tageslinie, die 10-Tageslinie, die 15-Tageslinie und die 30-Tageslinie, um die Richtung der Tendenz zu bestimmen. Sie wird als bullish beurteilt, wenn der Schlusskurs der vier Zeiträume höher als der Eröffnungskurs ist, und als bearish, wenn der Schlusskurs der vier Zeiträume unter dem Eröffnungskurs liegt.

Eintritt in die Börse, wenn der Kurs positiv beurteilt wird. Eintritt in die Börse, wenn der Kurs negativ beurteilt wird.

Die Strategie beurteilt die Richtung des Trends, indem sie den Eröffnungs- und den Schlusskurs in verschiedenen Zeitrahmen vergleicht. Wenn der Eröffnungskurs unter dem Schlusskurs liegt, ist der Zeitrahmen positiv, in grün. Wenn der Eröffnungskurs höher ist als der Schlusskurs, ist der Zeitrahmen negativ, in rot.

Wenn alle vier Zeitrahmen positiv sind, wird die Strategie ausgebucht; wenn alle vier Zeitrahmen negativ sind, wird die Strategie ausgebucht. Die Niedrigpositionsbedingungen sind ein Stop-Loss oder eine Trendwende.

Strategische Vorteile

  1. Die Verwendung von mehreren Zeitrahmen, um Trends zu beurteilen, ermöglicht eine effektive Filterung von False Breakouts und die Bestimmung der Trendrichtung.

  2. Die dynamische Stop-Loss-Methode maximiert den Schutz des Kapitals

  3. Die Eintrittsbedingungen sind strikt, um unnötige Transaktionen zu reduzieren und zu hohe Slip-Point-Kosten zu vermeiden.

  4. Eine Kombination aus mehreren Zeitrahmen, die Geschwindigkeit und Stabilität des Gewinns ausgleichen können

Strategisches Risiko

  1. Eintrittsbedingungen sind so streng, dass man einige Chancen verpassen könnte

  2. Die falsche Einstellung der Stop-Loss-Marge kann zu radikal oder zu konservativ sein

  3. Fehl gewählte Zeitrahmen, die möglicherweise nicht mit länger oder kürzerer Zeit übereinstimmen

  4. Ein unerwartetes Ereignis führt zu einer schnellen Umkehrung, die nicht aufgehalten werden kann.

Optimierungsrichtung

  1. Optimierung der Wahl des Zeitrahmens, der die Geschwindigkeit und Stabilität des Gewinns ausgleicht

  2. Verschiedene Parameter-Einstellungen zu testen und Stop-Loss zu optimieren

  3. Die Einführung von Machine Learning-Algorithmen, um Trendwendepunkte zu bestimmen

  4. Erhöhung der Aufmerksamkeit auf wichtige Ereignisse und Vermeidung von Schäden bei unvorhergesehenen Ereignissen

Zusammenfassen

Die Strategie integriert mehrere Zeitrahmen, um die Richtung der Tendenz zu bestimmen. Die strengen Einstiegsbedingungen kombiniert mit dynamischen Stop-Losses, um stabile Gewinne zu erzielen. Es gibt mögliche verpasste Chancen und Probleme mit unsachgemäßer Risikokontrolle.

Strategiequellcode
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy v1.1", overlay=false)

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
transaction_size = input(1, "Contract/Share Amount")

src = close, len = 20


out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line


kc() =>
    ma = sma(close, lengthKC)
    range = tr
    rangema = sma(range, lengthKC)
    upperKC = ma + rangema * multKC
    lowerKC = ma - rangema * multKC
    [lowerKC, upperKC] 

 
bb() =>
    source = close 
    basis = sma(source, lengthBB)
    dev = multKC * stdev(source, lengthBB)
    upperBB = basis + dev
    lowerBB = basis - dev
    [upperBB, lowerBB]

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor


TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear 
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long, qty=transaction_size)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size)

[kc_lower,kc_upper] = kc()

strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)