Errores, fallos, preguntas - página 2426

 
Alexandr Gavrilin:

¿Qué diablos pasa con el tipo doble en las últimas versiones del metaeditor? Tanto en mt4 como en mt5 escribe alguna tontería en lugar de -0,01. De dónde salen estos números, las variables se ponen a cero en mi caso.

Tengo que cambiar la memoria. Lo mismo ocurría en las versiones anteriores.

 

el compilador se comporta de manera diferente en los mismos casos.

Descargado 2 archivos de kodobase:https://www.mql5.com/en/code/15440

se hicieron, obviamente antes de que apareciera iTime(). Uno de ellos recopila, el otro jura:

Las funciones son idénticas:

llamadas también.

El motivo de la regañina es obvio, comprensible y fácilmente solucionable con la auto-reposición, pero el diferente comportamiento en situaciones similares es alarmante.

PS:

El indicador compilado funciona correctamente.

Volume Profile + Range v6.0
Volume Profile + Range v6.0
  • www.mql5.com
Volume Profile + Range v6.0 (former TPO). Distribution of deals by price levels at a given time interval. Displayed as a histogram. The width of the histogram at the level means the number of transactions carried out on it. If a broker provides data on a real volume, the indicator is able to display distribution on it as well. VP: display...
 
Alexey Viktorov:

Hay que sustituir la memoria. Y era exactamente igual en las versiones antiguas.

¿Qué memoria? ¿Qué tiene que ver la memoria con esto?

 

He ejecutado el siguiente código :

 Temp.ask=0; Temp.bid=0; Temp.time=0;
 Print("Старт Ask=",Temp.ask," Bid=",Temp.bid," Time=",Temp.time);
 Print("Ответ SymbolInfoTick=", SymbolInfoTick("",Temp) );
 Print("Ask=",Temp.ask," Bid=",Temp.bid," Time=",Temp.time);

Y obtuve un resultado extraño:

Старт Ask=0.0 Bid=0.0 Time=1970.01.01 00:00:00
Ответ SymbolInfoTick=true
Ask=69.75 Bid=69.33 Time=2019.04.08 21:21:12

Es decir, SymbolInfoTick con el primer parámetro igual a "" por alguna razón devuelve el último tick por el símbolo del gráfico en lugar de false y un tick de ceros. Aunque no debería ser así según la definición de la documentación.

bool  SymbolInfoTick( 
   string    symbol,     // символ 
   MqlTick&  tick        // ссылка на структуру 
   );
 
Igor Zakharov:

¿propiedad estricta?

 
Alexandr Gavrilin:

¿Qué demonios está pasando con el doble tipo en las últimas versiones del metaeditor? Tanto en mt4 como en mt5 escribe alguna tontería en lugar de -0,01. ¿De dónde salen estos números? Puse las variables a cero.

Esta es la construcción de 2007.

Siempre ha sido 0,01, pero ahora no lo entiendo:


 
Andrei Trukhanovich:

¿propiedad estricta?

en ambos son los mismos:

No he comprobado hasta el símbolo (como se ha señalado anteriormente - el código no es mío), pero en un vistazo rápido son 95% idénticos. Y la diferencia no está en los lugares donde aparece el error. Pero, por alguna razón, uno compila y el otro no. Ya lo he arreglado yo, pero informo a los desarrolladores de la extrañeza.

 

Este error parece haber aparecido en las últimas versiones de MT5.

El error está en las funciones CryptEncode() y CryptDecode(). Problema con el método de conversión CRYPT_AES256

Puede reproducir el error en la última versión (2009) con este script:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   string Txt = "The quick brown fox jumps over the lazy dog. A0 A1 A2 A3 A4 A5 A6 A7 A8 A9"; 

//---Key
   uchar Key[32];
   ArrayInitialize(Key, 3);

//---encode
   uchar SourceArr[], EncodedArr[];
   
   StringToCharArray(Txt, SourceArr); 
   
   int EncodeRes = CryptEncode(CRYPT_AES256, SourceArr, Key, EncodedArr);
   
//---decode
   uchar DecodedArr[];
   
   int DecodeRes = CryptDecode(CRYPT_AES256, EncodedArr, Key, DecodedArr);
   
   string DecodedTxt = CharArrayToString(DecodedArr);

//---res
   Print("Txt: ",Txt);
   Print("EncodeRes: ",EncodeRes);
   
   Print("DecodedTxt: ",DecodedTxt);
   Print("DecodeRes: ",DecodeRes);
   
//---
   return;
}
 
Marat Sultanov:

Este error parece haber aparecido en las últimas versiones de MT5.

El error está en las funciones CryptEncode() y CryptDecode(). Problema con el método de conversión CRYPT_AES256

Puedes reproducir el error en la última compilación (2009) con este script:

Lo más probable es que la solución sólo aparezca al actualizar a una nueva versión.
 
Vitaly Muzichenko:

Aquí en la construcción desde 2007

Siempre fue 0,01 y ahora no está claro:


Mostrar código de salida