Stratégie de tendance axée sur la liquidité - Stratégie de négociation quantitative basée sur l'indication de la tendance des flux

Auteur:ChaoZhang est là., Date: 21-12-2023 à 10 h 19 min 52 s
Les étiquettes:

img

Résumé

La stratégie s'appelle Strategy de tendance axée sur la liquidité. Elle vise à identifier la direction de la tendance des prix à travers différents délais et à prendre les décisions longues ou courtes correspondantes.

La logique de la stratégie

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 avantages de la stratégie

  • Capturez de manière sensible les renversements de tendance potentiels à l'avance en utilisant la divergence de l'indicateur RSI
  • Appliquer le concept multi-temporel pour déterminer la tendance à une TF supérieure et exécuter des ordres à une TF inférieure
  • L'indicateur de volatilité reflète les variations de prix et de volume, indiquant la liquidité et la participation du marché
  • Paramètres simples, faciles à comprendre, à expliquer et à régler

Risques et solutions

  • Une fausse fuite peut se produire avec le système de double MA
  • Une fuite ratée peut entraîner des pertes inutiles.

Les solutions:

  1. Ajuster les paramètres de l'AM pour réduire la probabilité d'une fausse rupture
  2. Ajouter des filtres pour éviter les entrées inutiles

Directions d'optimisation

  • Optimiser les paramètres RSI à l'aide des algorithmes Kalman Filter
  • Ajouter le MACD et d'autres indicateurs pour faciliter le jugement
  • Définir des positions de sortie dynamiques basées sur les variations du volume de négociation

Conclusion

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)

Plus de