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

 
fxsaber:

Surge la necesidad de transferir por referencia sin modificación - ya sea por la velocidad, o el objeto.

Si no hay necesidad de pasarlo para modificarlo, entonces puedes ignorar todo lo que he escrito).

¿Tienes un ejemplo real en MQL5 cuando se produce este problema?

Se echa en falta un verdadero ejemplo de comodidad.

He descrito todo con detalle, tanto en palabras como en código. Si por alguna razón te parece incomprensible, es que obviamente no te enfrentas a los problemas descritos, y te felicito por ello. Buenas noches, querido amigo).

Mi post estaba probablemente destinado más a los planificadores de hardcore, y a los amantes del control de tipos.

 
Alexey Navoykov:

A menudo es necesario pasar una variable como argumento de plantilla por referencia para modificarla. Sin embargo, la especificación de plantillas de C++ existente no permite, por desgracia, especificar explícitamente la no-constancia del argumento, como ocurre en las funciones normales:

En primer lugar, C++ simplemente tiene capacidades de plantillas mucho más ricas, y en segundo lugar, C++ tiene SFINAE, que te permite desordenar las cosas tanto que te pone los pelos de punta.

Eso es lo que puede parecer:

template<class T>
    static void const_check(T & t){
        BOOST_STATIC_ASSERT(! boost::is_const<T>::value);
    }
Es lo mismo que con un puntero. No puedes especificar directamente que el tipo que quieres no sea un puntero, pero puedes hacerlo a través de una especialización no compilada.
 
TheXpert:

esto podría ser así

Por lo que tengo entendido, provoca un error de compilación en el cuerpo de la función (que se puede llamar de todos modos), pero no afecta al proceso de selección de plantillas. Hay que manipular con el tipo del valor de retorno de la función. Pero no importa. Pero todo esto se implementa allí no sólo a través de plantillas, sino también a través del especificador decltype, que está ausente en MQL y sigue siendo necesario.

 
Alexey Navoykov:

Mi post estaba probablemente dirigido más a los templadores empedernidos y a los amantes del control de tipo nerd.

Pensé que después de escribir TypeToBytes me había vuelto más competente en materia de plantillas.

 
fxsaber:

Pensé que después de escribir TypeToBytes me había vuelto más competente en materia de plantillas.

Ahora me doy cuenta de que la frase "creador de patrones duro" en relación con MQL suena irónica. Es como un "programador MQL certificado". ))

El problema es que no hay nada especialmente difícil de hacer en las plantillas, y no sólo por la falta de funcionalidad adicional del lenguaje, sino también por el funcionamiento incorrecto del existente. Constantemente me encuentro con bichos.

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

Slava, 2018.09.19 06:37

Para colocar un objeto por encima de todos los demás, independientemente del orden, primero hay que hacerlo invisible en todos los plazos y luego volver a hacerlo visible
 

¡Buenas tardes!

La documentación indica explícitamente que mientras se ejecuta el manejador OnTick https://www.mql5.com/ru/docs/runtime/event_fire#newtick

está inactivo y no se manejan nuevos ticks. ¿Es lo mismo paralos manejadores OnBookEvent, OnTimer, OnChartEvent o no?

La pregunta está causada por el hecho de que en todos los manejadores anteriores uso mi propio manejo de ticks.

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Сразу же после того, как клиентский терминал загрузит программу (эксперт или пользовательский индикатор) и запустит процесс инициализации глобальных переменных, будет послано событие Init, которое обрабатывается функцией OnInit(), если она есть. Это событие также генерируется после смены финансового инструмента и/или периода графика, после...
 
Andrey Kotrin:

¡Buenas tardes!

La documentación indica explícitamente que mientras el manejador OnTick seejecuta https://www.mql5.com/ru/docs/runtime/event_fire#newtick

¿Es lo mismo para los manejadores OnBookEvent, OnTimer, OnChartEvent o no?

La pregunta está causada por el hecho de que todos los manejadores anteriores utilizan su propio manejo de ticks.

No es correcto.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bibliotecas: HistoryTicks

fxsaber, 2018.04.10 17:53

El EA de combate en un símbolo de alta frecuencia (200-350 ticks por minuto) con órdenes comerciales frecuentes (varias veces por minuto) y un ping de 100 ms en modo estándar pierde ~5% de los ticks.

En el modo HistoryTicks no hay pérdidas.


No dude en utilizar OnTick multidivisa en MT5.

 
fxsaber:

Definitivamente no es correcto.


ZZY Puede utilizar con seguridad OnTick multidivisa en MT5Z

Gracias por el enlace. En realidad, el problema no está en la pérdida de ticks, sino en la posible actualización parcial de la información al procesar la actual. Intenté resolver un problema similar cuando se comunica entre robots que operan simultáneamente

Como el robot está orientado a un servicio de hosting que utilizadllsexternos y por lo tanto es imposibleel mutex, he utilizado la emulación GlobalVariableSetOnCondition.

 
Andrey Kotrin:

Gracias por el enlace. En realidad, el problema no está en la pérdida de ticks, sino en la posible actualización parcial de la información al procesar la actual. Tuve un problema similar al organizar la comunicación entre los robots que operan simultáneamente

Como mi robot está orientado a un servicio de hosting que utilizadlls deterceros y por tanto es imposibleel mutex, he utilizado la emulación de GlobalVariableSetOnCondition.

Tal vez puedas utilizar Recursos para transferir datos.