Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Puede haber una opción más rápida. Pero un paso a la izquierda en la condición de lo que hay que contar, y la lógica puede tener que cambiar considerablemente. No es fácil, en general.
No es caché, es indexación. Aquí está el almacenamiento en caché (parte del código):
El código fue escrito apresuradamente y hay mucho que refinar, dado el frecuente ArrayResize, pero actualiza exactamente la caché, ordenada por Closed. Si quieres buscar más tarde, utiliza tu propio índice. Pero sólo hay que actualizar una pequeña parte cada vez.
No recuerdo por qué"12*3600" está ahí, no creo que todas las ofertas hayan sido emitidas para mí.
No es un caché, es un índice.
Por favor, lea atentamente.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
MT5 y Speed en acción
fxsaber, 2020.08.28 21:10
El MQL5 puro es 100 veces más lento que el caché parcial (sólo HistorySelectByPosition).
Aquí está el almacenamiento en caché (parte del código):
El código fue escrito apresuradamente y tiene algunas cosas que mejorar teniendo en cuenta los frecuentes ArrayResize, pero actualiza la caché ordenada por Closed. Si quieres buscar más tarde, utiliza tu propio índice. Pero sólo hay que actualizar una pequeña parte cada vez.
Esto es exactamente un ejemplo de ahorro de historia frontal sin los trucos reales. Incluso en MT4Orders el caché parcial se hace con un margen de cinco segundos...
No recuerdo por qué"12*3600" está ahí, creo que no se me emitieron todos los oficios.
Siempre hay que poner INT_MAX.
Desde el punto de vista de la arquitectura, el almacenamiento en caché completo requiere mucha reflexión. Hay muchas trampas.
Realmente no hay nada complicado. Puede hacer un muestreo con horas de antelación, por ejemplo, para todos los pedidos que puedan aparecer en el historial de forma retroactiva (algo muy extraño, por cierto).
Este es sólo un ejemplo de ahorro de historia de frente, sin trucos en tiempo real. Incluso en MT4Orders el caché parcial se hace con un margen de cinco segundos...
Siempre hay que poner INT_MAX.
No entiendo el sentido del cambio. Como si existiera una marca de tiempo actual, quiero ponerme en relación con ella y es extraño que haya que especificar un tiempo que no existe. Quiero una explicación lógica.
Mi caché, por cierto, funciona en cuentas reales con más de 10k operaciones.
Y los principales frenos en el código hasta ahora son las funciones de red.
En la última beta 2588, la función HistorySelect está muy bien cacheada y casi siempre (excepto la primera vez) es gratuita.
Es probable que realicemos otras mejoras para el lanzamiento.
Como he explicado antes, en MT5 no hay ningún coste adicional en la creación automática de instantáneas de mercado para cada EA antes de cada evento como se hacía en MT4. Esto reduce los retrasos y permite que los robots funcionen más rápido. Cada promotor pide exactamente lo que necesita.
Por lo tanto, usted debe entender claramente que el enfoque de "llamar a HistorySelect en toda la historia, y luego inmediatamente hacer otra selección de HistorySelectByPosition" matará a los cachés creados previamente de la historia. Esto es un tiro en el pie.
Después del lanzamiento comenzaremos un gran trabajo para añadir nuevas funciones MQL5 más eficientes y abrir estructuras de datos de órdenes/comercio nativas, para poder simplificar y acelerar el algotrading.
En la última beta del 2588, la función HistorySelect está muy bien cacheada y casi siempre (excepto la primera vez) está libre.
Resultado.
En cada garrapata hay un problema.
ZY instalado Win10, LatencyMon muestra que todo está bien.
Después del lanzamiento, empezaremos a trabajar mucho para añadir nuevas funciones MQL5 más eficientes y abrir estructuras de datos de órdenes/operaciones nativas para que el trading algorítmico se pueda simplificar y acelerar.
MqlDeal, MqlOrder y MqlPosition serían geniales. Incluso podría ser más sencillo.
De momento, veo que en el 99% de los casos sólo deberíamos utilizar HistorySelect(0, INT_MAX). Intenta no utilizar las otras opciones.
Si tengo cientos de miles de pedidos en mi historial, ¿también será más rápido que tomar el historial de última hora?
Entonces, ¿tengo que repasar toda esta historia? No tiene sentido.
Si tengo cientos de miles de pedidos en mi historial, ¿también será más rápido que tomar el historial de última hora?
Sólo queda la variante 0-INT_MAX en los robots de combate. Dejó de notar los retrasos.