Diese Strategie ist eine doppelte Zeitframe-Momentumsstrategie. Sie bestimmt die Trendrichtung auf dem höheren Zeitrahmen mithilfe eines einfachen gleitenden Durchschnitts (SMA) und identifiziert Umkehrpunkte auf dem unteren Zeitrahmen mit Hilfe von Drehpunkten (PivotLow und PivotHigh). Sie geht lang ein, wenn der höhere Zeitrahmen einen Aufwärtstrend zeigt und ein bullischer Drehpunkt auf dem unteren Zeitrahmen erscheint, und geht kurz, wenn der höhere Zeitrahmen einen Abwärtstrend zeigt und ein bärischer Drehpunkt auf dem unteren Zeitrahmen erscheint.
Das Hauptprinzip dieser Strategie ist, dass die Trendrichtung des höheren Zeitrahmens die Bewegung des unteren Zeitrahmens beeinflusst. Wenn der höhere Zeitrahmen einen Aufwärtstrend zeigt, sind Pullbacks im unteren Zeitrahmen eher Kaufmöglichkeiten; wenn der höhere Zeitrahmen einen Abwärtstrend zeigt, sind Rebounds im unteren Zeitrahmen eher Shorting-Möglichkeiten. Diese Strategie verwendet den einfachen gleitenden Durchschnitt (SMA) zur Bestimmung der Trendrichtung des höheren Zeitrahmens und Pivotpunkte (PivotLow und PivotHigh) zur Identifizierung von Umkehrpunkten im unteren Zeitrahmen.
Diese Dual-Timeframe-Momentumsstrategie nutzt die Verbindung zwischen höheren und niedrigeren Zeitrahmen, bestimmt die Trendrichtung auf dem höheren Zeitrahmen und erfasst Umkehrpunkte auf dem niedrigeren Zeitrahmen, um Trendfolgen und Umkehrhandel zu erreichen.
/*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)