MQL5: Analyse et traitement des rapports de la Commodity Futures Trading Commission (CFTC) dans MetaTrader 5
Aleksey Sergan | 15 novembre, 2021
Introduction
Le terminal de trading MetaTrader 5, élaboré par MetaQuotes Software Corp., comme l’un des outils du trader comporte le langage de programmation MQL5, qui prend en charge la programmation orientée-objet. D’une part, MQL5 n’est pas compatible avec sa version précédente - MQL4, d’autre part - il offre beaucoup de nouvelles possibilités de langage orienté objet complet. Ainsi, les traders, qui ont déjà des compétences en MQL4, doivent comprendre ce (en fait) nouveau langage, et je les considère comme le public cible de cet article.
Dans cet article, je vais indiquer une solution au problème suivant: il est nécessaire de développer l’outil de trading, qui permet d’obtenir et d’analyser différentes données de rapports de la Commodity Futures Trading Commission (CFTC). Ce sujet a déjà été examiné dans l’article Meta COT Project - New Horizons for CFTC Report Analysis in MetaTrader 4, donc je supposerai que le lecteur est familier avec les concepts, et nous examinerons les détails qui n’y sont pas décrits.
L’idée est la suivante: élaborer un indicateur unique, qui permet d’obtenir des données à partir de fichiers, fournis par la Commission, sans traitement intermédiaire ni conversion. En outre, il peut être utilisé aux différentes fins: pour tracer les données en tant qu’indicateur; comme source de données dans d’autres indicateurs; dans les scripts pour l’analyse automatisée; dans les Expert Advisors lors de l’élaboration de stratégies de trading.
1.Types de rapports COT
Il existe trois types de rapports : Current Legacy Report (COT), Supplemental Commodity Index (CIT), Current Disaggregated Report (DCOT), la différence entre eux est présentée dans le tableau 1.
Description | Rapports Actuels de Legs | Indice supplémentaire des produits de base | Rapports désagrégés actuels |
---|---|---|---|
Nom abrégé | COT | CIT | DCOT |
Refrence title | Rapports Actuels de Legs | Indice supplémentaire des produits de base | Rapports désagrégés actuels |
Référence au fichier de données récent | |||
Groupes de traders, présentés dans le rapport | Noncommercial Commercial Non déclarable | Noncommercial Commercial Non déclarable Traders indiciels | Producteur/Marchand/Transformateur/Utilisateur Concessionnaires de swaps Argent géré Autres rapports Non déclarable |
Tableau 1. Types d’engagements des rapports des traders
Des informations sur les traders, qui doivent déclarer leurs positions sur les marchés à terme, les principes de classification et la périodicité des rapports peuvent être trouvées dans le « Trade Stocks and Commodities With the Insiders: Le livre Secrets of the COT Report » l et dans le projet Meta COT - New Horizons for CFTC Report Analysis dans l’article MetaTrader 4.
Je vais examiner deux rapports, qui ne sont pas décrits dans ces sources.
L’acronyme CIT désigne Commitmentsof Index Traders. Ce rapport est publié depuis 2007. La page Web actuelle du rapport CIT est disponible à https://cftc.gov/dea/options/deaviewcit.htm. Les index traders font l’un des groupes distincts des hedgers(opérateurs en couverture d’actif) et des spéculateurs.
La description du rapport supplémentairese trouve à https://www.cftc.gov/MarketReports/CommitmentsofTraders/AbouttheCOTReports/index.htm . Tous ces index traders ouvrent souvent des positions longues sur les marchés et les échangent de contrat en contrat.
Depuis 2009, la Commission publie le rapport sur, les engagements désagrégés de rapport des traders,dont la description se trouve dans les notesexplicativestitlehttp://www.cftc.gov/MarketReports/CommitmentsofTraders/DisaggregatedExplanatoryNotes/index.htm#.title
Le rapport COT désagrégé augmente la transparence par rapport aux rapports de legs des COT en séparant les traders dans les quatre catégories de traders suivantes : Producteur/Commerçant/Transformateur/Utilisateur; Courtiers en swaps; Fonds Géré; et Autres rapports.
- Producteur/Marchand/Transformateur/Utilisateur. Un « producteur/commerçant/transformateur/utilisateur » est une entité qui se livre principalement à la production, à la transformation, à l’emballage ou à la manutention d’une marchandise physique et qui utilise les marchés à terme pour gérer ou couvrir les risques associés à ces activités.
- Courtier Swap. Un « courtier en swaps » est une entité qui traite principalement des swaps pour une marchandise et utilise les marchés à terme pour gérer ou couvrir le risque associé à ces transactions de swaps. Les contreparties du courtier en swaps peuvent être des traders spéculatifs, comme les fonds spéculatifs, ou des clients commerciaux traditionnels qui gèrent le risque découlant de leurs transactions en marchandise physique.
- Gestionnaire de Fonds. Aux fins du présent rapport, un « gestionnaire de fonds » est un conseiller inscrit en négociation de matières premières (OTC); un opérateur de pool de produits enregistré (CPO); ou un fonds non enregistré identifié par la CFTC. Ces traders sont engagés dans la gestion et la conduite d’activités de trading à terme organisées pour le compte de clients.
- Autres Déclarables. Tous les autres traders à déclarer qui ne sont pas placés dans l’une des trois autres catégories sont placés dans la catégorie « autres déclarables ».
La liste complète des instruments signalés est présentée à l’appendice 2. Il existe également des colonnes qui reflètent la présence d’un instrument particulier dans les rapports CIT et DCOT.
2. Rédiger un indicateur COT, qui utilise des données externes à partir de fichiers CSV
L’indicateur fonctionnera comme suit. Le type de rapport (l’un des rapports énumérés dans le Tableau 1), le type de données et le groupe de traders sont définis dans les paramètres d’entrée de l’indicateur.
Le type de données peut être le suivant :
- longues nettes
- taux longues nettes en intérêt ouvert
- Indice williams, calculé pour les longues nettes
- intérêt ouvert
La liste des types de données possibles n’est pas complète, elle peut être facilement étendue pour inclure la plupart des données essentielles que j’utilise. Pour le symbole actuel, les données indiquées sont demandées à partir de fichiers de données (leur téléchargement et leur décompression sont décrits ci-dessous). Nous utiliserons la classe CCFTCReport pour accéder aux données et les télécharger à partir de ces fichiers.
L’indicateur présente la structure suivante :
2.1. Constantes
Pour définir des constantes, le type de données enum est utilisé. Les types de rapports, pris en charge par l’indicateur, sont les suivants :enum cot_type_report // type of report { COT, DCOT, CIT };
Groupes de traders:
enum cot_type_traders // types of traders { noncommercial, // Non-commercial commercial, // Commercial nonreportable, // Non-reportable index, // Index traders producer, // Producers swapdealers, // Swap dealers managedmoney, // Managed money otherreportables // Other reportable traders };
Types de données, qui peuvent être utilisés dans l’indicateur:
enum cot_type_data // type of COT data { netlongs, // net longs netlongsrate, // net longs rate in the open interest willams_index, // Williams index openinterest // Open interest };
2.2. Classes
Pour stocker différents objets dans une seule variable, il est possible d’utiliser des structures et des classes. Toutefois, il n’est pas possible d’affecter deux variables de type structure, si elles contiennent des tableaux dynamiques ou des valeurs de type chaîne. C’est pourquoi nous avons utilisé la classe au lieu de la structure pour stocker l’enregistrement COT et la méthode d’affectation des données.
class cot_record // class for data record of COT report { public: datetime COT_DATE; //date double COT_OPENINTEREST; //open interest double COT_LONGNONCOM; //longs of non-commercial traders double COT_SHORTNONCOM; //shorts of non-commercial traders double COT_LONGCOM; //longs of commercial traders double COT_SHORTCOM; //shorts of commercial traders double COT_LONGNONREPORTABLE; //longs of the other non-reportable traders double COT_SHORTNONREPORTABLE; //shorts of the other non-reportable traders double COT_LONGINDEX; //longs of index traders double COT_SHORTINDEX; //shorts of index traders double COT_LONGPRODUCER; //longs of Producer/Merchant/Processor/User double COT_SHORTPRODUCER; //shorts of Producer/Merchant/Processor/User double COT_LONGSWAPDEALERS; //longs of Swap Dealers double COT_SHORTSWAPDEALERS; //shorts of Swap Dealers double COT_LONGMANAGEDMONEY; //longs of Managed Money traders double COT_SHORTMANAGEDMONEY; //shorts of the Managed Money traders double COT_LONGOTHERREPORTABLES; //Other Reportables double COT_SHORTOTHERREPORTABLES; string COT_ID; //instrument identifier string COT_NAME; //instrument (symbol) name void copyvar(const cot_record &from) // copying contents (values of variables) from one class to another { COT_ID = from.COT_ID; COT_NAME = from.COT_NAME; COT_DATE = from.COT_DATE; COT_OPENINTEREST = from.COT_OPENINTEREST; COT_LONGNONCOM = from.COT_LONGNONCOM; COT_SHORTNONCOM = from.COT_SHORTNONCOM; COT_LONGCOM = from.COT_LONGCOM; COT_SHORTCOM = from.COT_SHORTCOM; COT_LONGNONREPORTABLE = from.COT_LONGNONREPORTABLE; COT_SHORTNONREPORTABLE = from.COT_SHORTNONREPORTABLE; COT_LONGINDEX = from.COT_LONGINDEX; COT_SHORTINDEX = from.COT_SHORTINDEX; COT_LONGPRODUCER = from.COT_LONGPRODUCER; COT_SHORTPRODUCER = from.COT_SHORTPRODUCER; COT_LONGSWAPDEALERS = from.COT_LONGSWAPDEALERS; COT_SHORTSWAPDEALERS = from.COT_SHORTSWAPDEALERS; COT_LONGMANAGEDMONEY = from.COT_LONGMANAGEDMONEY; COT_SHORTMANAGEDMONEY = from.COT_SHORTMANAGEDMONEY; COT_LONGOTHERREPORTABLES = from.COT_LONGOTHERREPORTABLES; COT_SHORTOTHERREPORTABLES = from.COT_SHORTOTHERREPORTABLES; }; };
À partir de maintenant, je supposerai que le lecteur est familier avec le format CSV des rapports COT, qui est considéré dans l’article Meta COT Project - New Horizons for CFTC Report Analysis en MetaTrader 4. L’instance de classe de ce type sera utilisée pour stocker une seule ligne du rapport COT. Un tableau de ces instances de classe permettra de les utiliser pour le stockage et l’accès pratique aux champs des enregistrements COT. La classe CCFTCReport a été élaborée pour le stockage et l’accès aux données :
class CCFTCReport // COT report { private: cot_type_report type; //type of current report cot_record data[]; //cot report data int sizedata; //number of records in the current report string idsymbol; //symbol identifier in cot ("CFTC Contract Market Code" field) string terminalsymbol; //symbol name in the client terminal public: void ~CCFTCReport(){ sizedata=0; }; bool Init( cot_type_report passedtype, string sym="" ); //initialization of class instance bool LoadFile( string filename ); //load data from file string Name(); //returns short report name bool Type(cot_type_report passedtype); //sets type of report cot_type_report Type(){return(type);}; //returns report type bool TestGroup( cot_type_traders type_trader ); //check for the presence of specified group of traders bool DefineIdSymbol(); //definition of id in the cot report bool GetString( int handle, cot_record& arr ); //gets line (record) from csv file string GetFieldCommaDelimited(string &str); //gets field from csv string double At(datetime time,cot_type_traders type_trader,cot_type_data typedata=netlongs); //gets data from the report };
l’instance du CCFTCReportclassecomporte l’ensemble du rapport pour un symbole unique , le type de rapport peut-être COT,CIT ou DCOT. Les énumérations et les classes sont répertoriées dans le "cot.mqh" fichier inclus.
2.3. Paramètres d’entrée
Les paramètres d’entrée sont définis par des variables d’entrée. Ces paramètres permettent d’indiquer le groupe de traders, le type de données et le type de rapport COT nécessaire:
input cot_type_traders type_trader = noncommercial; //type of traders input cot_type_data type_data = netlongs; //type of the indicator input cot_type_report type_report = COT; //type of report
2.4. Fonction OnInit
Un indicateur a la fonction OnInit, qui est utilisée aux fins suivantes: télécharger des données à partir du fichier de rapport, vérifier les paramètres d’entrée, attribuer les tampons de l’indicateur.
Le tampon, initialisé avec la propriété INDICATOR_DATA, comporte des données qui sont tracées sur le graphique. Le tampon, initialisé avec la propriété INDICATOR_CALCULATIONS, comporte des calculs intermédiaires.
SetIndexBuffer( 0, BufferData, INDICATOR_DATA ); IndicatorSetString(INDICATOR_SHORTNAME,indname); SetIndexBuffer( 1, BufferCalculations, INDICATOR_CALCULATIONS );
2.5. OnCalculate fonction
Cette fonction est utilisée pour la sélection des données nécessaires, le calcul des données demandées et leur traçage.
Examinons son travail en détail. La deuxième forme d’appel est utilisée :
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[], const double &Open[], const double &High[], const double &Low[], const double &Close[], const long &TickVolume[], const long &Volume[], const int &Spread[]){
Déterminons les barres pour le calcul et le traçage.
int pos=rates_total-prev_calculated-1; if( pos >= rates_total-1 )pos--;
Précisons que les éléments doivent être indexés comme des séries chronologiques.
ArraySetAsSeries(Time, true); ArraySetAsSeries(BufferData, true); ArraySetAsSeries(BufferCalculations, true);
Après quelques expériences, j’ai constaté qu’il est préférable d’utiliser l’indexation des séries chronologiques pour tous les tableaux liés aux tampons de l’indicateur. La même chose est pratique pour les tableaux, qui sont passés à la fonction OnCalculate en tant que paramètres, le dernier élément (récent) a un index, égal à 0.
La boucle de calcul se présente comme suit :
for(int i=pos;i>=0;i--) { cot_type_data passed = type_data; if(type_data==netlongs || type_data==netlongsrate || type_data==willams_index) { // For the types of the data (net longs, net longs rate, Williams Index) it returns net longs // Further calculations are based on these data. passed = netlongs; } double res = Report.At(Time[i], type_trader, type_data ); //get report data BufferCalculations[i] = res; BufferData[i] = CalcData( type_data, i, Time ); }
Le tableau BufferCalculations est utilisé pour stocker les données principales, sélectionnées dans le rapport COT.
Le tableau BufferData comporte des données prêtes à être tracées sur le graphique. Il peut s’agir des valeurs du rapport (longues nettes, intérêts ouverts) ainsi que des valeurs calculées (taux longs, Index Williams). Je voudrais souligner le point suivant, pour lequel je n’ai pas trouvé de solution élégante. Les tableaux, transmis à la fonction OnCalculate, peuvent être nécessaires aux niveaux suivants, et nous ne pouvons y accéder que s’ils sont passés dans ces appels, donc je pense que cela encombre le code.
L’appelde fonction CalcData:
BufferData[i] = CalcData( type_data, i, Time );
La fonctionCalcData appelle la fonction CalcIndex :
double CalcData( cot_type_data type_data, int i, const datetime& Time[] ) { // net longs rate in the open interest if( type_data == netlongsrate ) return( BufferCalculations[ i ] / Report.At( Time[i], type_trader, openinterest )); // Williams Index if( type_data == willams_index )return( CalcIndex( i, Time, BufferCalculations ) ); return(BufferCalculations[i]); }
J’avais besoin d’accéder au tableau Time à l’intérieur de la fonction CalcIndex, j’ai donc été obligé de le passer en fonction de la hiérarchie des appels. Imaginez à quoi ressemblera le code, si nous devons utiliser les 8 tableaux.
3. Téléchargement de fichiers de données
Tous les liens de fichiers sont présentés dans le tableau 1. Il existe un fichier séparé pour chaque année, le numéro d’année est présent dans le nom du fichier. Par exemple, le fichier contient le rapport pour l’année 2010, le fichier https://www.cftc.gov/sites/default/files/files/dea/history/deacot2009.zip - pour 2009, etc.
Il est nécessaire de télécharger tous ces fichiers et de les décompresser dans le dossier \MQL5\files\ du répertoire d’installation du terminal client. Pour chaque année, il est nécessaire de créer son propre dossier séparé avec un nom, deacotXXXX, où XXXX correspond à une année. En conséquence, nous obtiendrons la structure de dossiers suivante.
Fig.1. Structure des dossiers pour les rapports.
Le processus de préparation des données peut être simplifié. Toutes les opérations suivantes (vérification des mises à jour sur le site Web de la CFTC, téléchargement et décompression dans les dossiers appropriés) sont effectuées par le script « Cotdownloader « . Le noyau de script (téléchargement de données) est basé sur WININET_TEST script. J’ai utilisé la classe CProgressBar, publiée dans l’histogramme de prix (Profil de Marché) et son implémentation dans l’article MQL5. Les applicationsexternes sont executées à l’aide de l’API Windows, qui est décrite dans l’article Optimisation automatisée d’un robot de trading dans le Trading Réel.
L’utilisation d’un script est simple : il suffit de l’attacher à n’importe quel graphique. Lorsqu’il travaille, il signale des informations sur le téléchargement de données sous forme de barre d’avancement sur le graphique et sous forme de messages texte sous forme de messages texte sous l’onglet Experts.
Fig.2. Processus de téléchargement de données.
4. Exemple d’utilisation
Pour exécuter un indicateur, il est nécessaire de l’attacher au graphique du symbole choisi et d’indiquer les paramètres d’entrée.
Fig. 3 Paramètres d’entrée de l’indicateur de berceau
Notez que vous pouvez désormais indiquer une représentation conviviale au lieu des noms de variables et des valeurs des types de données énumérés. Cela se fait comme suit : pour remplacer le nom de la variable, vous devez mentionner un commentaire lorsque vous déclarez une variable d’entrée :
input cot_type_traders type_trader = noncommercial; //Type of traders input cot_type_data type_data = netlongs; //Type of the indicator input cot_type_report type_report = COT; //Type of report
Il en va de même pour les valeurs - il est nécessaire d’indiquer la description dans les commentaires lors de la déclaration des valeurs énumérées :
enum cot_type_data // types of data { netlongs, // Net longs netlongsrate, // Net longs rate in open interest willams_index, // Williams Index openinterest // Open Interest };
Si les paramètres d’entrée ont été correctement indiqués et que les fichiers ont été téléchargés et décompressés, l’indicateur apparaîtra dans une fenêtre séparée:
Fig. 4 Indicateur COT
En cas d’erreurs, elles seront imprimées dans l’onglet « Experts » de la fenêtre « Boîte à outils ».
Fig. 5 Message d’erreur
5. Notes de publication
L’indicateur n’est pas positionné comme un produit fini et pleinement opérationnel. C’est un exemple qui indique comment nous pouvons obtenir des résultats pouvant être utilisés plus loin, en rédigeant un code simple. Par exemple, nous n’avons pas élaboré le module, permettant de personnaliser le type de données de rapport COT avec les paramètres du Terminal Client, fournis par un certain courtier. Cette fonctionnalité est implémentée dans la fonction DefineIdSymbol. Voici les premières lignes de :
bool CCFTCReport::DefineIdSymbol() { idsymbol=""; if(terminalsymbol=="USDLFX" || terminalsymbol=="DX_CONT" || StringFind(terminalsymbol,"DX")==0)idsymbol="098662"; //U.S. DOLLAR INDEX - CE FUTURES U.S. if( terminalsymbol == "FC_CONT" || StringFind( terminalsymbol, "FC")== 0)idsymbol = "061641"; //FEEDER CATTLE if( terminalsymbol == "LC_CONT" || StringFind( terminalsymbol, "LC")== 0)idsymbol = "057642"; //LIVE CATTLE if( terminalsymbol == "QM_CONT" || StringFind( terminalsymbol, "QM")== 0)idsymbol = "067651"; //CRUDE OIL, LIGHT SWEET - NEW YORK MERCANTILE EXCHANGE
Si vous devez affecter un symbole de rapport à un symbole de terminal client, vous devez le faire manuellement en modifiant ce code. J’ai utilisé les paramètres du terminal BrocoTrader4. Pour des exemples dans cet article, j’ai utilisé des comptes de démonstration, ouverts sur les serveurs Metaquotes-Demo et Alpari-Demo. Il n’y a que 2 instruments disponibles pour les rapports DCOT : XAUUSD (or), XAGUSD (argent).
Actuellement, les rapports CIT ne sont pas pris en charge, car il n’y a pas d’instruments financiers sur ces serveurs. Lorsqu’ils apparaîtront, il est facile d’inclure leur support simplement en dé-commentant et modifiant certaines lignes du code.
6. Comment utiliser l’indicateur COT via iCustom
Je n’utilise pas d’indicateur sous une forme présentée à la Fig.3. Le langage MQL5 a la possibilité de réutiliser les indicateurs personnalisés à l’aide de la fonction iCustom.
6.1. Création d’un nouvel indicateur
Il existe de nombreuses façons derapports COT d’analysesvisuelles. L’une d’elles est un histogramme, qui indique les positions de différents groupes de traders avec différentes couleurs.
Examinons la tâche suivante: créer un indicateurCOTnet , qui trace les, positions de différents groupes detraders (commerciaux et non- commerciaux à partir des rapports COT), sous forme d’histogramme. L’utilisateur doit avoir la possibilité de choisir le type de données: nettes longues, taux de nettes longues rate, Williams Index.
Le processus peut être simplifié par l’Assistant MQL5, pris en compte dans le MQL5 : Créez votre propre article indicateur. Par conséquent, le code de l’indicateur (les styles de dessin ont été créés par l’Assistant MQL5) se présente comme suit :
#property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 2 //---- plot Noncommercial #property indicator_label1 "Noncommercial" #property indicator_type1 DRAW_HISTOGRAM #property indicator_color1 Blue #property indicator_style1 STYLE_SOLID #property indicator_width1 5 //---- plot Commercial #property indicator_label2 "Commercial" #property indicator_type2 DRAW_HISTOGRAM #property indicator_color2 Red #property indicator_style2 STYLE_SOLID #property indicator_width2 5 //--- indicator buffersLes variables d’entrée, les variables globales et l’instruction de préprocesseur à inclure la bibliothèque avec les classes se présentent comme suit :
#include <cot.mqh> input cot_type_data type_data = netlongs; // Indicator's type double NoncommercialBuffer[]; double CommercialBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int handlecomm, handlenoncomm;
Le code de la fonction OnInit est le suivant :
int OnInit() { SetIndexBuffer(0,NoncommercialBuffer,INDICATOR_DATA); SetIndexBuffer(1,CommercialBuffer,INDICATOR_DATA); cot_type_traders td = commercial; cot_type_report tr = COT; handlecomm = iCustom(NULL, 0, "cot", td, type_data, tr ); td = noncommercial; handlenoncomm = iCustom(NULL, 0, "cot", td, type_data, tr ); return(0); }Voyons comment utiliser des indicateurs personnalisés (par exemple des traders non commerciaux). Après le premier appel de la fonction iCustom, les paramètres suivants (nécessaires à notre rapport) sont transmis à la fonction :
- NULL – symbole actuel dans le terminal client
- 0-Période courante
- «cot" – nom de fichier (note, qu’il est indiqué sans extension) de notre indicateur personnalisé
- td = commercial (groupe de traders dont nous avons besoin)
- type_data = type de l’indicateur, il est indiqué dans les paramètres d’entrée
- tr = COT – type de rapport
En conséquence, nous avons une poignée, qui sera utilisée plus loin pour obtenir les données de l’indicateur.
if(BarsCalculated(handlecomm)<rates_total || BarsCalculated(handlenoncomm)<rates_total) return(0); int to_copy = clctocopy(rates_total, prev_calculated ); if( !copycotbuf(handlecomm, CommercialBuffer, to_copy ) ) { Print("Error in data of commercial traders"); return( 0 ); } if( !copycotbuf(handlenoncomm, NoncommercialBuffer, to_copy ) ) { Print("Error in data of non-commercial traders"); return( 0 ); } return(rates_total);
Nous avons passé un peu de temps, rédigé un code court et obtenu le résultat:
Fig. 6 L’indicateur cotnet
6.2. iCustom peut également être utilisé dans des scripts
Examinons la tâche suivante : créer lescript cotsignals pour calculer des estimations statistiques.
- Le signe des longues nettes des traders non commerciaux est le même que la couleur de la bougie : si elle est positive, la tendance hebdomadaire est haussière, si elle est négative, la tendance est baissière.
- La couleur de la bougie (blanc / noir) est directement liée à l’augmentation / diminution des longues nettes des commerçants non commerciaux.
- La couleur de la bougie est noir ou blanc en fonction de la valeur de l’Indice de Williams, calculée sur les longues nettes des traders non commerciaux. S’il est suracheté (plus de 75%), la couleur est noire, si elle est survendue (moins de 25%) - la couleur de la bougie est blanche.
Nous utiliserons les données du rapport COT. En utilisant ces exemples, vous pouvez développer vos propres méthodes d’interprétation des données COT et en tirer profit. Dans votre cas, nous vérifierons 150 barres hebdomadaires d’historique, ce qui correspond à une période de 3 ans. Avant de rédiger un script, nous devons définir les types de données et les classes nécessaires :
L’énumération des types de statistiques possibles est la suivante :
enum cot_type_statistics //types of statistics, used for calculation { speculantsign, //Sign of non-commercial traders' net longs speculantchange, //Volume changes of non-commercial traders' longs willamszones //Overbought/oversold zones of Williams Index };
Pour obtenir les statistiques du symbole indiqué, créons une classe spéciale :
class CCOTStatistic { private: int bars ; // number of weekly bars in symbol history string symbol; // symbol name in Client Terminal double netlongsspeculantsdata[]; // data for speculators' net longs double willamsindexspeculantsdata[]; // data for speculators' Williams index net longs cot_type_statistics liststatistic[]; // list of statistics public: //initialization and initial setup void Init( string symbol_passed, cot_type_statistics& listpassed[] ); //Get the forecast for the direction int GetCotSignalDirection( int ibar, cot_type_statistics type_stat ); bool Get( double& probably[] ); // returns statistics };
Les statistiques demandées sont renvoyées par la méthode Get, décrivons comment cela fonctionne. Tout d’abord, les tableaux nécessaires sont remplis de données à l’aide d’un indicateur personnalisé. Nous avons besoin de longues nettes des traders non commerciaux (spéculateurs) et des valeurs de l’Indice de Williams:
if (!LoadDataFromCOTIndicator(symbol, PERIOD_W1, noncommercial, netlongs, COT, netlongsspeculantsdata, bars)) return(false); // we have got the data - speculators' net longs if (!LoadDataFromCOTIndicator(symbol, PERIOD_W1, noncommercial, willams_index, COT, willamsindexspeculantsdata, bars)) return(false); // we have got the data - speculators' Williams Index
Le code pour le calcul des statistiques (nous n’avons qu’un seul paramètre à calculer - il s’agit d’une probabilité de prévision pour la couleur de la bougie hebdomadaire) se présente comme suit:
for(int istat = 0; istat < ArraySize(liststatistic); istat++) { int cntsignals = 0; int cntsucsess = 0; for(int i=bars-1; i>=0; i--) { double colorcandle=iClose(symbol,PERIOD_W1,i)-iOpen(symbol,PERIOD_W1,i); if(symbol=="USDCHF" || symbol=="USDCAD" || symbol=="USDJPY") colorcandle=-colorcandle; double cotdirection=GetCotSignalDirection(i,liststatistic[istat]); if(cotdirection==0)continue; //no signal cntsignals++; if(cotdirection*colorcandle>0) cntsucsess++; //color and direction are same } if(cntsignals!=0) probably[istat]=1.*cntsucsess/cntsignals; Print("Calculation complete for ",symbol,GetStringTypeStatistic(liststatistic[istat]), " the correct forecast probability=",DoubleToString(probably[istat],2)); Print("Total signals:",cntsignals,"success:",cntsucsess); }La fonction LoadDataFromCOTIndicator est compliquée, car il est nécessaire d’effectuer de nombreuses vérifications pour obtenir des données à partir de l’indicateur, alors examinons-le en détail:
bool LoadDataFromCOTIndicator( string symbol, //symbol name ENUM_TIMEFRAMES timeframe, //timeframe cot_type_traders type_trader, //group of traders type cot_type_data type_data , //indicator type cot_type_report type_report, //report type double& loadto[], //output data array int nbars ) //number of requested bars { int cothandle; nbars+=10 ; //for reserve cothandle = iCustom( symbol , timeframe, "cot", type_trader, type_data, type_report );
En dernière ligne, nous obtenons la poignée de l’indicateur personnalisé, qui peut être utilisé pour obtenir des données à partir de tampons.
Nous devons s’assurer que l’indicateur a été créé avec succès:
if( cothandle == INVALID_HANDLE ){ Print("Error in indicator creation for symbol ", symbol ); return(false); }
Vérification des données d’historique, dont nous avons besoin:
int n = BarsSinh( symbol, timeframe ); if( n < nbars ) {
S’il n’y a pas assez de données d’historique, chargeons-les:
Print("Loading history for ", symbol ); //, " start at ", loadtm CheckLoadHistory( symbol ,timeframe, loadtm ); n = BarsSinh( symbol, timeframe ); if( n < nbars ) { Print("Not enough history for the "+symbol, " total ", n, "bars"); return(false); } }
Les fonctions BarsSinh (renvoie le nombre de barres, disponibles sur le symbole et la période indiqués) et CheckLoadHistory (téléchargement de l’historique) sont basés sur le code de script de la référenceMQL5.
Avant d’utiliser les données du tampon de l’indicateur, nous devons vérifier que ces données ont été préparées, car la simple présence d’une poignée ne garantit pas que le calcul est terminé.
L’appel suivant effectue cette vérification et attend lorsque les calculs sont terminés :
if( !WaitForCalculcateIndicator( cothandle ) ){ Print("Timeout for the COT indicator calculation"); return(false); }
Les données sont prêtes, nous devons les copier:
int res = CopyBuffer(cothandle, 0, 0, nbars, loadto );
Ensuite, nous vérifions que les données ont été copiées avec succès:
if( res != nbars ){ Print("Error in obtaining the data, ", MyErrorDescription(_LastError) ); return(false); }
Et enfin :
return(true);
Nous avons les données et les retournons dans le tableau, passé par paramètre de fonction.
Les statistiques subséquentes seront imprimées dans un fichier CSV, la classe CCOTOutFile est élaborée à cet effet:
class CCOTOutFile { private: string filename; int handle; public: bool Init( string passedname ); void PutString( string symbol, double& probably[] ); void PutHeader( cot_type_statistics& arrheaders[] ) ; void ~CCOTOutFile(){ FileClose(handle); } };
Il crée le fichier avec les données de sortie, rédige des chaînes au format .csv, forme l’en-tête et ferme le fichier lors de la destruction de l’instance de classe.
Le code du script sera court, car toutes les bibliothèques nécessaires ont été rédigées.
Les paramètres d’entrée et les bibliothèques incluses :
input int NBars =150; //History depth W1 #include <common.mqh> #include <cot.mqh>
La liste des symboles à analyser :
string listsymbols[] = {"EURUSD", "GBPUSD", "USDCHF", "USDCAD", "USDJPY", "AUDUSD", "XAUUSD"};
Initialisation de l’objet :
void OnStart() { CCOTOutFile outfile; //file with results if( !outfile.Init("cotw1signals.csv") )return;
La liste des statistiques pour le calcul:
cot_type_statistics list_statistic[]= // statistic types list
{ speculantsign, speculantchange, willamszones };
Écriture de l’en-tête defichier CSV:
outfile.PutHeader( list_statistic ); //writing CSV file header
Dans la boucle principale, nous obtenons des statistiques pour chaque symbole et signal, et saisissons les résultats dans le fichier:
for( int i = 0; i < ArraySize(listsymbols); i++ ) //for all symbols in the list { Print( "Analysis for "+listsymbols[i] ); CCOTStatistic stat; stat.Init( listsymbols[i ], list_statistic ); double probably[]; //probability of a signal if( !stat.Get( probably ) ) { Print( "Error in statistics calculation for the symbol ", listsymbols[i] ); return; } outfile.PutString( listsymbols[i], probably ); //write string to .csv file } Print("Calculation complete."); }
Le script a été testé sur le serveur Alpari-Demo. Si vous l’exécutez sur le serveur MetaQuotes-Demo, il imprimera le message « Erreur dans le calcul des statistiques pour le symbole XAUUSD », car ce symbole n’est pas disponible maintenant.
À la suite de l’exécution du script, nous obtiendrons le fichier, qui se présente comme suit:
Pour être plus clair, ouvrons Excel, calculons les valeurs moyennes et créons un histogramme de probabilités:
Fig. 8 Probabilité prévisionnelle
- 0,54 – signature de traders non commerciaux;
- 0,50 – variations en volume des longues nettes des traders non commerciaux;
- 0,48 – zones de surachat/survente de l’Indice de Williams.
Comme nous le constatons, nous avons obtenu les meilleurs résultats prévisionnels pour les longues nettes des traders non commerciaux. Le pire résultat est pour les zones de l’Indice de Williams. La valeur 0,48 indique que la probabilité pour la bougie blanche est égale à 0,52, même si l’Indice de Williams est suracheté, et de couleur noire pour le boîtier, s’il est survendu. Donc, son utilisation dans la forme, présentée par Williams, n’est pas rationnelle. Peut-être que les résultats peuvent être améliorés en utilisant des délais plus longs: mois, ou peut-être plus grand. Nous avons utilisé tous les symboles disponibles sur les serveurs de démonstration et dans les rapports COT.
Conclusion
MQL5 est un outil, qui vous permet de programmer l’ensemble du cycle de tâches, nécessaires pour élaborer un système de trading:- Les indicateurs avec des algorithmes compliqués, qui sont utilisés pour accéder à des sources de données externes;
- Sa réutilisation dans d’autres indicateurs, scripts et Expert Advisors;
- L’implémentation de son propres algorithmes d’analyse statistique et quantitative.
- La programmation orientée-objet réduit considérablement le temps consacré au débogage.
- Débogueur.
- Il est facile de migrer de MQL4 vers MQL5.
- L’implémentation d’un modèle orienté objet est réussie, il est facile de l’utiliser.
- La documentation est bien organisée.
- L’intégration avec l’API Windowsétend la plate-forme, par exemple elle permet de travailler avec des pages Internet.
Inconvénients:
Le principal problème pour moi était l’accès aux données historiques:- Absence de fonctions primitives nécessaires pour accéder aux séries chronologiques (comme Time[], Open[], Close[] et d’autres dans MQL4)
- Lors de l’accès aux données, il est nécessaire d’effectuer de nombreuses vérifications de leur accessibilité, il est nécessaire de comprendre leurs détails.
Il existe un débogueur, mais il ne dispose pas beaucoup de fonctionnalités utiles: il n’y a pas de débogage d’indicateurs, il est également impossible d’effectuer des vérifications d’objets compliqués tels que les tableaux et les classes. La liste des avantages et inconvénients n’est pas exhaustive, je n’ai énuméré que ce que j’ai rencontré lors de la préparation de cet article.
Annexe 1. Liste des fichiers
Tous les fichiers se trouvent dans le dossier Terminal client. Décompressez les fichiers des sources.zip dans le dossier Terminal client.
№ | Nom du fichier | Description |
---|---|---|
1 | MQL5\Files\unzip.exe | Application Windows pour le décompression d’archives .zip |
2 | MQL5\Include\Cdownloader.mqh | Class, qui télécharge les archives CFTC à partir d’Internet |
3 | MQL5\Include\ClassProgressBar.mqh | Classe , CProgressBar, utilisée pour afficher le processus de téléchargement dans la fenêtre du graphique |
4 | MQL5\Include\common.mqh | Fonctions et constantes communes, utilisées dans tous les indicateurs et scripts |
5 | MQL5\Include\cot.mqh | Classe CCFTCReport, qui sélectionne les données des rapports de berceau |
6 | MQL5\Include\ErrorDescription.mqh | Bibliothèque de description d’erreur |
7 | MQL5\Indicators\cot.mq5 | L’indicateur du berceau de base |
8 | MQL5\Indicators\cotnet.mq5 | L’indicateur cotnet, un exemple simple d’utilisation de cot.mq5 comme indicateur d’utilisateur personnalisé |
9 | MQL5\Scripts\cotdownloader.mq5 | Script cotdownloader, il télécharge les fichiers d’archive à partir d’Internet |
10 | MQL5\Scripts\cotsignals.mq5 | Cotsignals de script, exemple d’analyse statistique des rapports COT |
Tableau 2. Liste des fichiers
Annexe 2. Liste des symboles, disponible dans les rapports COT
№ | Nom du symbole | ID sur l’échange | ID dans le terminal client | Présent dans CIT | Présent dans DCOT |
---|---|---|---|---|---|
1 | BLÉ - CHAMBRE DE COMMERCE DE CHICAGO | 001602 | ZW | x | x |
2 | BLÉ - CHAMBRE DE COMMERCE DE KANSAS CITY | 001612 | x | x | |
3 | BLÉ - BOURSE DES CEREALES DE MINNEAPOLIS | 001626 | x | ||
4 | MAÏS - CHAMBRE DE COMMERCE DE CHICAGO | 002602 | ZC | x | x |
5 | AVOINE - CHAMBRE DE COMMERCE DE CHICAGO | 004603 | ZO | x | |
6 | SOJA - CHAMBRE DE COMMERCE DE CHICAGO | 005602 | ZS | x | x |
7 | MINI SOJA - CHAMBRE DE COMMERCE DE CHICAGO | 005603 | x | ||
8 | INSTRUMENT FINANCIER DU SOUFRE - CHICAGO CLIMATE FUTURES EXCHANGE | 006261 | x | ||
9 | INSTRUMENT FINANCIER CARBONE - CHICAGO CLIMATE FUTURES EXCHANGE | 006268 | x | ||
10 | RGGI CO2 ALLOWANCE 2009 - CHICAGO CLIMATE FUTURES EXCHANGE | 00626U | x | ||
11 | HUILE DE SOJA - CHAMBRE DE COMMERCE DE CHICAGO | 007601 | ZL | x | x |
12 | U.S. OBLIGATIONS DU TRÉSOR - CHAMBRE DE COMMERCE DE CHIGAGO | 020601 | ZB | ||
13 | ÉTATS-UNIS À LONG TERME OBLIGATIONS DU TRÉSOR - CHAMBRE DE COMMERCE DE CHIGAGO | 020604 | |||
14 | GULF # 6 CARBURANT 3.0% SULFUR SWAP - NEW YORK MERCANTILE EXCHANGE | 02165A | x | ||
15 | NY RES FUEL 1.0% SULFUR SWAP - NEW YORK MERCANTILE EXCHANGE | 02165B | x | ||
16 | EUR 1% FUEL OIL NWE CAL SWAP - NEW YORK MERCANTILE EXCHANGE | 02165C | x | ||
17 | EUR 3.5% FUEL OIL RTD CAL SWAP - NEW YORK MERCANTILE EXCHANGE | 02165E | x | ||
18 | SING FUEL OIL 180 CAL SWAP - NEW YORK MERCANTILE EXCHANGE | 02165G | x | ||
19 | ÉCHANGE DE SPR DE MAZOUT EST-OUEST - NEW YORK MERCANTILE EXCHANGE | 02165I | x | ||
20 | NY 1% V GULF 3% FUEL OIL SPR - NEW YORK MERCANTILE EXCHANGE | 02165T | x | ||
21 | AUCUN 2 MAZOUT DE CHAUFFAGE | 022651 | x | ||
22 | SING GASOIL SWAP - MERCANTILE EXCHANGE DE NEW YORK | 02265J | x | ||
23 | SING GASOIL/RDAM GASOIL SWAP - NEW YORK MERCANTILE EXCHANGE | 02265T | x | ||
24 | NYMEX HEATING OIL/RDAM GASOIL - NEW YORK MERCANTILE EXCHANGE | 02265U | x | ||
25 | ÉCHANGE DE GASOIL (ICE) - NEW YORK MERCANTILE EXCHANGE | 02265V | x | ||
26 | UP DOWN GC ULSD VS HO SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 022A13 | x | ||
27 | SING GASOIL BALMO SWAP - NEW YORK MERCANTILE EXCHANGE | 022A22 | x | ||
28 | GAZ NATUREL ICE HENRY HUB - ICE OTC | 023391 | x | ||
29 | GAZ NATUREL - NEW YORK MERCANTILE EXCHANGE | 023651 | QG | x | |
30 | MICHCON BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 02365A | x | ||
31 | M-3 BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 02365C | x | ||
32 | TCO BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 02365D | |||
33 | NGPL TEXOK BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 02365G | x | ||
34 | NGPL MIDCON BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 02365K | x | ||
35 | WAHA BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 02365O | x | ||
36 | HOUSTON SHIP CH INDEX SWAP - MERCANTILE EXCHANGE DE NEW YORK | 023A10 | x | ||
37 | ÉTHANOL CBT - CHAMBRE DE COMMERCE DE CHICAGO | 025601 | x | ||
38 | ÉCHANGE D’ÉTHANOL DE CHICAGO - NEW YORK MERCANTILE EXCHANGE | 025651 | x | ||
39 | TOURTEAU DE SOJA - CHAMBRE DE COMMERCE DE CHICAGO | 026603 | ZM | x | |
40 | JAPAN C&F NAPTHA SWAP - NEW YORK MERCANTILE EXCHANGE | 03265C | x | ||
41 | N° COTON 2 - ICE FUTURES ÉTATS-UNIS | 033661 | CT | x | x |
42 | HENRY HUB BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 035652 | x | ||
43 | HOUSTON SHIP CH BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 035653 | x | ||
44 | ÉCHANGE DE BASE NW PIPE ROCKIES - NEW YORK MERCANTILE EXCHANGE | 035654 | x | ||
45 | PANHANDLE BASIS SWAP - MERCANTILE EXCHANGE DE NEW YORK | 035655 | x | ||
46 | HENRY HUB SWAP - MERCANTILE EXCHANGE DE NEW YORK | 03565B | |||
47 | HENRY HUB AVANT-DERNIER ÉCHANGE DE GAZ - NEW YORK MERCANTILE EXCHANGE | 03565C | x | ||
48 | RIZ BRUT - CHAMBRE DE COMMERCE DE CHICAGO | 039601 | ZR | x | |
49 | FRZN JUS D’ORANGE CONCENTRÉ - ICE FUTURES U.S. | 040701 | JO | x | |
50 | 2 ANS AUX ÉTATS-UNIS BONS DU TRÉSOR - CHAMBRE DE COMMERCE DE CHICAGO | 042601 | |||
51 | 10 ANS AUX ÉTATS-UNIS BONS DU TRÉSOR - CHAMBRE DE COMMERCE DE CHICAGO | 043602 | ZN | ||
52 | 5 ANS AUX ÉTATS-UNIS BONS DU TRÉSOR - CHAMBRE DE COMMERCE DE CHICAGO | 044601 | |||
53 | FONDS FÉDÉRAUX DE 30 JOURS - CHAMBRE DE COMMERCE DE CHICAGO | 045601 | ZQ | ||
54 | LAIT Classe III - CHICAGO MERCANTILE EXCHANGE | 052641 | x | ||
55 | PORCS MAIGRES - CHICAGO MERCANTILE EXCHANGE | 054642 | HE | x | x |
56 | BETAIL VIVANT - CHICAGO MERCANTILE EXCHANGE | 057642 | LC | x | x |
57 | BOIS DE LONGUEUR ALÉATOIRE - CHICAGO MERCANTILE EXCHANGE | 058643 | LB | x | |
58 | BETAIL D’ENGRAISSEMENT - CHICAGO MERCANTILE EXCHANGE | 061641 | FC | x | x |
59 | PJM ELECTRICITY MONTHLY - NEW YORK MERCANTILE EXCHANGE | 064657 | x | ||
60 | ISO NEW ENGLAND LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 06465H | x | ||
61 | PJM CAL MOIS OFF PK LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 06465M | x | ||
62 | ISO NEW ENG OFF PK LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 06465S | x | ||
63 | CINERGY CAL MOIS LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 064A01 | x | ||
64 | CINERGY OFF PEAK LMP SWAP - NEW YORK MERCANTILE EXCHANGE | 064A02 | |||
65 | PJM N ILL PEAK DAY À VENIR - NEW YORK MERCANTILE EXCHANGE | 064A34 | x | ||
66 | PJM JCPL PEAK DAY À VENIR - NEW YORK MERCANTILE EXCHANGE | 064A48 | x | ||
67 | PJM PEPCO PEAK DAY À VENIR - NEW YORK MERCANTILE EXCHANGE | 064A50 | x | ||
68 | PJM PSEG PEAK DAY À VENIR - NEW YORK MERCANTILE EXCHANGE | 064A54 | x | ||
69 | PJM WESTERN PEAK DAY À VENIR - NEW YORK MERCANTILE EXCHANGE | 064A56 | |||
70 | PJM WESTERN PEAK TEMPS RÉEL - NEW YORK MERCANTILE EXCHANGE | 064A58 | x | ||
71 | PJM WESTERN OFF PEAK TEMPS RÉEL - NEW YORK MERCANTILE EXCHANGE | 064A59 | x | ||
72 | ISO NEW ENG INT HUB PEAK SWAP - NEW YORK MERCANTILE EXCHANGE | 064A60 | x | ||
73 | MW IND TRANS PEAK SWAP - MERCANTILE EXCHANGE DE NEW YORK | 064A62 | x | ||
74 | NYISO ZONE 5 MW PEAK SWAP - NEW YORK MERCANTILE EXCHANGE | 064A66 | |||
75 | ISO NEW ENG HUB OFF PEAK SWAP - NEW YORK MERCANTILE EXCHANGE | 064A78 | |||
76 | MT BELVIEU PROPANE 5 DEC SWAP - NEW YORK MERCANTILE EXCHANGE | 06665O | |||
77 | MT BELVIEU ETHANE 5 DEC SWAP - NEW YORK MERCANTILE EXCHANGE | 06665P | x | ||
78 | MT BELV NORM BUTANE 5 DÉC SWAP - NEW YORK MERCANTILE EXCHANGE | 06665Q | x | ||
79 | MT BELV NAT ESSENCE 5 DÉC SWP - NEW YORK MERCANTILE EXCHANGE | 06665R | x | ||
80 | PÉTROLE BRUT LIGHT SWEET - ICE FUTURES EUROPE LIGHT SWEET - ICE FUTURES EUROPE | 067411 | x | ||
81 | PÉTROLE BRUT, LÉGER DOUX - NEW YORK MERCANTILE EXCHANGE | 067651 | QM | x | |
82 | WTI CRUDE OIL CALENDAR SWAP - NEW YORK MERCANTILE EXCHANGE | 06765A | x | ||
83 | DUBAI CRUDE OIL CALENDAR SWAP - NEW YORK MERCANTILE EXCHANGE | 06765G | x | ||
84 | WTI CRUDE OIL FINANCIAL - MERCANTILE EXCHANGE DE NEW YORK | 06765I | x | ||
85 | BRENT FINANCIAL - MERCANTILE EXCHANGE DE NEW YORK | 06765J | x | ||
86 | BRENT (ICE) CALENDAR SWAP - NEW YORK MERCANTILE EXCHANGE | 06765N | x | ||
87 | BRENT-DUBAI SWAP - MERCANTILE EXCHANGE DE NEW YORK | 06765O | x | ||
88 | CACAO - ICE FUTURES U.S. | 073732 | CC | x | x |
89 | PALLADIUM - NEW YORK MERCANTILE EXCHANGE | 075651 | PA | x | |
90 | PLATINE - NEW YORK MERCANTILE EXCHANGE | 076651 | PL | x | |
91 | SUCRE NO. 11 - ICE FUTURES ÉTATS-UNIS | 080732 | SB | x | x |
92 | CAFÉ C - ICE FUTURES U.S. | 083731 | KC | x | x |
93 | ARGENT - BOURSE DE MARCHANDISES INC. | 084691 | SI,XAGUSD,ZI | x | |
94 | QUALITÉ DE CUIVRE #1 - BOURSE DE MARCHANDISES INC. | 085692 | HG | x | |
95 | OR - BOURSE DES MARCHANDISES INC. | 088691 | GC,OR,XAUUSD | x | |
96 | ROUBLE RUSSE - CHICAGO MERCANTILE EXCHANGE | 089741 | USDRUB,USDRUR | ||
97 | DOLLAR CANADIEN - CHICAGO MERCANTILE EXCHANGE | 090741 | 6C,USDCAD | ||
98 | FRANC SUISSE - CHICAGO MERCANTILE EXCHANGE | 092741 | 6S,USDCHF | ||
99 | PESO MEXICAIN - CHICAGO MERCANTILE EXCHANGE | 095741 | |||
100 | LIVRE STERLING - CHICAGO MERCANTILE EXCHANGE | 096742 | 6B,GBPUSD | ||
101 | YEN JAPONAIS - CHICAGO MERCANTILE EXCHANGE | 097741 | 6J,USDJPY | ||
102 | U.S. INDICE DOLLAR - ICE FUTURES U.S. | 098662 | DX | ||
103 | EURO FX - CHICAGO MERCANTILE EXCHANGE | 099741 | 6E,EURUSD | ||
104 | GASOLINE BLENDSTOCK (RBOB) - MERCANTILE EXCHANGE DE NEW YORK | 111659 | XRB | x | |
105 | ÉCHANGE DE CALENDRIER RBOB - NEW YORK MERCANTILE EXCHANGE | 11165K | x | ||
106 | DOLLAR NÉO-ZÉLANDAIS - CHICAGO MERCANTILE EXCHANGE | 112741 | 6N,NZDUSD | ||
107 | VIX FUTURES - CBOE FUTURES EXCHANGE | 011700 | |||
108 | DOW JONES INDUSTRIAL AVERAGE - CHAMBRE DE COMMERCE DE CHICAGO | 124601 | |||
109 | EURODOLLARS DE 3 MOIS - CHICAGO MERCANTILE EXCHANGE | 132741 | |||
110 | INDICE BOURSIER S&P 500 - CHICAGO MERCANTILE EXCHANGE | 138741 | |||
111 | INDICE BOURSIER E-MINI S&P 500 - CHICAGO MERCANTILE EXCHANGE | 13874A | ES,SPX | ||
112 | INDICE BOURSIER NASDAQ-100 - CHICAGO MERCANTILE EXCHANGE | 209741 | NQ | ||
113 | INDICE BOURSIER NASDAQ-100 (MINI) - CHICAGO MERCANTILE EXCHANGE | 209742 | |||
114 | DOW JONES UBS EXCÉDENT RENDEMENT - CHAMBRE DE COMMERCE DE CHICAGO | 221602 | |||
115 | DOLLAR AUSTRALIEN - CHICAGO MERCANTILE EXCHANGE | 232741 | 6A,AUDUSD | ||
116 | RUSSELL 2000 MINI INDEX FUTURE - ICE FUTURES ÉTATS-UNIS | 23977A | |||
117 | MOYENNE DES ACTIONS NIKKEI - CHICAGO MERCANTILE EXCHANGE | 240741 | |||
118 | NIKKEI STOCK AVERAGE YEN DENOM - CHICAGO MERCANTILE EXCHANGE | 240743 | |||
119 | E-MINI MSCI EAFE - CHICAGO MERCANTILE EXCHANGE | 244741 | |||
120 | E-MINI MSCI MARCHÉS ÉMERGENTS - CHICAGO MERCANTILE EXCHANGE | 244742 | |||
121 | SWAPS DE TAUX D’INTÉRÊT 10 ANS - CHAMBRE DE COMMERCE DE CHICAGO | 246602 | |||
122 | SWAPS DE TAUX D’INTÉRÊT 5 ANS -CHAMBRE DE COMMERCE DE CHICAGO | 247602 | |||
123 | INDICE S&P GSCI COMMODITY - CHICAGO MERCANTILE EXCHANGE | 256741 | |||
124 | SING JET KERO SWAP - MERCANTILE EXCHANGE DE NEW YORK | 26265D | |||
125 | INDICE BOURSIER E-MINI S&P 400 - CHICAGO MERCANTILE EXCHANGE | 33874A | |||
126 | GULF JET NY HEAT OIL SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 86465A | x | ||
127 | SING JET KERO GASOIL SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 86465C | x | ||
128 | JET CIF NWE/GASOIL FUT - NEW YORK MERCANTILE EXCHANGE | 86465D | x | ||
129 | GULF # 6 ÉCHANGE DE CRAQUAGE DE MAZOUT - NEW YORK MERCANTILE EXCHANGE | 86565A | x | ||
130 | 3,5% FUEL OIL RDAM CRACK SPR - NEW YORK MERCANTILE EXCHANGE | 86565C | x | ||
131 | NAPTHA CRACK SPR SWAP - NEW YORK MERCANTILE EXCHANGE | 86665A | x | ||
132 | GASOIL CRACK SPR SWAP - MERCANTILE EXCHANGE DE NEW YORK | 86765C | x |
Tableau 3. Liste des symboles, disponible dans les rapports COT