
Cette stratégie, appelée stratégie de tendance à la liquidité, a pour but d’identifier la direction de la tendance des prix sur différentes périodes de temps et de prendre des décisions d’achat ou de vente en conséquence. La stratégie utilise un système bi-linéaire pour juger de la tendance et réagir en temps opportun aux changements de tendance en utilisant l’indice de force relative des différences de prix sur plusieurs périodes de temps.
La logique centrale de la stratégie est basée sur l’indicateur CHOP, dans lequel le système de moyennes mobiles détermine la direction de la tendance générale. Plus précisément, la stratégie calcule les valeurs RSI de la ligne rapide (Length = 20) et la ligne lente (Length = 50) sur des périodes de temps à haute périodicité, et calcule la différence entre les deux.
La stratégie introduit également la détermination de plusieurs périodes: calculer le décalage du RSI sur des périodes plus élevées (comme la ligne solaire) pour déterminer la direction de la tendance globale; effectuer des achats et des ventes spécifiques sur des périodes plus basses (comme la ligne de 5 minutes) en fonction des résultats des périodes plus élevées. Cette combinaison de plusieurs périodes prend en compte à la fois les jugements de tendance des périodes élevées et la flexibilité des opérations des périodes basses.
La solution est simple:
Cette stratégie utilise le décalage RSI pour déterminer les changements de tendance potentiels et capturer les points de basculement de manière sensible. L’utilisation d’un cadre temporel garantit le jugement des grandes tendances et rend les opérations de vente et d’achat plus flexibles. Comparée aux autres stratégies de suivi de tendances, la stratégie est plus simple, plus directe, les paramètres sont intuitifs et faciles à ajuster et à optimiser.
/*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)