Errores, fallos, preguntas - página 2474

 
fxsaber:

¿Cómo elegir entre utilizar plantillas y void*?

No hay un enfoque especial, es sólo una cuestión de intuición

 
Lamentablemente, por el momento los tipos de punteros de función en MT4/MT5 son muy limitados y no son prácticos debido a algunos defectos:
#(no corregido en MT5(build 2060))"Error de compilación al usar la misma firma de función repetidamente dentro de typedef".
#(no arreglado en MT5(build 2060))"Cuando se trabaja con typedef, el uso de una función de plantilla con especialización explícita no genera código para esa función de plantilla".


En vista de la implementación pendiente del espacio de nombres, por favor considere implementar el soporte para este comportamiento como parte de las correcciones de defectos en el próximo C++:
//#include <iostream>

template<typename T>
class A{
public:
    typedef void (*callback)(T&);   //class namespace for function pointer type
    callback f_ptr;
    T data;
};

template<typename T>
class B{
public:
    typedef void (*callback)(T&);   //class namespace for function pointer type
    callback f_ptr;
};

template<typename T>
void func(T& value){
    ++value;
}


void OnStart(){
//int main(){
    A<int> a;
    B<int> b;
    
    a.f_ptr = func<int>;      // automatic code generation of templates functions
    b.f_ptr = a.f_ptr;        // assignment operation for function pointers with the same function signatures and different function pointer types.
    
    int x = 1;
    b.f_ptr(x);
    printf("%d\r\n", x);                  //2
    printf("%d\r\n", b.f_ptr == a.f_ptr); //1     // equal operation for function pointers with the same function signatures and different function pointer types.
}
 

Hola! Por favor, preste atención al tema

https://www.mql5.com/ru/forum/314275

En pocas palabras, el comprobador calcula un margen que no coincide con el establecido en la configuración del símbolo
[bug] Неправильная Margin при тестировании на custom symbol
[bug] Неправильная Margin при тестировании на custom symbol
  • 2019.05.25
  • www.mql5.com
Привет! Создал кастомный символ с параметрами, скопированными из реального Si-3.19. См. скриншоты. Загрузил для него историю...
 

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

Nueva versión de la plataforma MetaTrader 4 build 1170

fxsaber, 2019.05.28 12:10

¿Es un error del compilador de MT4?
#property strict

void Func( int &[] ) {}
void Func( int &[][2] ) {} // 'Func' - function already defined and has body

void OnStart()
{
  int Array1[];
  int Array2[][2];
  
  Func(Array1);
  Func(Array2); // 'Array2' - invalid array access
}


No hay ningún problema con esto en MT5. En MT4 no hay forma de sobrecargar la función.

 

Ligero percance en MT 4 en MT 5 no comprobado...


 

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

Nueva versión de la plataforma MetaTrader 4 build 1170

fxsaber, 2019.05.28 14:24

Captó una diferencia desconocida entre MT4 y MT5. ¿Es un error en MT4?
#property strict

bool Print2( const string Str )
{
  Print(Str);
  
  return(true);
}

void Func()
{
  static bool b = Print2(__FUNCSIG__); // MT4 - вызывается, MT5 - нет.
}

void OnStart() {}
 
fxsaber:

Cinco ha hecho una inicialización adecuada de la estática. En el primer acceso.

Cuatro no lo hicieron. Y no se sabe cuándo lo haremos.

 

build 2062: Error 5305 al crear un símbolo personalizado.

En 2060 todo está bien.

Recuerdo que en MT4 había una clave de línea de comandos /skipupdate

¿Hay algo similar en MT5? ¿Cómo puedo desactivar las actualizaciones?

 

fxsaber:

MT4 se llama, MT5 no.

Parece que estás compilando con un compilador antiguo, compila con uno moderno (incluido en MT5) y todo irá bien.
 
Alexey Navoykov:
Parece que estás compilando con un compilador antiguo. Compila con uno moderno (que viene con MT5) y todo irá bien.

Compilado hasta 1966. Probado 2062 en MT4 - funciona correctamente. Gracias.

Es una pena que no haya forma de superar esto.

Razón de la queja: