Stratégie de trading quantitative basée sur la tendance de liquidité


Date de création: 2023-12-21 10:19:52 Dernière modification: 2023-12-21 10:19:52
Copier: 0 Nombre de clics: 701
1
Suivre
1623
Abonnés

Stratégie de trading quantitative basée sur la tendance de liquidité

Aperçu

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.

Principe de stratégie

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.

Avantages stratégiques

  • Le RSI est utilisé pour détecter un potentiel renversement de tendance, une réaction anticipée, une sensibilité
  • Application de la logique du multi-cadre temporel, des tendances de jugement à hautes cycles et de l’exécution d’opérations à bas cycles
  • L’indicateur RSI reflète les variations des prix et des volumes de transactions, reflétant la liquidité du marché et la chaleur de la participation
  • Une configuration de paramètres simple, facile à comprendre, à interpréter et à régler

Risques stratégiques et solutions

  • Une fausse rupture peut survenir lors de la détermination d’une double ligne d’équilibre
  • Un échec à la percée pourrait entraîner des pertes inutiles

La solution est simple:

  1. Ajustement des paramètres de la moyenne pour réduire la probabilité de fausse percée
  2. Augmentation des conditions de filtrage pour éviter l’entrée inutile

Orientation de l’optimisation de la stratégie

  • Optimisation des paramètres RSI à l’aide de l’algorithme du filtre Kalman
  • Ajout d’indicateurs auxiliaires tels que le MACD
  • Définition de la position de sortie dynamique associée à la variation du volume des transactions

Résumer

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.

Code source de la stratégie
/*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)