Características del lenguaje mql5, sutilezas y técnicas - página 191

 
template <typename T>
void func(const T &IntOrArray) {} 

void OnStart()
{
  int a=0;
  char b[3]={};
  func(a);
  func(b);	//'b' - parameter conversion not allowed
}

¿Es un error o un chip que arroja este error?

C++ se lo come bastante bien. Y las matrices en MQL tienen sus propias matrices. Así que algunos std::array podrían ser manejados por esta construcción también.

 
traveller00:

¿Es un error o un fallo que arroje este error?

No es un error. Una sobrecarga de la plantilla sólo ayudará.

 

¿Hay alguna forma de averiguar rápidamente que no hay historial para un instrumento (ya sea localmente o en el servidor)?

Cualquier solicitud de CopyXXX espera 30 segundos para recuperar los datos, y tarda un tiempo excesivo en recorrer un gran número de instrumentos.

Para algunas herramientas, ayuda comprobar si hay una oferta (está vacía), pero no para todas las herramientas.

Puede comprobarlo en ICMarkets-MT5, herramientaWheat_U0

 
Andrey Khatimlianskii:

¿Hay alguna forma de averiguar rápidamente que no hay historial para un instrumento (ya sea localmente o en el servidor)?

Cualquier solicitud de CopyXXX espera 30 segundos para recuperar los datos, y tarda un tiempo excesivo en recorrer un gran número de instrumentos.

Para algunas herramientas, ayuda comprobar si hay una oferta (está vacía), pero no para todas las herramientas.

Puede comprobarlo en ICMarkets-MT5, instrumentoWheat_U0.

Esto ya se ha escrito muchas veces y aquí está lo primero que he encontrado https://www.mql5.com/ru/forum/285631/page35#comment_9431199

Alternativamente estos símbolos tienen Ask y Bid == 0

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
  • 2018.11.20
  • www.mql5.com
26 октября 2018 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

¿Hay alguna forma de averiguar rápidamente que no hay historial para un instrumento (ya sea localmente o en el servidor)?

Cualquier solicitud de CopyXXX espera 30 segundos para recuperar los datos, y tarda un tiempo excesivo en recorrer un gran número de instrumentos.

Para algunas herramientas, ayuda comprobar si hay una oferta (está vacía), pero no para todas las herramientas.

Puede comprobarlo en ICMarkets-MT5, instrumentoWheat_U0

en el indicador no esperará el resultado de CopyXXX

como una opción en el temporizador en el indicador para procesar CopyXXX y llamar a este indicador desde EA

 
Vladimir Pastushak:

Se ha escrito sobre esto más de una vez, y esta es la primera que encontré https://www.mql5.com/ru/forum/285631/page35#comment_9431199

Como variante de estos símbolos Ask y Bid == 0

Sobre la oferta cero escrita a la vez, a veces no es cero.


Igor Makanu:

en el indicador no esperará el resultado de CopyXXX

una variante de temporizador en el indicador para procesar CopyXXX y llamar a este indicador desde EA

¡Eso sí que es una idea! Gracias, lo probaré.

 
fxsaber:

La razón por la que esto ocurre. Después del primer OrderSend, aparece una orden de mercado y si un nuevo tick llega antes de su ejecución, no hay posición todavía y se realiza el segundo OrderSend.

Debido a esto, un patrón aparentemente normal de MT5no funcionará correctamente y como consecuencia, la mayoría de los Asesores Expertos de MT5 en codobase. Al mismo tiempo, la plantilla casi idéntica de MT4 seguirá funcionando sin problemas.

La aparentemente buena idea de PositionsTotal se ve algo ensombrecida por la necesidad en MT5 de analizar también OrdersTotal para las órdenes de mercado.

¡Tenga cuidado!

Gracias por señalarlo. Tenía eso en mente. Pero ahora ha llegado el momento de escribir un EA, y me he preguntado si tiene sentido comprobar las peticiones enviadas al servidor. Hipotéticamente, lo has descrito correctamente, pero de hecho el servidor responde rápidamente a las peticiones, y tal condición no se producirá en la mayoría de los casos (99%, creo). Pero la velocidad del algoritmo se verá afectada cada vez. ¿Qué cree que es más importante?
 
Vasiliy_Saharov:
Gracias por señalarlo. Lo tenía en mente. Pero ahora he llegado a escribir un Asesor Experto y me preguntaba si tiene sentido comprobar las peticiones enviadas a un servidor. Hipotéticamente, lo has descrito correctamente, pero de hecho el servidor responde rápidamente a las peticiones, y tal condición no se producirá en la mayoría de los casos (99%, creo). Pero la velocidad del algoritmo se verá afectada cada vez. ¿Qué le parece más importante?

Entre en el mercado una vez con 2 lotes en lugar de 0,1, y la respuesta es inmediatamente obvia )

 
Andrey Khatimlianskii:

Entre en el mercado una vez con 2 lotes en lugar de 0,1, y la respuesta es inmediatamente obvia )

Si usted tiene un algoritmo para hacer 0,1 lotes, entonces hay una probabilidad de hacer 0,1 dos veces, y como creo que esta probabilidad tiende a cero, y tres veces, creo que es imposible. Y mucho menos 20 veces. Al fin y al cabo, estamos hablando de cosas de la aplicación. Como regla general, el servidor responde probablemente en el límite de 10minseg (¿es así? No estoy seguro). En su opinión, ¿cuál es la probabilidad de conseguir una segunda transacción? ¿Hace esta comprobación usted mismo? ¿Sucede que el servidor puede tardar en responder?
 
Vasiliy_Saharov:
Si tienes un algoritmo para concluir 0,1 lote, entonces hay una probabilidad de 0,1 dos veces, y como creo que esta probabilidad tiende a cero, y tres veces, creo que es imposible. Y mucho menos 20 veces. Al fin y al cabo, estamos hablando de cosas de la aplicación. Como regla general, el servidor responde probablemente en el límite de 10minseg (¿es así? No estoy seguro). En su opinión, ¿cuál es la probabilidad de conseguir una segunda transacción? ¿Hace usted mismo esta comprobación? ¿Sucede que el servidor puede tardar en responder?

Según las estadísticas: unas 200-300 operaciones al día. Incluso con las comprobaciones normales, pero sin comprobaciones realmente complicadas, una media de 2-3 veces a la semana he pillado una apertura de lote doble. Calcule la probabilidad y evalúe si necesita o está preparado para aceptar dicha probabilidad. Personalmente, he hecho mis comprobaciones al máximo.