Errores, fallos, preguntas - página 2733

 
Geess:

Pasar sólo un array de uchar en lugar de un array de cadenas. Es más sencillo así.
Por ejemplo, puedes convertirlo de esta manera:

Funciona de la misma manera para MQL4 y MQL5

necesita devolver valores de dll a MQL, en cualquier caso, en el lado de MQL necesita preparar un buffer para recibir datos

En fin, es una explicación larga, ya lo he hecho todo, sólo quería hacer unas preguntas.

Gracias

 
Bugs MT5 (build 2402) problemas con la prioridad de la llamada de funciones sobrecargadas en el espacio de nombres:
1) cuando la función del espacio de nombres global está sobrecargada;
2) cuando la función del sistema está sobrecargada.

void func(){
   printf("1");
}
      
namespace A{
   void func(){
      printf("2");
   }
   bool OrderSend(const MqlTradeRequest &trader_request, MqlTradeResult &trade_result){
      printf("2");
      return true;
   }
      
   class B{
      public:      
      void test(){
         func();                             // PRINT: 1   Expected result: 2
         
         MqlTradeRequest request;
         MqlTradeResult result;
         OrderSend(request, result);         // Compile Error: 'OrderSend' - override system function. Expected result: 2
      }
   };
};

void OnStart(){    
   A::B b;
   b.test();
}
 

¡Buenos días!

Me pueden asesorar por favor, tengo un Sniper Expert Advisor, no funciona en la nueva build en MT4 Alpari, ¿hay alguna forma de arreglarlo? Ni siquiera está instalado en la carta. Funciona en la versión 1090.

Ya he registrado mi copia de MT4, pero no se conecta a Internet, dice "Versión antigua".

 
valera_nur:

¡Buenos días!

Me pueden asesorar por favor, tengo un Sniper Expert Advisor, no funciona en la nueva build en MT4 Alpari, ¿hay alguna forma de arreglarlo? Ni siquiera está instalado en la carta. Funciona en la versión 1090.

Pero el terminal MT4 no puede conectarse a Internet en la build 1090, dice "Versión antigua".

Si tienes el archivo fuente del Asesor Experto, aplícalo a Freelance. Ellos te ayudarán.

La mejor manera, por supuesto, es contactar directamente con el autor del Asesor Experto.

 

Escribí una dll para MQL5 que crea una tabla gráfica en una ventana en WinForms en .Net. Porté el código a las llamadas nativas para MQL4

midió la velocidad para evaluar la velocidad de actualización de 5 columnas y 5 filas de la tabla

  for(int j = 0; j < 3; j++)
   {
      uint start = GetTickCount();
      for(int i = 0; i < 100000; i++)
      {
         string s = (string)(i) + ";" + (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" +  (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n";
         TBL_FillAllTable(htbl, s);
      }
      uint time = GetTickCount() - start;
      PrintFormat("Цикл  %d время = %d ms", j, time);
   }

.....
void TBL_FillAllTable(int handle, string data, string  ColSeparator = ";", string RowSeparator = "\n")
{
#ifdef __MQL4__   refreshalldata(handle,data,ColSeparator,RowSeparator); #endif
#ifdef __MQL5__   SHARPTABLE::refreshalldata(handle, data,ColSeparator, RowSeparator); #endif
}
//+------------------------------------------------------------------+

MQL5:

2020.05.05 22:55:33.220 tbl_tst (EURUSD,H1) Ciclo 0 tiempo = 143563 ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) Ciclo 1 tiempo = 142156 ms

2020.05.05 23:00:19.121 tbl_tst (EURUSD,H1) Ciclo 2 tiempo = 143750 ms

MQL4:

2020.05.05 22:51:25.359 tbl_tst EURUSD,H1: Tiempo del ciclo 2 = 66813 ms

2020.05.05 22:50:18.551 tbl_tst EURUSD,H1: Marco temporal 1 = 69219 ms

2020.05.05 22:49:09.332 tbl_tst EURUSD,H1: Öècle 0 tiempo = 67062 ms


el código dll es 99% idéntico, lo he portado bajo MQL4 usando los ejemplos del artículohttps://www.mql5.com/ru/articles/249


A mí me parece que hay una gran diferencia.

Archivos adjuntos:
tst_winforms.jpg  239 kb
 
Adjunta tu código de la biblioteca + el código MQL completo para que puedas comprobarlo y reproducirlo al 100%.
 
Renat Fatkhullin:
Adjunta el código de tu biblioteca + el código MQL completo, para que puedas comprobarlo y reproducirlo al 100%.

aquí está el script de prueba

En principio, puedo enviar proyectos y VS al PM

 

la prueba anterior se ejecutó en:

2020.05.05 23:46:03.512 Terminal MetaTrader 5 x64 build 2402 started for MetaQuotes Software Corp.

2020.05.05 23:46:03.515 Terminal Windows 10 build 18363, Intel Core i3 M 380 @ 2.53GHz, 0 / 2 Gb de memoria, 149 / 237 Gb de disco, IE 11, UAC, GMT+4

Todavía tengo el terminal sin actualizar en mi portátil:

2020.05.05 23:37:15.336 Terminal MetaTrader 5 - FXOpen x64 build 2280 iniciado (FXOpen Investments Inc.)

2020.05.05 23:37:15.338 Terminal Windows 10 (build 18363) x64, IE 11, UAC, Intel Core i3 M 380 @ 2.53GHz, Memoria: 1071 / 2804 Mb, Disco: 149 / 237 Gb, GMT+4

corrió en el viejo código de compilación que adjunté, obtuvo un mejor tiempo de prueba:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Ciclo 0 tiempo = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Ciclo 1 tiempo = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Ciclo 2 tiempo = 69000 ms

 
Igor Makanu:

la prueba anterior se ejecutó en:

Todavía tengo un terminal sin actualizar en mi portátil:

corrió el código que adjunté en la vieja construcción, obtuvo un mejor tiempo de prueba:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Ciclo 0 tiempo = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Ciclo 1 tiempo = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Ciclo 2 tiempo = 69000 ms

En mi 2404 tengo la misma velocidad que en MT4.

 
Geess:

Tengo la misma velocidad en 2404 que en MT4.

Tengo la ligera sospecha de que MT5 se ha vuelto más exigente con los recursos del PC, lo comprobaré en mi PC mañana, mi portátil es débil (((

Sí, aquí hay otra cosa, confundido por la línea de configuración de PC en la nueva construcción - por encima de mi puesto, por alguna razón la nueva construcción escribió sobre la memoria del ordenador portátil:

0 / 2 Gb de memoria

Las condiciones de arranque eran las mismas, sólo ME y un terminal funcionando

ZS: pero la frecuencia de actualización en WinForm es inferior a 1 ms .... inesperadamente ;)