Errores, fallos, preguntas - página 2081

 
Anatoli Kazharski:

Este problema aparece en todos los indicadores. Incluidos los de la entrega estándar. Por ejemplo, Moving Average:

//---

Y después de que se formen varias barras:

//---

Intenta reproducirlo en tu entorno. Necesito ver si soy el único con este problema.


Sí, lo confirmo:

Terminal        MetaTrader 5 x64 build 1687 started (MetaQuotes Software Corp.)
Terminal        Windows 10 (Build 16299), x64 based PC, IE 11.00, UAC, Intel Core i3-3120 M  @ 2.50 GHz, RAM: 4473 / 8077 Mb, HDD: 330591 / 475588 Mb, GMT+02:00
Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

animación:

Los indicadores no se desplazan

 
Los comentarios que no son relevantes para este tema se han movido a "BUY_LIMIT, ORDER_TIME_DAY".
 
Vladimir Karputov:

Sí, lo confirmo:

animación:

Gracias. Se ha añadido un enlace a su mensaje a la aplicación de servicedesk como adenda. Necesitamos una solución de emergencia para este error, todo el trabajo se ha detenido.
 

fxsaber:

Ambos terminales tienen dos pestañas: Comercio y Correo. Quiero que "Trading" esté activo todo el tiempo. Pero cuando llega un correo electrónico interno (por ejemplo, un relleno parcial) del corredor, la pestaña cambia a "Correo".

¿Cómo puedo apagar esta cosa tan desagradable? Pues bien, no debería haber una notificación tan intrusiva, y más aún a los correos electrónicos del broker absolutamente ordinarios, donde informa automáticamente sobre la ejecución de la orden decenas de veces en un día. No entiendo por qué a veces cambia a "Correo" y a veces no.

¿Cómo puedo apagarlo? Nunca leo la pestaña "Correo electrónico", ya que es Spam. Por decirlo suavemente, es molesto ver que la interfaz gráfica de usuario del terminal reaccione así ante el Spam.


Creo que puedo usar WinApi para implementar una función para cambiar a la pestaña deseada: comercio, balance, lo que sea.
Intenta implementarlo tú mismo, o pídelo a autónomos, espero que todavía haya gente capacitada.

 
Sergey Dzyublik:

Creo que usando WinApi, se puede implementar una función para cambiar a la pestaña deseada: comercio, saldo, lo que sea.
Intenta implementarlo tú mismo, o pídelo a Freelancer, espero que todavía haya gente capacitada allí.

Yo mismo he practicado esta perversión. Quiero una interfaz gráfica de usuario fácil de usar.

 
Aleksey Vyazmikin:

Se ha quedado sin memoria otra vez...

Aunque todavía hay 7 gigabytes de RAM disponibles. ¿Qué demonios es esto?

Abra un ticket con el Servicio de Atención al Cliente. Incluya el experto y los ajustes de optimización.

+ describir el sistema operativo, la tasa de bits, la configuración del sistema.

 
Alexey Da:

Abra un ticket con el Servicio de Atención al Cliente. Adjunte la configuración de expertos y de optimización.

+ describir el sistema operativo, la tasa de bits, la configuración del sistema.


No sé cómo reproducir todo esto - la semana pasada ese mensaje aparecía todos los días, y el EA no funcionaba en absoluto. Y el otro día con la optimización... entonces todo funcionó después de cerrar todos los programas.

¿Puede ser un conflicto entre programas? Me he dado cuenta de que el fallo siempre estaba ahí cuando el navegador Opera estaba abierto.

 

En este hilo he descubierto una cosa interesante sobre el funcionamiento del comando Comment() en MT4 y MT5. En MT5 este comando se ejecuta ~2000 veces (!!!) más lento que en MT4.

Aquí está el código de prueba que se ejecuta en las dos plataformas:

#property script_show_inputs
#include <Canvas\Canvas.mqh>

input uint   FontSize=12;                                   // размер шрифта
input uint   Count=1000;                                    // размерность цикла
input ENUM_COLOR_FORMAT format=COLOR_FORMAT_ARGB_NORMALIZE; //Способ обработки цвета

void OnStart()
  {
   CCanvas Text;
   ulong ColorScreen=ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);

   Text.FontSet("Arial",FontSize);
   string str="Необходимо подождать.Выполняется проход цикла №: = ";
   int H=Text.TextHeight(str);
   int W=Text.TextWidth(str+"00000");
   if(!Text.CreateBitmapLabel(0,0,"FONT",2,130,W,H,format)) Print("Error creating canvas: ",GetLastError());

   ulong t1=1,t2=1,t0;
   uint j=0;
   color clr=(color)ARGB(255,255^GETRGBR(ColorScreen),255^GETRGBG(ColorScreen),255^GETRGBB(ColorScreen));
   t0=GetMicrosecondCount();
   for(j=0;j<Count;j++)
     {
      Comment(str+IntegerToString(j));
      if (IsStopped()) break;
     }
   t1=GetMicrosecondCount()-t0;

   t0=GetMicrosecondCount();
   for( j=0;j<Count;j++)
     {
      Text.Erase((color)ColorScreen);
      Text.TextOut(0,0,str+IntegerToString(j),clr);
      Text.Update();
      if (IsStopped()) break;
     }
   t2=GetMicrosecondCount()-t0;
      Text.Erase((color)ColorScreen);
      Text.TextOut(0,0,"Время Comment = "+IntegerToString(t1)+" Время Canvas = "+IntegerToString(t2),clr);
      Text.Update();
      Sleep(30000);
     
   Text.Destroy();
   Comment("");
  }
//+------------------------------------------------------------------+

¿Esto está bien?

Archivos adjuntos:
 
Nikolai Semko:

En este hilo he descubierto una cosa interesante sobre el funcionamiento del comando Comment() en MT4 y MT5. En MT5 este comando se ejecuta ~2000 veces (!!!) más lento que en MT4.

Aquí está el código de prueba que se ejecuta en las dos plataformas:

¿Está bien?

Sí, es cierto y correcto.

En MT4, la función de comentario simplemente cambia el cuadro de texto de comentario interno sin intentar mostrarlo en el gráfico. Es decir, el comentario aparecerá en algún momento de la siguiente representación regular del gráfico, pero el cambio del comentario en sí no hace que el gráfico se redibuje. Si cambia el comentario rápidamente, su cambio no será visible en el gráfico.

En MT5, la función de comentario provocará explícitamente el redibujado del gráfico, ya que se da prioridad a la visualización del comentario en el gráfico. De lo contrario, la función es inútil.

Esa es exactamente la diferencia.


Si en MT4 se pone ChartRedraw() a la fuerza después de llamar a Comment, el comportamiento seguirá sin ser el mismo que en MT5. ChartRedraw() en Metatrader 4 ignora el valor del comentario y decide por sí mismo si el gráfico debe ser actualizado desde el último frame o no. Por supuesto, en ausencia de cientos de cotizaciones por segundo, lo que provocaría una desactivación de los datos del gráfico, ChartRedraw decide "por qué dibujar un gráfico sin cambios" y se salta el dibujo del marco.

Metatrader 5 también tiene el mismo sistema, pero hay muchos más casos en los que la representación incondicional tiene prioridad.

Los terminales son aplicaciones gráficas y pueden proporcionar cientos de imágenes por segundo y funcionar en modo de visualización económica en aras del rendimiento.


De ahí las conclusiones adicionales al ejecutar las pruebas de referencia:

  • no se puede considerar que una llamada a ChartRedraw sea un verdadero ChartRedraw

  • siempre hay que saber y probar las afirmaciones "por qué se va a redibujar un gráfico" y "si invalido la imagen interna del mercado, para que el terminal decida redibujar el gráfico".

  • no se deben sacar múltiples conclusiones en MT5 durante las pruebas de rendimiento, siempre se debe pensar en cómo se está afectando a la representación

  • MT5 tiene un sistema más correcto de cambio de objetos en el gráfico y es necesario entender claramente las consecuencias de los comandos de lectura/escritura de la mezcla.
    se recomienda no mezclar los comandos de lectura/escritura, y hacer la lectura y la escritura masiva por separado.

  • El redibujado frecuente de los gráficos en las pruebas de referencia hace que los resultados dependan en gran medida de la tarjeta gráfica.
    de hecho, algunas pruebas pueden acabar poniendo a prueba la tarjeta gráfica en lugar de los algoritmos o las funciones. la prueba en un ordenador portátil y en un ordenador de sobremesa puede mostrar resultados varias veces diferentes simplemente por una tarjeta gráfica 3-5 veces más lenta

Estos errores los comete todo el mundo.

 
Renat Fatkhullin:

Sí, es cierto y correcto.

Muchas gracias por la respuesta detallada. Eso es más o menos lo que pensé. Todo tiene sentido.