Deseos para MT5 - página 23

 

No es muy conveniente que las clases no se puedan describir al final del programa, sino sólo al principio.

 

Estaría bien hacer un deslizador en el editor que dividiera la ventana de edición en dos independientes, como en Word. Sería conveniente copiar, escribir y ver dos secciones del programa al mismo tiempo.

 
MetaDriver:

Ojalá...

La única excepción (y no necesaria) son los fines de semana. También se pueden saltar, pero de nuevo se garantiza la sincronización entre los diferentes instrumentos.

¿Sabías que los fines de semana el forex funciona?

es que la mayoría de los corredores no trabajan

---

Algunos incluso te dan presupuestos en fin de semana y te dejan trabajar en tus pedidos.

que es muy conveniente.

pueden ampliar el diferencial en el fin de semana porque no hay liquidez

pero hay una manera de encubrir y cambiar las cosas

 

Sería una buena idea añadir una función a las bibliotecas estándar para manejar una cadena de la forma Descomponer la cadena en módulos limitados por "principio", "fin" y escribirlos en un array de cadenas. Por ejemplo: int count=(string, array,"<h1>","</h1>",flag); Donde string es la cadena de entrada, array es la matriz de cadenas de salida, "<h1>" - El comienzo del módulo en la cadena, "</h1>" - Fin del módulo en la cadena. flag - especifica si se incluyen o no los limitadores de módulos en las cadenas de la matriz de salida, count - número de módulos encontrados.

En este caso, int count=(string, array,"<h1>","</h1>",flag); - creará el array de todas las cabeceras, que están en string.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Esto también puede hacerse con las herramientas existentes, véase el artículo Parsing HTML with MQL4
Разбор HTML средствами MQL4 - Статьи по MQL4
  • www.mql5.com
Разбор HTML средствами MQL4 - Статьи по MQL4: примеры использования экспертов, тестирования и оптимизации
 
Rosh:
Esto se puede hacer con las herramientas existentes, lea el artículo Parse HTML with MQL4 tools
Está claro que se puede hacer paso a paso con las herramientas existentes. Pero es mejor tener una función preparada que haga todo de una vez que dos páginas de código....
 
Rinng:
Bueno, es comprensible que puedas hacerlo paso a paso con las herramientas disponibles. Pero mejor que dos páginas de código a tener una función lista que lo haga todo de una vez....
Añádelo a una biblioteca o a un archivo mqh y no hay problema ;))
 

En el editor, sería útil ocultar/abrir algunos bloques de código del programa. Por ejemplo "funciones", "definiciones", "clases"..., o puede ocultar/abrir subcódigos, por ejemplo para, si...

Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Основы языка / Операторы / Оператор цикла for - Документация по MQL5
 
Rosh писал(а) :
Leer Organización de acceso a los datos, dice cómo solicitar el historial correctamente.

Informe. Y con particiones. Y el que he dominado. Es muy posible averiguarlo si es necesario. Todavía no he aprendido MQL, así que casi cualquier pregunta que tenga sobre el lenguaje corre el riesgo de ser una tontería.

No entiendo otra: "El parámetro "Max bars in charts" limita el número de barras disponibles para los gráficos, indicadores y programas mql5 en formato HC. Esta limitación se aplica a todos los datos temporales y está pensada principalmente para ahorrar recursos.

Al establecer valores altos de este parámetro, debemos recordar que si hay un historial de datos de precios lo suficientemente profundo para marcos temporales bajos, el consumo de memoria para el almacenamiento de las series temporales y los búferes de los indicadores puede llegar a cientos de megabytes y alcanzar el límite de memoria para el programa terminal del cliente (2 GB para aplicaciones de 32 bits de MS Windows).

Tal vez, no he entendido bien qué es lo que pasa en este episodio, y al mismo tiempo quiero recalcar una vez más que no voy a hacer ninguna pregunta aquí y ahora sobre los programas MQL, pero la motivación anterior para ahorrar recursos se ve extraña en relación con la solicitud automática del historial por el terminal cuando se trabaja directamente con un gráfico de forma manual. Su código está cerrado, así que no puedo juzgar cómo funciona todo. No sé si cada vela es un objeto real con un gran número de propiedades y atributos o si es un dibujo gráfico simplificado de la imagen estructural del mercado. Si omitimos el tema de la descarga de la historia que falta y nos centramos en la que ya tenemos, entonces planteamos una cuestión sobre la racionalidad del enfoque del dibujo. Aunque establezcamos una cierta y gran cantidad de barras en el gráfico en los ajustes, aunque comprimamos las barras del gráfico a una aguja y utilicemos una resolución muy alta del monitor, no puedo creer que toda la imagen utilice la RAM si las barras se cargan correctamente desde el SGBD del historial a la pantalla. ¿Está utilizando el principio LIFO? El número máximo de barras en el gráfico puede ser infinitamente grande, pero lo que está detrás de la pantalla (tanto a la izquierda como a la derecha) no debe estar en la memoria en absoluto, y al desplazarse, debe cargarse en la memoria principal y descargarse instantáneamente, porque no estamos trabajando con la red, sino sólo con el historial disponible localmente. ¿De qué horribles limitaciones de 2Gb podríamos estar hablando?

...Seguramente estoy muy fuera de onda, así que perdonen al paleto de antemano.

 

Cada barra de precios está descrita por la estructura MqlRates (sin otras características) con un tamaño de 52 bytes:

struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     volume;       // объем
  };

Para estimar el tamaño de las bases de datos de trabajo, hay que buscar en el directorio /bases/nombre del servidor/símbolo/. Por ejemplo, para el EURUSD puede ver lo siguiente:

En este directorio se encuentran los contenedores de minutos originales comprimidos tal y como los entrega el servidor de comercio. Se puede ver que, por término medio, los contenedores de minutos ocupan unos 15 mb a lo largo de 1 año. Se trata de un formato de compresión muy específico para minimizar el tráfico.

El directorio de la caché contiene las bases de datos de trabajo que han sido comprimidas según las necesidades:


Como puede ver, desde 1993 los minutos (en realidad, hasta 1999 se utilizan partes del día en lugar de minutos) son unos 231 megabytes sin comprimir y listos para usar. Los relojes adyacentes sólo ocupan 4 mb.

Si se multiplican 52 bytes por 4 400 000 barras, se obtienen unos 230 MB. Un simple indicador de Media Móvil con un buffer de trabajo (doble) requerirá 4 400 000 * 8 = 35 megabytes de memoria.


Cuando el operador establece "Máximo de barras en la ventana" en la configuración del terminal, especifica explícitamente "no más del número especificado de barras que se cargan en la memoria para trabajar". Si se carga todo el historial de minutos (trabajamos en el gráfico M1), se aplican algunos indicadores pesados de varios buffers y se utilizan Asesores Expertos, el coste de memoria puede ser significativo. Y no podemos pensar "trabajo con una ventana y veo 500 barras, así que puedo descargar el resto". No se pueden descargar: los indicadores, los Asesores Expertos, etc. viven y trabajan con estos datos.

Hemos implementado un modelo de caché muy eficaz, cuando los datos y los indicadores se almacenan siempre en un solo número. Esto significa que la apertura de 5 ventanas en EURUSD:M1 no requiere la creación de 5 buffers de datos, y varios indicadores, absolutamente iguales en parámetros, tienen una sola copia. Cuando los indicadores o los gráficos no se utilizan durante mucho tiempo, sus datos se liberan automáticamente y se recuperan cuando es necesario.

Además, tenemos una versión de 64 bits del terminal cliente, que puede manejar una gran cantidad de historial sin ninguna limitación. Esta versión se publicará tan pronto como terminemos de probar MQL5 en un entorno de 64 bits.