Errores, fallos, preguntas - página 1360

 
A100:
Esto es lo que sugerí:
...
Sólo las operaciones == y != se ven afectadas por los cambios.
Todo lo demás, incluido el operador =, debe dejarse como está ahora (sin cambios)

¿Cómo se puede dejar el operador= sin modificar si ahora causa confusión entre los punteros y los propios objetos? Si se usa * para él, entonces también debería usarse para todos los demás operadores. Debe haber un único estándar. Lo que sugieres es que el compilador elija el correcto por sí mismo - eso es incorrecto. Habrá muchos errores difíciles de encontrar. Todo debería ser inequívoco: acciones con un objeto o con un puntero.

Bueno, todos esos asteriscos son, por supuesto, muletas forzadas. Hay que cambiar todo el concepto que los desarrolladores eligieron no muy bien desde el principio, creo.

Deberíamos haber dejado de lado la vinculación a C++ y, respectivamente, haber abandonado el uso de punteros como un tipo separado de variable, sustituyéndolos por referencias. Las referencias son esencialmente lo mismo que los punteros, sólo que son interpretadas por el compilador como objetos en sí mismos.Por lo tanto, todas las acciones con estas variables, incluidos los operadores, se tratan como acciones con un objeto. Si necesita comparar o asignar exactamente las referencias, utilice el operador de referencia. Por lo tanto, no habrá contradicciones:

 A  a;                     // воздаём объект
 A& aref;                  // создаём неинициализированную ссылку

 &aref = &a;                // присваиваем ссылку на a
 bool equalref = &aref==&a; // сравниваем ссылки

 aref = a;                  //вызываем оператор=()
 bool equal = aref==a;      // вызываем оператор==()

En definitiva, si los desarrolladores conciben MQL6, deberíamos ir en esa dirección. Vincular a C++ ya no tiene sentido, porque no se corresponde con el concepto del lenguaje.

 
A100:
¿Cuál es la actualización más reciente que tiene?

Tanto MetaTrader como MetaEditor build 1159 (Windows 10 32 bit). En un PC grande (64 bits) no estoy seguro de MetaEditor, pero MetaTrader definitivamente construir 1159.
 
A100:
¿Cuál es la actualización más reciente que tiene?

Tengo 1150. No puedo ver la actualización a la posterior 1159
 
Gennadiy Stanilevych:
Tengo 1150. no ve las actualizaciones a la posterior 1159
Es necesario conectarse al servidor de MetaQuotes-Demo para obtener las últimas actualizaciones.
 
A100:
MetaQuotes-Demo es interesante ya que solíamos recibir actualizaciones 2-3 veces al mes. Está claro que los corredores tienen actualizaciones mucho menos frecuentes.
Karputov Vladimir:
Es necesario conectarse al servidor de MetaQuotes-Demo para obtener las últimas actualizaciones.

De acuerdo, actualizado a través de MetaQuotes-Demo, ¡todavía 1150! Y el terminal me informó varias veces de que las actualizaciones se habían descargado y me ofreció reiniciar, todavía 1150.

Ok, descargué el paquete de distribución de http://www.metatrader5.com/ru/download, abrí una cuenta demo en MetaQuotes-Demo, apagué y encendí la terminal por varias veces - ¡1150! UAC desactivado, Windows 7 SP1 - 64

Скачать MetaTrader 5
Скачать MetaTrader 5
  • www.metatrader5.com
Скачать торговый терминал MetaTrader 5 для комфортной и успешной работы на финансовых рынках. Терминал обладает внушительными торговыми и аналитическими возможностями и является одним из лучших в мире
 

Repetiré la pregunta ya que nadie la ha contestado y ha bajado por la acalorada discusión sobre OOP. Esta pregunta es realmente importante, ¿es un error o una característica? Lo he notado en MT4.

Me he encontrado con una situación en la que la variable externa cambia durante la ejecución del programa, pero cuando cambio el plazo, vuelve a tomar el valor que establecí en la ventana de propiedades. Por ejemplo, si antes del inicio establezco TradeEnable en EnableAll y cambio el valor a EnableBuy durante la ejecución del programa, el valor volverá a EnableAll cuando el gráfico cambie a otro marco temporal. El valor que defino en el evento del temporizador y la salida a través de Comment, no puede haber ningún error.

enum ETradeEnable {EnableAll, EnableBuy, EnableSell, DisableAll};
extern ETradeEnable TradeEnable = EnableAll;

La variable TradeEnable no se ve afectada por el cambio de gráfico. Lea la ayuda - A diferencia de las variables de entrada, los valores de las variables externas pueden modificarse mediante programación mientras el programa se está ejecutando.

Así es como se configuran OnDeinit y OnInit.

Pregunta: No entiendo algo o el cambio de TradeEnable es un error de ejecución?

int LastDeinitReason = 0;

void OnDeinit(const int reason)
{
    LastDeinitReason = reason;
    if(reason==REASON_CHARTCHANGE || reason==REASON_TEMPLATE || reason==REASON_PARAMETERS)
        return;
    EventKillTimer();
// далее код при завершении работы советника
}

int OnInit()
{
    if(LastDeinitReason==REASON_CHARTCHANGE || LastDeinitReason==REASON_TEMPLATE)
    {
        LastDeinitReason = 0;
        return(INIT_SUCCEEDED);
    }
    if(LastDeinitReason==REASON_PARAMETERS)
    {
        SetParams();
        return(INIT_SUCCEEDED);                              
    }
// далее код инициализации при запуске
}
 
Karputov Vladimir:
Tienes que conectarte al servidor de MetaQuotes-Demo para obtener las últimas actualizaciones.
Esto no ayuda. Incluso he demolido la MT5. Abrí la demo en MetaQuotes. Todavía 1150.
 
Gennadiy Stanilevych:
No sirve de nada. Incluso he quitado la MT5. Abrir una demostración sobre las metacomillas. Todavía 1150.
No basta con abrir una cuenta demo en el servidor de MetaQuites-Demo: también hay que conectarse a esta cuenta demo para la actualización.
 
Karputov Vladimir:
No basta con abrir una cuenta de demostración en el servidor de MetaQuites-Demo: también hay que conectarse a esta cuenta de demostración para la actualización.

Por supuesto que me conecté. Luego reinicié el terminal de nuevo. Sigue sin ver ninguna actualización.

Archivos adjuntos:
20150826.log  7 kb
 
Gennadiy Stanilevych:

Por supuesto que me conecté. Luego reinicié el terminal de nuevo. Sigue sin ver ninguna actualización.

Extraño (miré el archivo de registro). De la experiencia - si hay actualizaciones, a continuación, después de conectar, literalmente, dentro de los tres segundos comienza a descargar.

Razón de la queja: