Strategie für mehrere Zeitrahmen

Schriftsteller:ChaoZhang, Datum: 2024-02-19 11:13:22
Tags:

img

Übersicht

Diese Strategie nutzt die Übereinstimmung von Indikatoren über mehrere Zeitrahmen hinweg, um Trends zu verfolgen.

Strategie Logik

Die Strategie beurteilt die Trendrichtung anhand von vier Zeitrahmen - täglich, 10-Tage, 15-Tage und 30-Tage. Wenn die Schlusskurse in allen vier Zeitrahmen höher sind als die Eröffnungskurse, zeigt sie ein bullisches Signal an. Wenn die Schluskurse in allen vier Zeitrahmen niedriger sind als die Eröffnungskurse, zeigt sie ein bärisches Signal an.

Wenn das Signal bullisch ist, geht es lang. Wenn das Signal bärisch ist, geht es kurz. Nach dem Eintritt wird der KC-Kanal für dynamischen Stop-Loss verwendet.

Insbesondere vergleicht die Strategie die Eröffnungs- und Schlusskurse über verschiedene Zeitrahmen hinweg, um die Trendrichtung zu bestimmen. Ist der Schlusskurs höher als der Eröffnungspreis, wird der Zeitrahmen als bullisch angesehen und in grün dargestellt. Ist der Schlusskurs niedriger als der Eröffnungspreis, wird der Zeitrahmen als bärisch angesehen und in rot dargestellt.

Wenn alle vier Zeitrahmen auf ein bullisches Signal zustimmen, wird die Strategie eine Long-Position eröffnen. Wenn alle vier Zeitrahmen auf ein bärisches Signal zustimmen, wird die Strategie eine Short-Position eröffnen. Sie tritt aus, wenn sie den Stop-Loss erreicht oder der Trend umkehrt.

Vorteile

  1. Die Verwendung mehrerer Zeitrahmen zur Bestätigung von Trends kann falsche Ausbrüche effektiv filtern und die Trendrichtung bestimmen.

  2. Dynamischer Stop-Loss kann den Kapitalschutz maximieren.

  3. Strenge Einstiegskriterien verringern unnötige Transaktionen und Kosten für Ausfälle.

  4. Durch die Kombination mehrerer Zeitrahmen wird die Gewinngeschwindigkeit und Stabilität ausgeglichen.

Risiken

  1. Eintrittskriterien sind möglicherweise zu streng und manche Möglichkeiten fehlen.

  2. Eine unsachgemäße Stop-Loss-Einstellung kann zu aggressiv oder konservativ sein.

  3. Unangemessene Zeitrahmen sind möglicherweise nicht mit den langfristigen oder kurzfristigen Trends übereinstimmend.

  4. Eine plötzliche Umkehr von Ereignissen kann nicht zum Stop-Loss führen.

Verbesserungsbereiche

  1. Optimieren Sie die Zeitrahmenwahl, um Gewinngeschwindigkeit und Stabilität auszugleichen.

  2. Versuche verschiedene Parameter-Einstellungen, um die Stop-Loss-Levels zu optimieren.

  3. Hinzufügen von Algorithmen für maschinelles Lernen, die bei der Beurteilung von Umkehrpunkten helfen.

  4. Überwachen Sie wichtige Ereignisse, um Verluste durch plötzliche Umkehrungen zu vermeiden.

Zusammenfassung

Diese Strategie integriert Urteile über mehrere Zeitrahmen hinweg, mit strengen Einstiegskriterien und dynamischen Stopps, mit dem Ziel einer stetigen Rendite.


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


Mehr