Momentum-Strategie mit doppelter Zeitskala

SMA
Erstellungsdatum: 2024-04-25 17:33:02 zuletzt geändert: 2024-04-25 17:33:02
Kopie: 0 Klicks: 592
1
konzentrieren Sie sich auf
1617
Anhänger

Momentum-Strategie mit doppelter Zeitskala

Überblick

Die Strategie ist eine Doppel-Zeitskala-Dynamikstrategie. Sie beurteilt die Richtung des Trends durch den Einsatz eines einfachen Moving Averages (SMA) auf der höheren Zeitspanne und identifiziert die Wendepunkte auf der niedrigeren Zeitspanne mit den Pivotpunkten (PivotLow und PivotHigh). Die Pivotpunkte auf der höheren Zeitspanne sind offen, wenn ein Aufwärtstrend auftritt, während der Pivotpunkt auf der niedrigeren Zeitspanne offen ist. Die Pivotpunkte auf der niedrigeren Zeitspanne sind leer, wenn ein Abwärtstrend auftritt und ein Abwärtstrend auf der niedrigeren Zeitspanne offen ist.

Strategieprinzip

Der Hauptgrundsatz dieser Strategie ist, dass die Richtung des Trends in der höheren Zeitperiode die Entwicklung der niedrigeren Zeitperiode beeinflusst. Wenn die hohe Zeitperiode einen Aufwärtstrend aufweist, ist eine Rückkehr in der niedrigeren Zeitperiode eher ein Kaufmöglichkeit; wenn die hohe Zeitperiode einen Abwärtstrend aufweist, ist ein Rückschlag in der niedrigeren Zeitperiode eher eine Kaufmöglichkeit.

Strategische Vorteile

  1. Doppeltes Zeitmaßstab-Analysen nutzen den Einfluss von hochrangigen Zeitzyklen auf niedrigere Zeitzyklen und erhöhen die Erfolgswahrscheinlichkeit von Transaktionen.
  2. Es ist zuverlässiger, die Richtung des Trends anhand des SMA zu bestimmen, und es ist genauer, die Wendepunkte anhand des Hubpunkts zu erfassen.
  3. Die Parameter sind einstellbar und anpassungsfähig. Der Benutzer kann die hohe und niedrige Zeitskala, die Periodizität des SMA, die Parameter des Kernpunkts usw. nach seinen Bedürfnissen anpassen.
  4. Die Logik ist klar, leicht zu verstehen und umzusetzen.

Strategisches Risiko

  1. Trendwechselrisiko. Wenn sich der Trend in einem höheren Zeitrahmen plötzlich ändert, kann es sein, dass der niedrigere Zeitrahmen noch nicht reagiert hat und die Strategie ausfällt.
  2. Risiken bei der Einstellung von Parametern. Unpassende Einstellungen von Parametern können zu einer schlechten Strategie führen. Eine zu kurze SMA-Zykluswahl kann zu häufigen Geschäften führen, eine zu lange Wahl kann zu einer Verzögerung bei der Trendbeurteilung führen.
  3. Extremsituationsrisiken. In Extremsituationen (z. B. Sturmstürme) kann die Strategie fehlschlagen, da die Zeitzyklen auf der unteren Ebene möglicherweise nicht dem Trend der Zeitzyklen auf der oberen Ebene folgen.

Richtung der Strategieoptimierung

  1. Hinzufügen von Trendwechselbeurteilungen. Einige Logiken können hinzugefügt werden, um zu beurteilen, ob sich der Trend der höheren Zeiträume geändert hat, um den Handel der niedrigeren Zeiträume schneller anzupassen.
  2. Optimierte Parameter-Auswahl. Optimierte Parameter-Auswahl-Methoden können verwendet werden, um die optimale Parameterkombination zu finden (z. B. genetische Algorithmen, Rastersuche).
  3. Erhöhung der Risikokontrolle. Es können Maßnahmen zur Risikokontrolle (wie Stop Losses, Positionsmanagement usw.) ergriffen werden, um die Verluste unter Extremsituationen zu reduzieren.
  4. Mehrfaktorische Integration: Es kann in Betracht gezogen werden, andere Indikatoren oder Faktoren (wie Volatilität, Transaktionsvolumen usw.) in die Strategie zu integrieren, um die Stabilität der Strategie zu verbessern.

Zusammenfassen

Die Doppel-Zeitskala-Dynamik-Strategie nutzt die Verbindung zwischen den hohen und niedrigen Zeitzyklen, um die Trendrichtung in den hohen Zeitzyklen zu beurteilen, um die Wendepunkte in den niedrigen Zeitzyklen zu erfassen, um den Trend zu folgen und umzukehren. Die Strategie ist logisch klar, die Vorteile sind klar, aber es gibt auch einige Risiken.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Riester

//@version=5
strategy("Dual Timeframe Momentum", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(20, "Moving Average Period", minval=1)
src = input.source(close, "Source")
high_tf = input.timeframe("240", "Resolution")
pivot_l = input.int(5, "Pivot Let Bars")
pivot_r = input.int(2, "Pivot Right Bars")

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Calculations
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// 1. Define low and high timeframe prices
low_src = src
high_src = request.security(syminfo.tickerid, high_tf, src)

// 2. Use simple moving average to determine trend of higher timeframe (up or down)
high_tf_ma = ta.sma(high_src, n)
plot(high_tf_ma,  color=color.yellow)
high_tf_trend = high_tf_ma > high_tf_ma[1] ? 1 : -1

// 3. Use pivots to identify reversals on the low timeframe
low_tf_pl = ta.pivotlow(high_src, pivot_l, pivot_r)
plot(low_tf_pl, style=plot.style_line, linewidth=3, color= color.green, offset=-pivot_r)

low_tf_ph = ta.pivothigh(high_src, pivot_l, pivot_r)
plot(low_tf_ph, style=plot.style_line, linewidth=3, color= color.red, offset=-pivot_r)

bool long = low_tf_pl and high_tf_trend == 1
bool short = low_tf_ph and high_tf_trend == -1

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)