Características del lenguaje mql4, sutilezas y técnicas - página 4

 
Alexey Kozitsyn:
Vaya, este es un punto sutil. ¿Lo escribieron en la SD?

El autor ha escrito. Hace tiempo que las capacidades del lenguaje no coinciden con la documentación antigua, es decir, que se utilizan cosas no documentadas, lo cual es una afirmación extraña en consecuencia.

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

¿Cómo comparar rápidamente el doble y el QNaN?

fxsaber, 2016.10.11 15:56

Pasó desapercibido.

double QNaN   =Nan(0x7FF7000000000000);  

El valor inicial de una variable global puede declararse ahora a través de una función.

Lo mismo ocurre con el resto de las variables estáticas.

Resulta extraño que los desarrolladores hayan guardado silencio sobre esta innovación.


Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:
Hay un punto sutil sobre la estática en ambos idiomas

Alexey Kozitsyn:
Vaya, qué punto más fino... ¿Lo escribiste en SD?

¿Está bien que la ayuda diga que una variable estática... léalo usted mismo.

Una variable estática puede ser inicializada por una constante o una expresión constante adecuada a su tipo a diferencia de una simple variable local que puede ser inicializada por cualquier expresión.


Pero no una función.

Así es como funciona

#property strict
#property indicator_chart_window

int TestBrokenStatic()
{
   static int stInt = 101;
   stInt++;
   return stInt;
}

int OnInit()
{
   static int result = 0;
   result = TestBrokenStatic();
   Print("TestStatic Expected result 102   - Actual result=", result);
   result = TestBrokenStatic();
   Print("TestStatic Expected result 103   - Actual result=", result);
   
   return INIT_SUCCEEDED;
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   return rates_total;
}
2017.04.29 13:49:51.546 !Test USDCHF,M15: TestStatic Expected result 103   - Actual result=103
2017.04.29 13:49:48.457 !Test USDCHF,M15: TestStatic Expected result 102   - Actual result=102
2017.04.29 13:49:40.089 Custom indicator Test\!Test USDCHF,M15: loaded successfully
Статические переменные - Переменные - Основы языка - Справочник MQL4
Статические переменные - Переменные - Основы языка - Справочник MQL4
  • docs.mql4.com
Статические переменные - Переменные - Основы языка - Справочник MQL4
 
Alexey Viktorov:

¿Está bien que la ayuda diga que una variable estática... léalo usted mismo.

Pero no una función.

Así es como funciona.

Entonces el compilador debe dar un error...
 
Alexey Viktorov:

¿Está bien que la ayuda diga que una variable estática... léalo usted mismo.

¿Está bien que haya dado un enlace a la documentación de una vez y un enlace a una discusión de código de hace seis meses... Sigue tu propio consejo.

Especialmente con la const estática.

 
fxsaber:

¿Está bien que haya dado un enlace a la documentación de una vez y un enlace a una discusión de código de los desarrolladores de hace medio año... sigue tu propio consejo.

Especialmente con la const estática.

No he mirado el enlace porque no conozco el idioma aglitskiy, y la traducción de mech. es a veces más incomprensible que el chino/japonés con una pizca de coreano.

Y no tienes que ser tan sensible. No hay ni una pizca de reproche en mis palabras por no haber prestado atención a semejante nimiedad.

 
Alexey Viktorov:

No he mirado el enlace por mi desconocimiento del idioma aglitsky, y la traducción mech. es a veces más incomprensible que el chino/japonés con una pizca de coreano.

Oh, y no hay necesidad de ser tan morboso al respecto. Mis palabras no contienen ni un ápice de reproche por no haber prestado atención a semejante nimiedad.


Foro sobre trading, sistemas de trading automatizados y comprobador de estrategias

Características del lenguaje mql4, sutilezas y trucos

fxsaber, 2017.04.29 11:07

Las características del lenguaje han sido durante mucho tiempo incoherentes con la antigua documentación, es decir, en realidad se utilizan cosas no documentadas, cuyas afirmaciones son en consecuencia extrañas.

 
Alexey Kozitsyn:
Entonces el compilador debería dar un error...

Tal vez debería, pero... tenemos lo que tenemos.

 
fxsaber:

¿No era así en la antigua documentación?


ps. Muy tarde entendí el significado de estas referencias...

Pero aquí hay una refutación a la declaración

fxsaber:

Pasó desapercibido.

El valor inicial de una variable global puede declararse ahora a través de una función.

Lo mismo ocurre con el resto de las variables estáticas.

Es extraño que los desarrolladores guarden silencio sobre esta innovación.

¿O se trata de algo totalmente distinto? ¿Declarar o inicializar?
 
static const bool IsTester = (::MQLInfoInteger(MQL_TESTER) || ::MQLInfoInteger(MQL_OPTIMIZATION) ||
                              ::MQLInfoInteger(MQL_VISUAL_MODE) || ::MQLInfoInteger(MQL_FRAME_MODE));
 
fxsaber:

No puedo comprobarlo ahora mismo, pero MQL_TESTER parece incluir todo lo demás. Pero todo lo demás por separado no se incluye.

Es decir, para entender que el programa funciona en el probador (en cualquiera de los modos enumerados), sólo hay que comprobar la primera bandera.