MetaEditor. Problemas y soluciones. - página 6

 
1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

Hola! Después de instalar MQL5 he encontrado algunos defectos en la visualización de los textos del programa durante la edición. Cuando selecciono el cursor, la posición del texto cambia, aparecen nuevos caracteres en el teclado no en la posición del cursor. Reinstalar el software no ayuda. ¿Cómo puedo solucionar el problema?



 
¿Pueden decirme si es posible utilizar el libro de órdenes en el trading (EA)?
 
Liric86:

1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

Hola! Después de instalar MQL5 he encontrado algunos defectos en la visualización de los textos del programa durante la edición. Cuando selecciono el cursor, la posición del texto cambia, aparecen nuevos caracteres en el teclado no en la posición del cursor. Reinstalar el software no ayuda. ¿Cómo se puede resolver el problema?

El tipo de letra que ha seleccionado no es monocolor.

Por favor, cambie la configuración de su fuente a Courier New con un tamaño de fuente de 10 puntos.

 
todem:
¿Me pueden decir si se puede utilizar el libro de órdenes en el comercio (por EA)?

Se puede, pero no en el probador de estrategias comerciales.

Por el momento hay pocos (está Alpari en modo de prueba) que ofrezcan pilas de divisas.

 
Lo que falta en el depurador es un contador de pasos. Y un parámetro preestablecido para realizar la primera rotura en un paso determinado.
 
Urain:
Lo que falta en el depurador es un contador de pasos. Y un parámetro preestablecido para realizar la primera rotura en un paso determinado.

Actualmente, los saltos no son condicionales, pero es posible saltarse esta limitación utilizando DebugBreak()
Документация по MQL5: Общие функции / DebugBreak
Документация по MQL5: Общие функции / DebugBreak
  • www.mql5.com
Общие функции / DebugBreak - Документация по MQL5
 
mql5:
Las rupturas son actualmente incondicionales pero podemos trabajar alrededor de esta limitación usando DebugBreak().

Todo eso es así, pero me enfrenté a una situación en la que hay muchas llamadas de una clase universal descrita en un archivo a enlazar. Y diferentes condiciones provocan llamadas a celdas de array inexistentes de esta clase. El programa en sí contiene miles de pasos del algoritmo, por lo que es muy difícil rastrear en qué paso se produce un fallo utilizando DebugBreak()+F11.

Por supuesto, salí de la situación a la vieja usanza (con huellas y conjeturas lógicas). Pero el coste de esto, muchas horas de trabajo. El principal problema no estaba en qué función daba un error, sino en qué función no calculaba correctamente el valor que luego daba lugar a un error en otra función. Es decir, no necesitábamos el punto de error en sí, sino saber lo que estaba ocurriendo justo antes de él.

Por eso necesitamos un trazador interno paso a paso y la posibilidad de ir al paso especificado inmediatamente después de un nuevo inicio (habiendo rebobinado todos los anteriores).

 
Me refería a un diseño como este:

if(step==123124) DebugBreak();
 
mql5:

Me refería a esa construcción:

if(step==123124) DebugBreak();


Sí, a eso me refiero también. Abarcarlo en cada línea de 5.000 líneas de código es un problema. Y la localización intermedia no funcionó porque la referencia está constantemente saltando entre inludes, así que la primera estimación aproximada para una localización más precisa no fue posible.

He descrito esta sobrecarga al principio del expediente:

ulong cntDebugBreak=0;
void DebugBreak(ulong step)
  {
   if(step>=cntDebugBreak){cntDebugBreak++;DebugBreak();}
   else cntDebugBreak++;
  }

pero si lo llamamos de forma invisible (en el depurador), antes de cada expresión sería muy chulo.

El PS ha corregido el código.

 

MetaEditor 4 tenía una ingeniosa solución para colocar la ventana de ayuda en la ventana de herramientas, la ayuda estaba siempre a mano justo en la ventana de edición de texto. ¿Podría colocarse la ventana de ayuda también en el MetaEditor 5?

Razón de la queja: