Errores, fallos, preguntas - página 2729

 
Alexey Viktorov:

Esto no es una característica de mql5, es sólo un intento de enseñar el orden.

acostumbrarse al orden es cuando el compilador da una advertencia (o un error). convertir enteros en fracciones devuelve 0 - esto es una tontería, no el orden. el 90% de los códigos antiguos se romperán así.

y fíjate que la variante que funcionaba seguía siendo con int! es decir, el problema no está en la conversión de tipos en el paso de sustitución, sino en el paso de cálculo

AÑADIDO: cambiado a MQ-demo, actualizado el terminal de trabajo. No tiene este problema.

 
Error de compilación
class A {  
public:
        static int i;
} a; //Error: unresolved static variable 'A::i'
int A::i = 0;
 
Igor Zakharov:

ordenar es cuando el compilador da una advertencia (o un error). convertir enteros en fracciones devuelve 0 - esto es una tontería, no un orden. así es como el 90% de los códigos antiguos se rompen.

y fíjese que la variante de trabajo seguía siendo con int! es decir, el problema no es la conversión de tipos en el paso de sustitución, sino en el paso de cálculo

AÑADIDO: cambiado a MQ-demo, actualizado el terminal de trabajo. No tiene este problema.

¿No es sospechosa la falta de resaltado de las posibles opciones en este caso?

   ObjectSetDouble (0,name,OBJPROP_ANGLE,dir// тут должен появиться список вариантов переменных double
 
Error durante la ejecución
class A {  
public:
         A() { i = ++ii; printf( "%d", i ); }
        ~A() {           printf( "%d", i ); }
        int i;
        static int ii;
};
int A::ii = 0;
A a[ 2 ];
void OnStart() {}

  • El resultado en MQL: 1212
  • y en C++: 1221
 
Alexey Viktorov:

¿No es sospechosa la falta de resaltado de las posibles opciones en este caso?

:)

 
Igor Zakharov:

:)

Sí... Es extraño, durante un tiempo las variables de tipo inapropiado no se destacaban. Tal vez lo arreglaron a propósito o prestarán atención a este diálogo y lo arreglarán de nuevo. De todos modos, si la función requiere una variable de tipo double, se debe utilizar double.

 
Siempre ha sido un error.
#define  MACRO( X, Y )
MACRO( 1, 2, 3) //Warning: too many arguments for function-like macro 'MACRO'
¿Por qué una advertencia? Sobre todo porque siempre están en un número excesivo y a veces no se presta atención
 
Alexey Viktorov:

Sí... Es extraño, durante un tiempo las variables de tipo inapropiado no se destacaban. Tal vez lo arreglaron a propósito o prestarán atención a este diálogo y lo arreglarán de nuevo. De todos modos, si la función requiere el tipo de variable double, se debe utilizar double.

Alexei, he visto que te gustan los enlaces a la documentación, tengo uno para ti :)

https://www.mql5.com/ru/docs/basis/types/casting

int a double es una conversión implícita válida sin pérdida de datos. legítima.

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

pregunta sobre el funcionamiento del probador de estrategias.

Estoy realizando la prueba. El Asesor Experto abre una posición con SL y TP. Luego rueda y la posición se cierra sin ser reabierta.

¿Qué es? ¿Un error? Hace tiempo que no uso el probador y no tenía esos problemas. A continuación se muestra el registro del probador. Vemos que la posición ha sido abierta y cerrada después del rollover y entonces se escribe algo así como BUY, pero de hecho no muestra ninguna operación abierta. He pegado en el probador el comando

PositionSelect(_Symbol) para comprobar si hay posiciones abiertas después de la prórroga, el resultado es siempre el mismo: no hay posiciones abiertas.


2020.04.28 18:14:14.609 2014.01.09 05:00:00 compra instantánea 1.00 AUDUSD a 0.88800 sl: 0.88450 tp: 0.89200 (0.88750 / 0.88800 / 0.88750)

2020.04.28 18:14:14.609 2014.01.09 05:00:00 deal #8 comprar 1.00 AUDUSD a 0.88800 hecho (basado en la orden #8)

2020.04.28 18:14:14.610 2014.01.09 05:00:00 trato hecho [#8 comprar 1.00 AUDUSD a 0.88800

2020.04.28 18:14:14.610 2014.01.09 05:00:00 orden realizada comprar 1.00 a 0.88800 [#8 comprar 1.00 AUDUSD a 0.88800


2020.04.28 18:14:24.169 2014.01.09 23:59:59 operación #9 vender 1.00 AUDUSD a 0.88980 hecho (basado en la orden #9)

2020.04.28 18:14:24.169 2014.01.09 23:59:59 operación de prórroga realizada [#9 vender 1,00 AUDUSD a 0,88980

2020.04.28 18:14:24.170 2014.01.09 23:59:59 operación #10 comprar 0.00 AUDUSD a 0.8899950 hecho (basado en la orden #10)

2020.04.28 18:14:24.170 2014.01.09 23:59:59 operación de renovación realizada [#10 compra 0.00 AUDUSD a 0.8899950]


 
Igor Zakharov:

Alexei, he visto que te gustan los enlaces a la documentación, tengo uno para ti :)

https://www.mql5.com/ru/docs/basis/types/casting

int a double es una conversión implícita válida sin pérdida de datos. legítima.

Pongo un enlace a la documentación para no tener que reescribir la documentación en el post y para que la gente se acostumbre a leer la documentación. Imagínate que ha habido gente aquí en el foro que no sabía que la documentación existía en absoluto. En lo que a mí respecta, he visto esa imagen en la documentación, pero no he intentado entenderla a fondo. El hábito de usar variables del tipo que la función requiere es suficiente para mí. Como último recurso, forzaré la conversión al tipo correcto.

Razón de la queja: