Rejoignez notre page de fans
- Vues:
- 65
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Le projet Visual C++ 2010 comporte deux classes : CMemMapApi et CMemMapFile.
Elles remplissent la même fonction : travailler avec la mémoire virtuelle (Memory Mapping) comme on travaille habituellement avec des fichiers.
- Créer un fichier en mémoire ;
- Écrire et lire des données à partir de ce fichier ;
- Possibilité d'échanger des données entre applications. Y compris entre MetaTrader 4 et MetaTrader 5.
L'application principale est bien sûr l'échange d'informations :
- dans les copieurs de transactions entre les terminaux d'un même ordinateur
- Échange de cotations pour créer des experts en arbitrage, etc.
Mais vous pouvez également l'utiliser pour le stockage temporaire des données des Expert Advisors.
La différence entre les classes CMemMapFile et CMemMapApi est que CMemMapApi n'est qu'une enveloppe des fonctions WinApi.
L'avantage de CMemMapFile est qu'il stocke le nom du fichier, son identifiant et sa position actuelle en lecture/écriture et qu'il effectue toutes les vérifications nécessaires sur la taille du fichier lui-même.Mais l'objet CMemMapApi peut gérer plusieurs fichiers mémoire à la fois, alors que l'objet CMemMapFile ne gère qu'un seul fichier.
Dans le projet de DLL actuel, toutes les fonctions exportées proviennent exactement de CMemMapApi, afin d'organiser le travail avec plusieurs fichiers de mémoire.
La classe CMemMapFile est conçue pour travailler avec la mémoire dans d'autres projets C++.
Fonctions exportées de la DLL :
int MemOpen(string path,int size,int mode,int &err[]); // ouvre/crée un fichier en mémoire, renvoie le handle void MemClose(int hmem); // ferme le fichier en mémoire int MemGrows(int hmem,string path,int newsize,int &err[]); // augmente la taille du fichier en mémoire int MemGetSize(int hmem, int &err[]); // renvoie la taille du fichier en mémoire int MemSetSize(int hmem, int size, int &err[]); // définit la taille du fichier en mémoire int MemWrite(int hmem,int &v[], int pos, int size, int &err[]); // écrire le vecteur v dans la mémoire à partir de la position spécifiée pos, size size int MemRead(int hmem, int &v[], int pos, int size, int &err[]); // lecture du vecteur v à partir de la position spécifiée pos avec la taille size int MemWriteStr(int hmem, string buf, int pos, int size, int &err[]); // écrire des données dans la mémoire à partir de la position spécifiée pour le nombre d'octets spécifié int MemReadStr(int hmem, string buf, int pos, int &size, int &err[]); // lecture des données de la mémoire à partir de la position spécifiée et du nombre d'octets spécifié
Exemples d'utilisation de la DLL dans MetaTrader 5 - Suivi des cotations (exemple de mapping)
Correction du fonctionnement de la fonction MemWriteStr
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/816
Suivi des offres (exemple de cartographie)
Exemple d'utilisation d'une DLL pour travailler avec des fonctions de mappage de fichiers. Dans cet exemple, le conseiller expert lancé crée un fichier virtuel dans la mémoire et commence à mettre à jour la cotation du symbole dans ce fichier. Lorsque des conseillers experts sont lancés sur d'autres terminaux, ils ouvrent le fichier créé et commencent à y mettre à jour leurs cotations. Ainsi, les conseillers experts échangent leurs cotations par le biais d'un fichier commun.
Prix d'arrêt
Le script calcule le prix auquel un Stop Out (fermeture forcée d'une position) peut se produire et le prix à partir duquel la valeur de la Marge Libre devient négative.
Simple_Session_Changement_de_prix
L'indicateur le plus simple montrant sur le symbole actuel la variation du prix en % depuis l'ouverture de la séance.
iForexSessions
Met en évidence les sessions du marché des changes (Sydney, Tokyo, Londres, New York).