Errores, fallos, preguntas - página 2206

 
Alexander Nikolaev:
¿Quién sabe por qué no puedo acceder a las cuentas demo creadas recientemente, que fueron creadas directamente en el terminal MT4, en el servidor Demo de Metaquotes? Creé una hace una semana. Los primeros 2 días funciona, pero después de un tiempo la cuenta desaparece, como si la contraseña fuera incorrecta (aunque estaba copiada, no pude introducirla mal) y tengo que volver a abrir la cuenta para probar el Asesor Experto. ¿Es realmente necesario crear una nueva cuenta cada semana?
Hace tiempo que es así, si no hay actividad en la cuenta, se cierra. crea una nueva y no te preocupes.
 
Denis Sartakov:

Recientemente he escrito una función como ésta, así que inténtalo tú mismo,

Si no funciona, lo explicaré.

gracias

 

otra pregunta:

la descripción deCHART_IS_MAXIMIZED yCHART_IS_MINIMIZED no dice que estas propiedades sean de sólo lectura, pero ChartSetInteger(ChartID(),CHART_IS_MAXIMIZED,true); no funciona, ¿cuál podría ser el problema?

 

¿Por qué no compila?

template <typename T>
void f(T &t)
{
   t.f();
}

void OnStart()
{
   class Q
   {
   public:
      void f() {}
   }q;
   
   f(q);
}

Las versiones más antiguas del compilador se comían bien esas construcciones, tomaban para recompilar el código anterior válido y el error. ¿Es un accidente o se ha roto intencionadamente?

 
pavlick_:

¿Por qué no compila?

Las versiones anteriores del compilador estaban bien con esas construcciones, he recompilado el código previamente válido y hay un error. ¿Es un accidente o se ha roto intencionadamente?

pero ¿podemos crear clases dentro de las funciones según la especificación del lenguaje?

 
Konstantin:

pero ¿se pueden crear clases dentro de las funciones según la especificación del lenguaje?

¿Qué especificación lingüística? Mcl no está bien documentado en absoluto, mientras que en c++ es una práctica normal, desde la referencia:

Clases locales

Una declaración de clase puede aparecer en el ámbito del espacio de nombres (en cuyo caso define una clase ordinaria), dentro de otra definición de clase (en cuyo caso define una clase anidada), y dentro del cuerpo de una función, en cuyo caso define una clase local. El nombre de una clase de este tipo sólo existe dentro del ámbito de la función, y no es accesible fuera de él.

http://en.cppreference.com/w/cpp/language/class

 

La respuesta es el silencio, como siempre. En realidad es fácil solucionar el problema - en lugar de la colocación elegante dentro de la función, lo pongo fuera con el nombre intimidante internal__Chart_bar_shift_Comp. Pero la cuestión es que acaban de cortar esa construcción. Es decir, no hay garantía de que mi código vaya a compilar mañana. Se puede, de alguna manera, con claves para seleccionar el dialecto -std=mql18, por ejemplo. Pero no, no te preocupes por la compatibilidad con el pasado. Me cuesta imaginar que esto sea posible en algún gcc.

Supongo que un simple scripting mql4 era suficiente para una plataforma de trading. O mejor aún, importar plugins (en bibliotecas dinámicas) con scripts/expertos. Pero no, necesitas tu propia, como suelen decir aquí, "infraestructura" donde eres grande e importante.

 
pavlick_:

¿Según qué especificación lingüística? Mcl no está nada bien documentado, pero en c++ es una práctica normal, desde el libro de referencia:

Clases locales

Una declaración de clase puede aparecer en el ámbito del espacio de nombres (en cuyo caso define una clase ordinaria), dentro de otra definición de clase (en cuyo caso define una clase anidada), y dentro del cuerpo de una función, en cuyo caso define una clase local. El nombre de una clase de este tipo sólo existe dentro del ámbito de la función, y no es accesible fuera de él.

http://en.cppreference.com/w/cpp/language/class

he conocido una discusión en algún lugar que no está previsto en la especificación de mql5, mira en el foro, también había una discusión sobre lambas, que no están previstas

 
pavlick_:

La respuesta es el silencio, como siempre. En realidad es fácil solucionar el problema - en lugar de la colocación elegante dentro de la función, lo pongo fuera con el nombre intimidante internal__Chart_bar_shift_Comp. Pero la cuestión es diferente: acaban de cortar tal construcción. Es decir, no hay garantía de que mi código vaya a compilar mañana. Podría de alguna manera con claves para seleccionar el dialecto -std=mql18, por ejemplo. Pero no, no te preocupes por la compatibilidad con el pasado. Me cuesta imaginar que sea posible en algún gcc.

Probablemente, un simple script mql4 era suficiente para una plataforma de comercio. O mejor: importar plugins (en bibliotecas dinámicas) con scripts/expertos. Pero no, necesitas tu propia, como suelen decir aquí, "infraestructura", donde eres grande e importante.

Para ser honesto, no entiendo por qué hacen eso. Es más fácil poner todas las entidades auxiliares en un listado separado del código fuente, por ejemplo util.mqh

 
Konstantin:

Para ser honesto, no entiendo por qué, es más fácil poner todas las entidades auxiliares en un listado separado del código fuente, por ejemplo util.mqh

Se trata de un predicado para la búsqueda binaria, que no es universal y se utiliza una sola vez en una función, ¿por qué debería ponerlo en algún sitio? Por ejemplo, tenemos un array de estructuras (sin operador de comparación, no se pueden comparar torpemente con <, o la condición de comparación es muy complicada), y queremos encontrar un elemento mediante búsqueda binaria. En la librería plus, las funciones de algoritmo toman un functor (convenientemente pasado como lambda), dentro del cual comparamos elementos del array. Una solución muy elegante en mi opinión.

int main()
{
    typedef pair<int, double> myPair; // typedef to shorten the type name
    vector <myPair> vec(5);

    myPair low_val; // reference value (set this up as you want)
    auto it = lower_bound(vec.begin(), vec.end(), low_val, 
        [](myPair lhs, myPair rhs) -> bool { return lhs.second < rhs.second; });
}

Pero debido a las limitaciones de µl, creó una instancia de la clase de predicado.