
Diese Strategie, die als “Liquidity Driven Trend Strategy” bezeichnet wird, soll die Richtung der Preisentwicklung in verschiedenen Zeiträumen identifizieren und entsprechend Kauf- oder Verkaufsentscheidungen treffen. Die Strategie nutzt ein Bilanzsystem, um Trends zu beurteilen und zeitnah auf Trendänderungen zu reagieren, indem sie den Relative Strength Index (RSI) für Preisunterschiede in mehreren Zeiträumen nutzt.
Die Kernlogik der Strategie basiert auf dem CHOP-Indikator, in dem ein Moving-Average-System die Richtung eines großen Trends bestimmt. Insbesondere berechnet die Strategie die RSI-Werte für die Schnelle (Length = 20) und die Langlebige (Length = 50) in einem hochperiodischen Zeitrahmen und berechnet die Differenz zwischen beiden. Wenn der Schnelle den langsamen RSI über dem RSI durchbricht, wird er als bullish beurteilt und bildet ein Mehrwertsignal.
Die Strategie führt auch mehrere Zeitrahmen ein: Berechnung des RSI-Differenzwerts in höheren Zeitrahmen (z. B. der Sonnenlinie), um die Richtung des Gesamttrends zu bestimmen. Aufgrund der Urteile in höheren Zeitrahmen werden spezifische Kauf- und Verkaufseingriffe in niedrigeren Zeitrahmen (z. B. der 5-Minuten-Linie) durchgeführt. Diese Kombination von mehreren Zeitrahmen berücksichtigt sowohl die Urteile für hohe Zeitrahmen als auch die Flexibilität für niedrige Zeitrahmen.
Die Lösung:
Diese Strategie verwendet RSI-Differenzwerte, um potenzielle Trendänderungen zu beurteilen und Sensitivität zu erzielen. Die Verwendung von mehreren Zeitrahmen gewährleistet die Beurteilung von großen Trends und macht die spezifischen Kauf- und Verkaufsaktionen flexibler. Im Vergleich zu anderen Trend-Tracking-Strategien ist die Strategie einfacher und direkter, die Parameter-Settings sind intuitiv und leicht zu optimieren. Insgesamt bildet die Strategie ein hocheffizientes, praktisches Trendhandelssystem, das es wert ist, die Anwendung weiter zu erforschen.
/*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)