¿Con qué sustituir OnTradeTransaction() en mql4? - página 7

 
Alexey Viktorov:

En ese caso, sería difícil vivir sin la biblioteca de Artem.

¿Aprenderá la biblioteca telepáticamente la información que necesita? Igualmente, agitará las órdenes 86400 veces.

 
Igor Makanu:

¿qué hacer con "no añadir a la matriz" - me refiero a borrar los datos de las órdenes de mercado que faltan?

Pero para evitar sobrecargar el código con cálculos, deberíamos al menos establecer un indicador de eventoOnTradeTransaction, que debería levantarse al colocar o cerrar forzosamente una orden - ya sabes qué tipo de operación quieres hacer, ¿no? - ¿Por qué no informar directamente a la máquina? en lugar de intentar que la máquina ejecute todos los datos cada tick / o cada 10 ms


ZS: otro hilo con una petición de solución a un problema a falta de una base de conocimientos, nada personal, pero esto ya se está convirtiendo en algo habitual, se mire como se mire, hay que estudiar material adicional, sólo discutir el problema con personas afines es sólo discutir el problema con personas afines al mismo nivel de conocimientos ((((

Con "no añadir al array"... Aunque no existe la función ArrayRemove() en mql4, pero su principio se basa en copiar un array dentro de sí mismo con una mayor reducción de tamaño por el número de índices eliminados. Y en lugar de OnTradeTRansaction() he dicho repetidamente en este hilo que no hay alternativa a la biblioteca de Artem y no se espera.
 
Igor Makanu:

Al menos debería hacer una bandera del eventoOnTradeTransaction que se establezca al colocar o cerrar forzosamente una orden

Lo he pensado, pero los diferentes EAs tienen diferentes funciones y nadie los va a combinar.

 
Aleksandr Volotko:

¿Aprenderá la biblioteca telepáticamente la información que necesita? Sacudirá las órdenes 86400 veces así.

Puede comprobarlo en el hilo de discusión del artículo. Y no seré yo quien responda. Sólo intenté usarlo... Y empieza por releer los posts de Artem. Preste atención a este mensaje.

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

¿Cómo sustituir OnTradeTransaction() en mql4?

las propiedades de las órdenes y las posiciones. El símbolo se codifica en la suma de los códigos de caracteres que componen su nombre. Pero entonces sólo el ciclo completo. Cuando se cambia la suma de hash - ver lo que pasó.


 
Aleksandr Volotko:

Sí, lo he pensado, pero diferentes EAs tienen diferentes funciones y nadie las va a combinar, se puede escribir un archivo-flag en sammon, incluso puede que lo haga, ¿por qué no buscar una alternativa?

aquí hay una alternativahttps://www.mql5.com/ru/docs/standardlibrary/datastructures

o utilizar el material de los artículos de Artem, que en cualquier caso seguirán basándose en las "Colecciones de datos" SB


No importa cómo se mire, pero el nuevo material tendrá que ser estudiado para al menos entender las capacidades de MQL, y sólo sentarse en una matriz de 10 años y reducir el tiempo de análisis OrderTotal() .... no resolverá el problema actual y los nuevos problemas en el futuro de todos modos


Si estamos hablando de varios EAs y el intercambio de datos - bandera de colocación de órdenes, etc., entonces no hay una solución universal - hay muchas variaciones sobre este tema; en general, este es un punto doloroso para mí, he utilizado una gran cantidad de herramientas preparadas, pero no obtuve ningún éxito, yo preferiría utilizar un servidor de base de datos y el intercambio de datos a través de ella, sería fiable y práctico, por desgracia, los desarrolladores de MT han ignorado este problema durante muchos años sobre la base de su comprensión de la funcionalidad necesaria para los usuarios

 
Alexey Viktorov:

Puedes comprobarlo en el hilo de discusión del artículo. Y no seré yo quien responda. Sólo intenté usarlo... Y empieza por releer los posts de Artem. Preste atención a este mensaje.

Todo esto lleva a que se sobrepasen los pedidos, y no se quiere hacer eso 100500 veces al día. Y no importa - voy a contar el volumen de posición agregada en un bucle, o la biblioteca hash suma de las propiedades de orden.

 
Igor Makanu:

la alternativa eshttps://www.mql5.com/ru/docs/standardlibrary/datastructures

o utilizar el material de los artículos de Artem, que, por cierto, seguirán basándose en las "Colecciones de datos".


No importa cómo se mire, pero el nuevo material tendrá que ser estudiado para al menos entender las capacidades de MQL, y sólo sentarse en una matriz de 10 años y reducir el tiempo de análisis OrderTotal() .... no resolverá el problema actual y los nuevos problemas en el futuro de todos modos

No creas que soy completamente estúpido, es sólo que a veces sólo tienes que trabajar con lo que está disponible, y hay muy poco disponible para usar

 
Vitaly Muzichenko:

¿Cómo es eso?

StringToShortArray()
ShortArrayToString()
 
Artyom Trishkin:
StringToShortArray()
ShortArrayToString()

Supongo que no soy lo suficientemente inteligente).

¿Cómo lo aplico?

static __Total = -1;
int OT=OrdersTotal();
  if(OT!=__Total)
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __Total=OrdersTotal(); // запомним количество
   }

Sólo tengo un problema y es muy raro, hoy lo he encontrado por primera vez en un par de años, puede que lo haya visto antes, simplemente no me he dado cuenta

Foro de negociación, sistemas de negociación automatizados y pruebas de estrategias

¿Cómo sustituir OnTradeTransaction() en mql4?

Vitaly Muzichenko, 2020.01.27 15:32

Hoy me he dado cuenta de que una posición se ha cerrado y la otra se ha abierto sobre la otra y casi al mismo tiempo entre los ticks.

Al final OrdersTotal() se quedó en 8. La lógica del Asesor Experto se confundió - no ha recalculado los nuevos datos


 

Ya está, la solución es sencilla: introducir otra comprobación de cambios en el historial, así no se perderá nada y funcionará al 100%

static __OTotal = -1;
static __HTotal = -1;
int OT=OrdersTotal();
int HT=OrdersHistoryTotal();
  if(OT!=__OTotal || HT!=__HTotal) // если изменилось - выполняем
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __OTotal=OrdersTotal(); // запомним текущее количество
     __HTotal=OrdersHistoryTotal(); // запомним количество в истории
   }
Razón de la queja: