Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 1364
- Ranking:
- Publicado:
- 2014.01.14 13:18
- Actualizado:
- 2016.11.22 07:33
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Este proyecto (Visual C++ 2010) contiene 2 clases - CMemMapApi y CMemMapFile.
Están diseñadas para trabajar con archivos mapeados en memoria. Es posible:
- Crear un archivo en memoria;
- Escribir y leer datos de archivos mapeados en medmoria;
- Ofrece una oportunidad para intercambiar datos entre aplicaciones, incluyendo MetaTrader 4 y МetaТrader 5.
Uso principal de intercambio de datos:
- Copiar las operaciones en varios terminales de un PC
- Intercambio de cotizaciones para Asesores Expertos de arbitraje, etc.
Los archivos mapeados en memoria pueden servir de almacenamiento temporal para los datos de Asesores Expertos.
La clase CMemMapApi es simplemente un envoltorio para las funciones de WinApi, esa es la diferencia entre CMemMapFile y CMemMapApi.
CMemMapFile es útil, porque gestiona el nombre del archivo, devuelve un manejador de archivo y controla la comprobación del tamaño del archivo. En contraste, la clase CMemMapApi puede trabajar con varios archivos mapeados en memoria.
En el proyecto actual las funciones exportadas por la DLL se organizan en CMemMapApi para trabajar con varios archivos mapeados cen memoria.
La clase CMemMapFile está diseñada para trabajar con archivos mapeados en memoria en otros proyectos de C++.
//--- abrir/crear un archivo mapeado en memoria y devolver su manejador int MemOpen(string path,int size,int mode,int &err[]); //--- cierra el archivo mapeado en memoria void MemClose(int hmem); //--- aumenta el tamaño del archivo mapeado en memoria int MemGrows(int hmem,string path,int newsize,int &err[]); //--- devuelve el tamño del archivo mapeado en memoria int MemGetSize(int hmem, int &err[]); //--- establece el tamaño del archivo mapeado en memoria int MemSetSize(int hmem, int size, int &err[]); //--- escribe el vector v (tamaño en bytes) a un archivo mapeado en memoria a partir de la posición pos int MemWrite(int hmem,int &v[], int pos, int size, int &err[]); //--- lee el vector v (tamaño en bytes) a un archivo mapeado en memoria a partir de la posición pos int MemRead(int hmem, int &v[], int pos, int size, int &err[]); //--- escribe una cadena (tamaño en bytes) a un archivo mapeado en memoria a partir de la posición pos int MemWriteStr(int hmem, string buf, int pos, int size, int &err[]); //--- lee una cadena (tamaño en bytes) desde un archivo mapeado en memoria a partir de la posición pos int MemReadStr(int hmem, string buf, int pos, int &size, int &err[]);
Ejemplo de uso de la DLL: Quotes Monitoring (memory-mapped file)
12.03. 2012: Corregido un error en MemWriteStr
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/816

Clases (traducidas de C++ a MQL5) para trabajar con ficheros mapeados en memoria.

BykovTrend_HTF_Signal muestra la dirección de la tendencia o una señal generada por el indicador BykovTrend para llevar a cabo una transacción, mediante un objeto gráfico coloreado que indica la tendencia o la dirección de la transacción.

Este Asesor Experto es un ejemplo del uso de la DLL de Mapeado en Memoria para trabajar con las funciones de Mapeado de Ficheros. En este ejemplo, el Asesor Experto crea un fichero virtual (mapeado en memoria) y empieza a actualizarlo con las cotizaciones de un símbolo. Con este método, los Asesores Expertos pueden intercambiar datos (por ejemplo, cotizaciones) utilizando ficheros mapeados en memoria compartida.

La clase CRVIOnArray está diseñada para calcular los valores de RVI (Relative Vigor Index) a partir de los buffers del indicador. El indicador Test_RVIOnArray muestra un ejemplo de uso de la clase.