Errores, fallos, preguntas - página 3108

 
Nikolai Semko #:

Lo tengo.
Oh, este corredor del eclipse...

Tengo tiempo en mi demo desde que no hay conexión y han pasado 40 horas.

 
Nikolai Semko #:

No se pueden saltar las nuevas versiones de los productos, aunque antes estaba bien.


Parece que no soy yo quien tiene el problema.
build 3110

Ayer tuvimos problemas de conexión con el servidor MetaQuotes-Demo, que se utiliza para validar los productos del Mercado, entre otras cosas.

Ayer solucionamos este error y volvimos a comprobar todos los productos que fallaron en la validación por motivos técnicos.

Le pedimos disculpas por las molestias.

Si accidentalmente hemos omitido su producto y no lo hemos vuelto a comprobar, hágalo usted mismo. La validación debería funcionar ahora con normalidad.

 

Aquí hay un ejemplo de código:

//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
  uint iCurrent =722;
  int  iinterval=1000;         
  int  iNext=(int)(iCurrent-iinterval/2); // 722-500=222
  Print ("Current :",iCurrent);
  Print ("iNext   :",iNext);
  long  temp=(long)(iNext-iCurrent); //предупреждений нет ожидаем Лонг -500
  Print ( " temp (long):",temp);//int - uint ->uint Result: uint -- oшибка!

  Print ( " delta(&int)"+string((int)(iNext-iCurrent)));    // неожиданный успех  
  Print ( " delta(&long)"+string((long)(iNext-iCurrent)));  // опять штанга
  //-----------------------------------
 }

Resultado:

2021.11.23 13:07:35.931 testUint (Volatility 75 Index,M15)      Current :722
2021.11.23 13:07:35.932 testUint (Volatility 75 Index,M15)      iNext   :222
2021.11.23 13:07:35.932 testUint (Volatility 75 Index,M15)       temp (long):4294966796
2021.11.23 13:07:35.932 testUint (Volatility 75 Index,M15)       delta(&int)-500
2021.11.23 13:07:35.932 testUint (Volatility 75 Index,M15)       delta(&long)4294966796

¿Puede alguien explicar - por qué

long  temp=(long)(iNext-iCurrent);

da

4294966796

y no -500.

No sé qué está pasando por mi cabeza... (

 
Mikhail Dovbakh #:

Aquí hay un ejemplo de código:

Resultado:

¿Puede alguien explicar - por qué

da

y no -500.

No sé qué está pasando por mi cabeza... (

long temp=(long)iNext-iCurrent;

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

Has conseguido que iNext se reduzca a entero sin signo primero. A continuación, el resultado entero sin signo se convierte en long.

En mi ejemplo, iNext se convierte inmediatamente en el tipo long, por lo que iCurrent también se convierte en el tipo long, pero implícitamente. El resultado se convierte inmediatamente en largo

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Приведение типов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Slava #:

La pregunta era por qué este tipo de orden no da el resultado correcto. Sólo puedo suponer que depende del orden de la jerarquía de tipos en la expresión. Si los tipos están en orden jerárquico en la expresión en tiempo de ejecución, la respuesta es correcta, y si no, una conversión de tipos no explícita que viole la jerarquía puede cambiar el valor de la variable.

long temp=(long)((int)iNext-(uint)iCurrent); 

En general, una conversión de tipo no explícita viola la jerarquía.

 
MetaQuotes #:

Ayer tuvimos problemas de conexión con el servidor MetaQuotes-Demo, que se utiliza, entre otras cosas, para validar los productos del Marketplace.

Ayer corregimos este problema y volvimos a comprobar todos los productos que no pudieron pasar la validación por motivos técnicos.

Nos disculpamos por las molestias.

Si accidentalmente hemos omitido su producto y no está revalidado, hágalo usted mismo. La comprobación debería funcionar ahora con normalidad.

Gracias.
Todo está funcionando ahora.
 
Slava #:

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

Primero has conseguido que iNext se reduzca a un entero sin signo. A continuación, el resultado entero sin signo se convierte en long.

En mi ejemplo, iNext se convierte inmediatamente en el tipo long, por lo que iCurrent también se convierte en el tipo long, sólo que implícitamente. El resultado es inmediatamente lanzado a largo

puedes ver por qué

 Print ( " delta(&int)"+string((int)(iNext-iCurrent)));    // неожиданный успех 

и

int itemp=(int)(iNext-iCurrent); 


da el resultado correcto?

Siguiendo su descripción , primero lanzamos iNext a un entero sin signo. A continuación, el resultado de un entero sin signo se convierte en un entero con signo.

¿Verdad?

 

Línea de tendencia no magnetizada a la vela roja baja(EURUSD, M5;Escala de tiempo precisa; Magnetización: 15)


 
Mikhail Dovbakh #:

y explicar por qué.

и

int itemp=(int)(iNext-iCurrent); 


da el resultado correcto?


Fácilmente

un entero sin signo con una longitud de 32 bits 4294966796 cuando se convierte en un entero con signo de la misma dimensión da -500

 
Valeriy Yastremskiy #:

La pregunta era por qué este tipo de orden no da el resultado correcto. Sólo puedo suponer que depende del orden de la jerarquía de tipos en la expresión. Si los tipos están en orden jerárquico en la expresión en tiempo de ejecución, la respuesta es correcta, y si no, una conversión de tipos no explícita que viole la jerarquía puede cambiar el valor de la variable.

Zy En general una conversión de tipo no explícita y una violación de la jerarquía.

Ya te he dado el enlace https://www.mql5.com/ru/docs/basis/types/casting

Lo dice todo con gran detalle. Léalo de principio a fin sin perderse nada

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Приведение типов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5