![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Il n'est pas très commode que les classes ne puissent pas être décrites à la fin du programme, mais seulement au début.
Il serait bon de faire un curseur dans l'éditeur qui divise la fenêtre d'édition en deux fenêtres indépendantes, comme dans Word. Il serait pratique de copier, écrire et regarder deux sections du programme en même temps.
J'aimerais...
La seule exception (qui n'est pas nécessaire) concerne les week-ends, qui peuvent également être ignorés, mais dont la synchronisation entre les différents instruments est garantie.
Saviez-vous qu'en fait, le week-end, le forex travaille...
c'est juste que la plupart des courtiers ne travaillent pas
---
Certains vous donnent même des devis le week-end et vous laissent travailler sur vos commandes.
ce qui est très pratique.
ils peuvent élargir l'écart le week-end parce qu'il n'y a pas de liquidité.
mais il est possible de dissimuler et de changer les choses.
Ce serait une bonne idée d'ajouter une fonction aux bibliothèques standard pour traiter une chaîne de la forme : Décomposer la chaîne de caractères en modules limités par "début", "fin" et les écrire dans un tableau de chaînes de caractères. Par exemple : int count=(string, array,"<h1>","</h1>",flag) ; Où string est la chaîne d'entrée, array est le tableau de sortie des chaînes, "<h1>" - Le début du module dans la chaîne de caractères "</h1>". - Fin de module en chaîne. flag - spécifie s'il faut inclure ou non les limiteurs de modules dans les chaînes du tableau de sortie, count - nombre de modules trouvés.
Dans ce cas, int count=(string, array,"<h1>","</h1>",flag) ; - créera le tableau de tous les en-têtes, qui sont dans string.
Cela peut être fait avec des outils existants, lisez l'article Analyser le HTML avec les outils MQL4.
Eh bien, il est compréhensible que vous puissiez le faire étape par étape avec les outils disponibles. Mais mieux que deux pages de code pour avoir une fonction prête à l'emploi qui fait tout en une seule fois.....
Dans l'éditeur, il serait utile de masquer/ouvrir certains blocs de code du programme. Par exemple "fonctions", "définitions", "classes"..., ou vous pouvez masquer/ouvrir des sous-codes, par exemple pour, si...
Lisez l'organisation de l'accès aux données, elle indique comment demander l'historique correctement.
Rapport. Et cloisonné. Et celui que j'ai maîtrisé. Il est tout à fait possible de s'en sortir si nécessaire. Je n'ai pas encore appris MQL, donc presque toutes mes questions sur le langage risquent d'être stupides.
Je n'en comprends pas un autre : "Le paramètre "Max bars in charts" limite le nombre de barres disponibles pour les graphiques, les indicateurs et les programmes mql5 au format HC. Cette limitation s'applique à toutes les données temporelles et vise principalement à économiser les ressources.
Lorsque l'on définit des valeurs élevées pour ce paramètre, il ne faut pas oublier que si l'historique des données de prix est suffisamment profond pour les échéances basses, la consommation de mémoire pour le stockage des séries temporelles et des tampons d'indicateurs peut atteindre des centaines de mégaoctets et la limite de mémoire pour le programme du terminal client (2 Go pour les applications 32 bits de MS Windows).
Peut-être que je n'ai pas vraiment compris ce qui se passe dans cet épisode, et en même temps je veux souligner une fois de plus que je ne poserai pas de questions ici et maintenant sur les programmes MQL, mais la motivation ci-dessus pour économiser des ressources semble étrange par rapport à la demande automatique d'historique par le terminal quand on travaille directement avec un graphique manuellement. Votre code est fermé, donc je ne peux pas juger comment tout cela fonctionne. Je ne sais pas si chaque chandelier est un objet réel avec un grand nombre de propriétés et d'attributs ou s'il s'agit d'un dessin/rendu graphique simplifié de l'image structurelle du marché. Si nous omettons le sujet du téléchargement de l'histoire manquante et nous concentrons sur celle que nous avons déjà, alors nous soulevons une question sur la rationalité de l'approche du dessin. Même si vous définissez un certain et grand nombre maximum de barres dans le graphique dans les paramètres, même si vous comprimez les barres du graphique en une aiguille et utilisez une très haute résolution du moniteur, je ne pense pas que l'image entière utilisera la RAM si les barres sont correctement chargées du SGBD historique à l'écran. Utilisez-vous le principe LIFO ? Le nombre maximum de barres sur le graphique peut être infiniment grand, mais ce qui se trouve derrière l'écran (celui de droite et de gauche) ne doit pas du tout être en mémoire, et lors du défilement, il doit être chargé en RAM avec le déchargement du cadre de gauche instantanément, car nous ne travaillons pas avec le réseau, mais seulement avec l'historique disponible localement. De quelles horribles limitations de 2Gb pourrions-nous parler ?
...Je suis probablement très loin du compte, alors pardonnez d'avance mon côté beauf.
Chaque barre de prix est décrite par la structure MqlRates (aucune autre caractéristique) avec une taille de 52 octets :
Pour estimer la taille des bases de données de travail, vous devez regarder dans le répertoire /bases/nom du serveur/symbole/. Par exemple, pour EURUSD, vous pouvez voir ce qui suit :
Dans ce répertoire se trouvent les conteneurs minute originaux compressés tels qu'ils sont donnés par le serveur de trading. Vous pouvez voir qu'en moyenne les conteneurs minute prennent environ 15 mb sur 1 an. Il s'agit d'un format de compression très spécifique visant à minimiser le trafic.
Le répertoire cache contient les bases de données de travail qui ont été compressées si nécessaire :
Comme vous pouvez le constater, depuis 1993, les minutki (en fait, jusqu'en 1999, les bases de données quotidiennes au lieu des minutki) représentent environ 231 mégaoctets, compressés et prêts à être utilisés. Les horloges adjacentes, cependant, ne prennent que 4 mb.
Si vous multipliez 52 octets par 4 400 000 barres, vous obtenez environ 230 Mo. Un simple indicateur de moyenne mobile avec un tampon de travail (double) nécessitera 4 400 000 * 8 = 35 mégaoctets de mémoire.
Lorsque le trader définit "Maximum de barres dans la fenêtre" dans les paramètres du terminal, il spécifie explicitement "pas plus que le nombre spécifié de barres à charger en mémoire pour travailler". Si l'historique complet des minutes est chargé (nous travaillons sur le graphique M1), que des indicateurs lourds à plusieurs tampons sont appliqués et que des conseillers experts sont utilisés, le coût de la mémoire peut être important. Et nous ne pouvons pas penser "je travaille avec une fenêtre et je vois 500 barres, donc je peux décharger le reste". Vous ne pouvez pas les décharger - les indicateurs, les Expert Advisors, etc. vivent et travaillent sur ces données.
Nous avons mis en place un modèle de mise en cache très efficace, lorsque les données et les indicateurs sont toujours stockés dans un seul numéro. Cela signifie que l'ouverture de 5 fenêtres sur EURUSD:M1 ne nécessite pas la création de 5 tampons de données, et que plusieurs indicateurs, absolument égaux en paramètres, n'ont qu'une seule copie. Lorsque les indicateurs ou les graphiques ne sont pas utilisés pendant une longue période, leurs données sont automatiquement libérées et réactivées si nécessaire.
En outre, nous disposons d'une version 64 bits du terminal client, qui peut gérer une énorme quantité d'historique sans aucune limitation. Cette version sera publiée dès que nous aurons fini de tester MQL5 dans un environnement 64 bits.