Actualización del MQL4 y del código antiguo (intercambio de experiencias para la resolución de problemas) - página 2

 

El código de este artículo también ha dejado de funcionar. https://forum.mql4.com/ru/3481

Específicamente, no escribirá ni leerá archivos de la unidad C.

 
Tengo un 509 bild. Hoy he visto que el editor ha cambiado. Necesitaba cambiar el lote en el código de EA, y durante la compilación obtuve errores relacionados con stdlib.mqh y stderror. He copiado estos archivos en /MQL4/Include y el Asesor Experto logró copiar .
 

De la noche a la mañana se actualiza ME en ambos Real en 509 y con posiciones abiertas. El punto resultó ser 0,0001 y los dígitos, respectivamente, ¡4! Tuve que hacer las variables urgentemente como se indica en la Documentación, pero el StopLoss está por alguna razón puesto a cero en el 5º dígito. Y el único indicador DailyPivotPoints, que uso para "calmar mi conciencia", ha desaparecido. Tuve que recompilarlo.

En la demo, los puntos y dígitos actualizados anteriormente eran normales a la vez y los DailyPivotPoints no salían volando.

 
Qué historias de terror se cuentan aquí, esto debería contarse a la hora de dormir, como hacíamos en el campamento de pioneros)))
 
evillive:
Qué horrores cuentas aquí, debería contarse por la noche, como se hacía en el campamento de los pioneros )))

Entonces, llegaremos a la MT0 y sólo al lote completo. Hasta ahora he hecho lo que se describe en la documentación, y el punto y los dígitos, independientemente de cómo se coloreen, son los mismos que para un lote de 4 dígitos.

  double point = MarketInfo(Symbol(),MODE_POINT);
  int   digits = MarketInfo(Symbol(),MODE_DIGITS);
Y la Demo está bien, relativamente, por supuesto.
 
borilunad:

Entonces, llegaremos a la MT0 y sólo al lote completo. Hasta ahora he hecho lo que se describe en la documentación, pero el punto y los dígitos, independientemente de cómo se coloreen, son los mismos que para un lote de 4 dígitos.

Y la demo está bien, relativamente, claro.

¿Ha actualizado la referencia? Entré y encontré lo siguiente - no estaba allí antes.

-----------------------

int _Digitos

La variable _Digits almacena el número de posiciones decimales después del punto decimal que determina la precisión del precio del símbolo del gráfico actual.

También puede utilizar la función Digits().

----------------------

Comprobado, esta línea Print(_Digits, " ", Digits()); en AUDJPY y EURUSD da lo siguiente

2014.02.07 18:52:54.313 TestFileOpen EURUSD.e,M30: 5 5
2014.02.07 18:52:33.317 TestFileOpen AUDJPY.e,M15: 3 3

 
VDev:

¿Has actualizado la ayuda? Entré y encontré lo siguiente - no estaba allí antes.

-----------------------

int _Digitos

La variable _Digits almacena el número de posiciones decimales después del punto decimal que determina la precisión del precio del símbolo del gráfico actual.

También puede utilizar la función Digits().

Esto es probablemente cuando se cambia a un lenguaje actualizado, y no lo hago, ¡todo compila! Pero es muy extraño que en la Demo con el mismo Asesor Experto en otro terminal actualizado el lunes el Punto y los Dígitos son normales, cinco dígitos, pero aquí en el Real debería obtener cinco dígitos a través de MarketInfo() :(((

Aquí, hay una marca en el comentario del gráfico:

  "\n\n                                  ",DoubleToStr(Point,Digits), //тут выводится 0.0001
  "\n                                  ",DoubleToStr(point,5),   //а тут с переменной 0.00001
¡Por supuesto, me "horroricé" cuando el SL se puso a 10 veces su valor! Manteniendo este control por ahora con la esperanza de que funcione correctamente, y lo guardaré.
 

Habrá otros problemas, es un comienzo))) Ahora el compilador parece exigir el cumplimiento estricto de lenguajes normales como C/C++, y MQL5, por supuesto. Es decir, ya no se pueden compilar esas tonterías.

switch(n)
{
case 1: double d=1; break;
case 2: d=2; break;
}
 
VDev:

Habrá otros problemas, es un comienzo))) Ahora el compilador parece exigir el cumplimiento estricto de lenguajes normales como C/C++, y MQL5, por supuesto. Es decir, ya no se pueden compilar esas tonterías.

¡Yo no me dejo llevar por esas tonterías! Lo principal es que si... si no... ¡funciona y ya está! Cierto, el interruptor está en las funciones prestadas fuera del inicio, y todo funciona. ¡Tal vez comience con normalidad el lunes después de un descanso! ;))
 
borilunad:
¡Yo no me meto en eso! Lo principal es que si... ¡funciona y ya está! El verdadero interruptor está en las funciones prestadas fuera de la salida, y todo funciona. ¡Tal vez comience con normalidad el lunes después de un descanso! ;))
Sólo he probado esta versión durante una hora hoy, no estoy al tanto. Un conocido mío me ha hecho reír hoy )))) Le encanta poner puntos en los nombres de las variables. Le he dicho durante mucho tiempo que lo cambie por guiones bajos. Hoy no se ha compilado bien. Así que me dice: ¡por qué, porque ahora las variables sólo tienen que convertirse en clases!