La stratégie s'appelle
La logique de base de cette stratégie est basée sur l'indicateur CHOP, où le système de moyenne mobile juge la direction globale de la tendance. Plus précisément, la stratégie calcule les valeurs RSI d'une ligne rapide (Length = 20) et d'une ligne lente (Length = 50) sur des délais plus longs, et calcule la différence entre les deux lignes RSI. Lorsque la ligne rapide RSI traverse au-dessus de la ligne lente RSI, elle signale une tendance haussière et déclenche des signaux longs. Au contraire, si la ligne rapide RSI traverse au-dessous de la ligne lente RSI, elle indique une tendance à la baisse et génère des signaux courts.
La stratégie introduit également un mécanisme multi-temporel: elle calcule la différence RSI sur des périodes plus longues (par exemple quotidienne) pour déterminer la direction globale de la tendance, puis exécute des ordres d'achat et de vente réels sur des périodes plus courtes (par exemple 5 minutes) en fonction du jugement de tendance sur les périodes plus longues.
Les solutions:
Cette stratégie tire parti de la divergence du RSI pour capturer de manière sensible les points tournants potentiels de la tendance. L'application multi-temporelle assure de juger de la tendance globale tout en gardant l'exécution de la transaction spécifique flexible. Par rapport aux autres stratégies de suivi de tendance, cette stratégie est plus simple, intuitive dans les ajustements de paramètres et facile à optimiser. En conclusion, la stratégie constitue un système de trading de tendance efficace et pratique qui mérite une exploration et une application plus approfondies.
/*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)