Die Strategie trägt den Namen
Die Kernlogik dieser Strategie basiert auf dem CHOP-Indikator, bei dem das gleitende Durchschnittssystem die allgemeine Trendrichtung beurteilt. Insbesondere berechnet die Strategie die RSI-Werte einer schnellen Linie (Länge = 20) und einer langsamen Linie (Länge = 50) in höheren Zeitrahmen und berechnet den Unterschied zwischen den beiden RSI-Linien. Wenn die schnelle Linie RSI über die langsame Linie RSI überschreitet, signalisiert sie einen Aufwärtstrend und löst lange Signale aus. Im Gegenteil, wenn die schnelle Linie RSI unter die langsame Linie RSI überschreitet, signalisiert sie einen Abwärtstrend und erzeugt kurze Signale.
Die Strategie führt außerdem einen Mechanismus für mehrere Zeitrahmen ein: Sie berechnet die RSI-Differenz in höheren Zeitrahmen (z. B. täglich), um die allgemeine Trendrichtung zu bestimmen, und führt dann tatsächliche Kauf- und Verkaufsaufträge in niedrigeren Zeitrahmen (z. B. 5 Minuten) auf der Grundlage des höheren Zeitrahmentrendurteils aus.
Lösungen:
Diese Strategie nutzt die RSI-Divergenz, um potenzielle Wendepunkte des Trends sensibel zu erfassen. Die Multi-Timeframe-Anwendung sorgt dafür, den Gesamttrend zu beurteilen und gleichzeitig die spezifische Handelsausführung flexibel zu halten. Im Vergleich zu anderen Trendfolgestrategien ist diese Strategie einfacher, intuitiv bei Parameteranpassungen und einfach zu optimieren. Abschließend bildet die Strategie ein effizientes und praktisches Trendhandelssystem, das weitere Erforschung und Anwendung wert ist.
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Flow Trend Indicator Strategy", "FlowTI", overlay=true, calc_on_every_tick=true) isTimeFrame(timeFrame) => timeFrame == timeframe.period ? true : false Htf() => isTimeFrame("12") ? "60" : isTimeFrame("60") ? "300" : isTimeFrame("300") ? "D" : isTimeFrame("D") ? "W" : isTimeFrame("W") ? "M" : isTimeFrame("M") ? "5M" : "D" TrendIndication() => trendFastLength = 20 trendSlowLength = 50 upFastHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on) downFastHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on) rsiFastHtf = downFastHtf == 0 ? 100 : upFastHtf == 0 ? 0 : 100 - (100 / (1 + upFastHtf / downFastHtf)) upSlowHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on) downSlowHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on) rsiSlowHtf = downSlowHtf == 0 ? 100 : upSlowHtf == 0 ? 0 : 100 - (100 / (1 + upSlowHtf / downSlowHtf)) rsiDiff = rsiFastHtf - rsiSlowHtf crossover(rsiDiff, 0) ? true : crossunder(rsiDiff, 0) ? false : na if (TrendIndication() == true) strategy.entry("Long", strategy.long) if (TrendIndication() == false) strategy.entry("Short", strategy.short)