Problema con MT4 al abrir una operación y volver a cerrarla inmediatamente - página 4

 

Es un problema complicado debido a las dificultades para encontrar un patrón consistente.

Este problema sólo se produce a veces y no puede reproducirse de forma consistente.

He considerado la sugerencia de los Números Mágicos, y aunque inicialmente era una posibilidad, nuevas observaciones sugieren que no es probable.

Me estoy rasgando las vestiduras y espero que alguien más haya visto este problema antes.

 
peterc005:

He considerado la sugerencia de los Números Mágicos, y aunque inicialmente era una posibilidad, nuevas observaciones sugieren que no es probable.

¿Qué observaciones en detalle son las que descartan definitivamente que un EA diferente cierre operaciones que no le corresponden? Hay muchos EAs por ahí que permiten la entrada de un número mágico pero internamente no lo usan o peor aún lo usan a veces pero no siempre, sólo para ciertas condiciones de salida, sólo en algunas ramas de sus decenas de ifs anidados y bucles de iteración de órdenes duplicados.

Esta búsqueda en Google

"OrderSymbol() == Symbol()" -OrderMagicNumber

encontrará montones de ellos, empieza ya con el tercero de la lista (earlybird1, gridmaster_03, y así sucesivamente, todo el resultado de la búsqueda está lleno de ellos) dicen usar un número mágico pero internamente simplemente lo ignoran. Encontrarás muchos de ellos. Este patrón de código defectuoso está por todos los foros y termina copiado en muchos EAs.

 
7bit:

Se trata de un defecto en el producto vendido, no de una intención criminal.

Claro, defecto, no hay problema.

Sin embargo, "sabotaje" tiene un significado diferente, y apenas de naturaleza técnica, y no es un sustituto de la palabra "defecto".

Estoy seguro de que se puede disculpar a aquellos cuya primera lengua no es el inglés.

 
blogzr3:

Sin embargo, "sabotaje" tiene un significado diferente, y apenas de naturaleza técnica, y no es un sustituto de la palabra "defecto".

El defecto se manifiesta cuando un robot sabotea al otro. Dado que es el robot el que sabotea, no veo cómo un robot puede tener una intención. El robot es defectuoso y esto hace que sabotee otras operaciones. Nada más he escrito o querido decir. Y el vendedor está vendiendo productos defectuosos.
 
7bit:
El defecto se manifiesta como que un robot sabotea al otro. Dado que es el robot el que sabotea, no veo cómo un robot puede tener una intención. El robot es defectuoso y esto hace que sabotee otras operaciones. Nada más he escrito o querido decir. Y el vendedor está vendiendo productos defectuosos.

La mayoría de estos EAs parecen utilizar el indicador ZigZag, que es un probable culpable.

Cuando ocurrió la primera vez con un EA llamado "Caliber" descompilé el EA para ver el código. Era un EA cutre, pero no había nada que pareciera sospechoso y la lógica del Número Mágico parecía estar bien.

Añadí una lógica adicional para evitar que el AE operara más de una vez cada 90 minutos.

Como coincidencia, esto también mejoró el rendimiento general de la EA, porque tenía una tendencia a golpear un SL después de un corto tiempo, y luego entrar en un nuevo comercio en la misma dirección. Uno pensaría que con un SL de 30 pips sería un EA seguro, pero si golpea ese SL 4 veces en una hora no es bueno.

Restringir las operaciones de esta manera realmente mejoró el rendimiento del EA en las pruebas de espalda, y después de que envié los cambios de código al proveedor, más tarde publicaron una actualización con mis cambios.

De todos modos, en ese momento estaba probando mis cambios en Calibre en una cuenta Demo y ocurrió lo mismo. Pude ver cómo se abrían y cerraban las operaciones de inmediato. Era sólo una cuenta de demostración, así que me senté allí y vi cómo sucedía.

En este caso se trataba de una nueva cuenta demo con un solo EA en funcionamiento. Esto me hace pensar que es un problema de la plataforma MT4, más que un problema de MQL4.

Ahora conozco bien MT4 y MQL4 y puedo resolver la mayoría de los problemas por mí mismo. Este problema me tiene atascado y estoy pidiendo sugerencias a los demás.


 

apuesto a que es un problema de indicador/cálculo. tal vez una división por 0 que ocurre sólo en algunos casos específicos..

si puedes repetir el error en tester esto sería la mitad del alquiler.

Si puedes repetir el error en el probador, esto sería la mitad de la renta.

Después, si puedes repetir el error, no debería ser tan difícil encontrar el trozo de código que causa el error.


//z

 

Here is one of the older log files. The problem is obvious from the number of trades opened and closed.

En el archivo de registro se puede ver que MT4 y el corredor están recibiendo instrucciones para abrir y cerrar las órdenes, pero ¿por qué?

Archivos adjuntos:
 
peterc005:


Una cosa que noté en un archivo de registro para una fecha relevante fueron miles de errores que dicen:

09:36:58 HistoryBase: no hay suficiente memoria para 'EURCHF1' en AddTick()

09:36:58 Manejador de memoria: no puede asignar 160308896 bytes de memoria

En lugar de que el archivo de registro sea digamos de 10k, era de 7Mb

 
peterc005:

Aquí está uno de los archivos de registro más antiguos. El problema es obvio por el número de operaciones abiertas y cerradas.

En el archivo de registro se puede ver que MT4 y el corredor están recibiendo instrucciones para abrir y cerrar las órdenes, pero ¿por qué?

¿Tienes también el otro registro (el de la carpeta experts/logs)? Este contendrá el nombre del EA infractor.
 
zzuegg:

ya que sabes que EA estaba causando esto

Todavía no se sabe qué EA está causando esto.


Todo lo que hemos visto hasta ahora son los síntomas (las operaciones de varios EAs diferentes se cierran inmediatamente después de la apertura) y algunas teorías. Todavía no se sabe qué EA está cerrando realmente estas operaciones. Necesitamos los registros de los expertos en la carpeta experts/logs de los 4 terminales que cubren el mismo período de tiempo para hacer cualquier otra conclusión. Estos registros podrían apoyar o descartar mi teoría y, en última instancia, mostrarán quién está enviando todas las órdenes de cierre.