Stratégie quantitative Dual CCI


Date de création: 2023-11-28 15:47:04 Dernière modification: 2023-11-28 15:47:04
Copier: 1 Nombre de clics: 712
1
Suivre
1621
Abonnés

Stratégie quantitative Dual CCI

Aperçu

Cette stratégie est une stratégie de trading quantitative typique. Elle identifie les tendances des changements de volume et de prix, juge l’orientation et l’intensité des principales transactions sur le marché actuel et forme un signal de trading. Elle peut être largement utilisée dans les instruments financiers tels que les monnaies numériques, les devises et les actions.

Principe de stratégie

  1. Calculer la moyenne de l’ohlc4 et déterminer le prix en combinaison avec l’indicateur cici;
  2. Le calcul de l’indicateur OBV pour mesurer les flux de capitaux;
  3. Calculer l’indice VCI, qui mesure la distribution des flux de fonds par rapport à l’indice OBV;
  4. Calculer l’indice MCI, qui mesure la distribution des prix par la différence de prix;
  5. Le VCI est comparé à l’indice MCI pour évaluer les tendances de l’offre et de la demande;
  • VCI > MCI, les acheteurs sont prêts;
  • VCI < MCI, le vendeur est disposé;
  1. Les signaux de plus-que-moins sont formés sur la base d’une comparaison entre le VCI et le MCI;

Analyse des avantages

  1. La stratégie prend en compte les prix, le volume des transactions et les flux de fonds sur plusieurs dimensions, et les signaux sont plus précis pour juger de l’état des marchés.
  2. Les VCI et les MCI sont capables de s’adapter aux changements du marché en temps réel grâce à des calculs dynamiques de standardisation;
  3. Les paramètres de la stratégie ont été optimisés par un grand nombre de retours d’expérience et présentent une forte stabilité;

Analyse des risques

  1. Les indicateurs de prix et de volume de transactions sont calculés en retard et ne permettent pas de saisir les événements imprévus à l’avance;
  2. Une stratégie unique ne peut pas couvrir complètement une situation de marché complexe et changeante.
  3. Le marché ne peut être jugé seul, il doit être utilisé en combinaison avec d’autres indicateurs auxiliaires.

Direction d’optimisation

  1. Les modèles de prévision, combinés à l’apprentissage en profondeur, améliorent l’exactitude des signaux de jugement.
  2. L’augmentation des modules de contrôle des risques tels que le stop-loss et la stabilité de la stratégie;
  3. La possibilité d’essayer différentes combinaisons de paramètres pour tester leur applicabilité dans un marché donné;

Résumer

Cette stratégie consiste à comparer les indices CCI pour former un signal de transaction, en tenant compte de plusieurs facteurs tels que le prix et le volume des transactions, et en évaluant la force d’achat et de vente du marché. C’est une stratégie de trading quantifiée typique et pratique. Cependant, il est toujours nécessaire de l’utiliser avec d’autres outils auxiliaires pour tirer le meilleur parti de la stratégie.

Code source de la stratégie
/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("MCI and VCI - Modified CCI Formulas")
test = cci(ohlc4, 13)
test1 = cci(ohlc4, 20)

obv(src) => cum(change(src) > 0 ? volume : change(src) < 0 ? -volume : 0*volume)
mDisc = input(0, title="Mode Discrepency")
mDiv = input(0.015, title="Interval")
mean(_src, _length)=>
    _return = sum(_src, _length) / _length

median(_src, _length)=>
    _return = _src
    for _i = 0 to _length
        _return := _return == 0 ? _src : (_return + _src[_i]) / 2
    _return


len = input(20, title="Standard (Average) Length")
mmm = input(20, title="Lookback length")
srcV = obv(input(ohlc4))
srcP = input(close)
x = sma(srcV, len)
MDV2 = abs(stdev(median(x, len), mmm))
MDV3 = abs(stdev(mean(x, len), mmm))
AMDV = (MDV2+MDV3)/2
pt1v = (srcV-ema(srcV, len))/ AMDV
pt2v = 1/mDiv
VCI=pt1v*pt2v
y = ema(srcP, len)
MDP2 =  abs(stdev(median(y, len), mmm))
MDP3 = abs(stdev(mean(y, len), mmm))
AMDA = (MDP2 + MDP3)/2
pt1p = 1/mDiv
pt2p = (srcP-ema(srcP, len))/ AMDA
MCI = pt1p * pt2p
plot(VCI, color=yellow, title="VCI", style="Histogram")
plot(MCI, color=white, title="MCI")

plot(500, style=line)

plot(0, style=line, linewidth=2)

plot(-500, style=line)
long = crossover(MCI, 0) and VCI > MCI[2] 
short = crossunder(MCI, 0) and VCI < MCI[2] 
//Time Control
//Set date and time
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 13, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"


direction = input(0, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
if (long)
    strategy.entry("Long", strategy.long, when=window(), limit=ohlc4, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="Long")

if (short)
    strategy.entry("Short", strategy.short, when=window(), limit=ohlc4, oca_name="BollingerBands", comment="BBandSE")
else
    strategy.cancel(id="Short")