Errores, fallos, preguntas - página 2751

 
Igor Makanu:

es una especie de paradoja que haya acceso a _Symbol .... pero sin acceso a

const MqlTick _Tick; // Текущий _Symbol-тик.

aunque MQL se posiciona como un lenguaje para el desarrollo de estrategias de trading

_Symbol es una constante, por eso no hay problema con ella (aunque es más correcto llamar a Symbol()). Un tick es una variable, ¿cómo te imaginas que se declare como const, pero que su valor cambie?

 
Alexey Navoykov:

Cómo es que lo tienes declarado como const, pero su valor cambia.

Por desgracia, soy como tú... El mismo idealista, para quien es más lógico y comprensible escribir en VS C# - allí el compilador no permite separar un concepto lógico de constante de la comprobación de máquina de C++ antes de la compilación

no dudó en hacer preguntas

https://www.mql5.com/ru/forum/1111/page2680#comment_15546412


la cuestión es que todo es lógico en C++ ;)

 
Alexey Navoykov:

No es necesario este ***. _Symbol es una constante, así que no hay problema con ella(aunque es más correcto llamar a Symbol()).

¿Qué hay de malo en escribirlo para un usuario?

const string _Symbol = ::Symbol();

Y un tick es una variable - como te imaginas se declara como const, pero su valor cambia.

Bid/Ask en MT4. Por supuesto, RefreshRates() está ahí.


Hace poco descubrí un símbolo en el que los dígitos estaban mal puestos. He pedido a mi agente que lo corrija. Lo hizo sobre la marcha. No se ha mirado si se ha cambiado el valor de la variable _Digits y Digits(). Pero sólo el hecho de que el símbolo pueda cambiar sus valores sobre la marcha.

 
Estimados desarrolladores, ¿es posible hacer que la ventana del gráfico se parezca a otras ventanas, como en WIN 10? Como alternativa, existe la posibilidad de "repintar" el marco de la ventana del gráfico, y el marco del terminal en general, con color negro.
Dependiendo de la combinación de colores, por ejemplo. Los marcos blancos anchos en los gráficos negros son molestos, irritantes e impiden enriquecerse, ¡¡¡por favor!!!
 
Igor Makanu:

Por desgracia, soy como tú... Soy el mismo idealista que encuentra más lógico y comprensible escribir en VS C# - el compilador allí no permite separar la noción lógica de constante de la comprobación de máquina de C++ antes de la compilación

no dudó en hacer preguntas

https://www.mql5.com/ru/forum/1111/page2680#comment_15546412

En el primer caso tienes una variable estática, no un miembro de la clase, por lo que la constante no tiene nada que ver.

 
Alexey Navoykov:

No es necesario este ***. _Símbolo es una constante, por lo que no hay ningún problema con ella (aunque es más correcto llamar a Symbol()). Un tick es una variable. ¿Cómo se imagina que se declara como const, pero su valor cambia.

Mezclas la constancia desde el lado de MQL y desde el lado del núcleo. La esencia de declarar una estructura con el modificador const es que el código MQL no puede modificarla. Por analogía, se puede describir un método de la clase const, que impide que el objeto cambie en este método, pero no significa que el objeto mismo no pueda cambiar su estado por otras condiciones.

 

¿Por qué no puedo ver las variables globales del terminal en el probador en modo visual (emulado, por supuesto)?

¿Funcionan las variables globales del terminal en el probador?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Andrey Dik:

¿Por qué no puedo ver las variables globales del terminal en el probador en modo visual (emulado, por supuesto)?

¿Funcionan las variables globales del terminal en el probador?

Siempre ha sido posible (F3). Funcionan.

 
Alexey Navoykov:

En el primer caso tienes un cambio de variable estática, no un miembro de la clase, por lo que la constante no tiene nada que ver.

¿Debe este script devolver suma = 0?

¿o debería este script devolver un error de compilación?

void OnStart()
{
   int sum = 0;
   for(int i = 0; i < 3 ; i++)
   {
      const int j = f(i);
      sum += j * i;
   }
   printf("sum = %i", sum);
}
//+------------------------------------------------------------------+
int f(int v)
{
   return(v);
}
//+------------------------------------------------------------------+
 
Igor Makanu:

¿debe este script devolver suma = 0?

¿O debería este script devolver un error de compilación?

Al menos ejecuta un depurador antes de escribir declaraciones ridículas.
En el segundo bucle i == 1 y j == 1, y en el tercero y así sucesivamente ambos son uno más.

Razón de la queja: