Erreurs, bugs, questions - page 2426

 

le compilateur se comporte différemment dans les mêmes cas.

Téléchargé 2 fichiers de kodobase: https://www.mql5.com/en/code/15440

ont été faites, manifestement avant l'apparition de iTime(). L'un d'eux compile, l'autre jure :

Les fonctions sont identiques :

appels aussi.

La raison de la réprimande est évidente, compréhensible et facilement réparée par l'auto-remplacement, mais le comportement différent dans des situations similaires est alarmant.

PS :

L'indicateur compilé fonctionne correctement.

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:

Vous devez remplacer la mémoire. C'était exactement la même chose dans les anciennes versions.

Quel souvenir ? Qu'est-ce que la mémoire a à voir avec ça ?

 

J'ai exécuté le code suivant :

 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);

Et j'ai obtenu un résultat étrange :

Старт 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

Par exemple, SymbolInfoTick avec le premier paramètre égal à "", pour une raison quelconque, renvoie le dernier tick du symbole graphique au lieu de false et d'un tick de zéro. Bien qu'il ne devrait pas en être ainsi selon la définition de la documentation.

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

propriété stricte ?

 
Alexandr Gavrilin:

Qu'est-ce qui ne va pas avec la double saisie dans les dernières versions de metaeditor ? Dans mt4 et mt5, il écrit une absurdité au lieu de -0.01. D'où viennent ces chiffres ? J'ai mis les variables à zéro.

Il s'agit de la construction de 2007.

Cela a toujours été 0,01, mais maintenant je ne le comprends pas :


 
Andrei Trukhanovich:

propriété stricte ?

dans les deux sont les mêmes :

Je n'ai pas vérifié jusqu'au symbole (comme indiqué ci-dessus - le code n'est pas le mien), mais à première vue, ils sont identiques à 95%. Et la différence ne réside pas dans les endroits où l'erreur apparaît. Mais, pour une raison quelconque, l'un compile, l'autre pas. Je l'ai déjà corrigé pour moi-même, mais j'informe les développeurs de cette étrangeté.

 

Ce bogue semble être apparu dans les versions récentes de MT5.

Bogue dans les fonctions CryptEncode() et CryptDecode(). Problème avec la méthode de conversion CRYPT_AES256

Vous pouvez reproduire le bogue dans la dernière version (2009) avec ce 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:

Ce bogue semble être apparu dans les versions récentes de MT5.

Le bogue se trouve dans les fonctions CryptEncode() et CryptDecode(). Problème avec la méthode de conversion CRYPT_AES256

Vous pouvez reproduire le bug de la dernière version (2009) avec ce script :

La correction n'apparaîtra probablement que lors de la mise à niveau vers une nouvelle version.
 
Vitaly Muzichenko:

Ici, dans la construction depuis 2007

C'était toujours 0,01 et maintenant ce n'est pas clair :


Afficher le code de sortie
 
Slava:
Afficher le code de sortie


// Создадим поле ввода лота
   EditCreate(0,prefix+"LotBuy",xd,yd+15,47,15,0,(string)Lots,"Lot Buy","Verdana",8,clrBlack,C'241,239,226',clrGray,false,ALIGN_CENTER);

   EditCreate(0,prefix+"LotSell",xd,yd+15,47,15,0,(string)Lots,"Lot Sell","Verdana",8,clrBlack,C'241,239,226',clrGray,false,ALIGN_CENTER);

void EditCreate(long chart_ID,string nm="Edit",int xd=0,int yd=0,int width=50,int height=18,int cr=0,
                string text="Edit",string tooltip="Edit",string font="Arial",int font_size=9,
                color clr=clrBlack,color back_clr=C'236,233,216',color border_clr=clrNONE,
                                                              bool read_only=false,int align=0) {
 if(ObjectFind(chart_ID,nm)<0) {
    ObjectCreate(chart_ID,nm,OBJ_EDIT,0,0,0);
    ObjectSetInteger(chart_ID,nm,OBJPROP_XDISTANCE,xd);
    ObjectSetInteger(chart_ID,nm,OBJPROP_YDISTANCE,yd);
    ObjectSetInteger(chart_ID,nm,OBJPROP_XSIZE,width);
    ObjectSetInteger(chart_ID,nm,OBJPROP_YSIZE,height);
    ObjectSetString(chart_ID,nm,OBJPROP_TEXT,text);
    ObjectSetString(chart_ID,nm,OBJPROP_TOOLTIP,tooltip);
    ObjectSetString(chart_ID,nm,OBJPROP_FONT,font);
    ObjectSetInteger(chart_ID,nm,OBJPROP_FONTSIZE,font_size);
    ObjectSetInteger(chart_ID,nm,OBJPROP_ALIGN,align);
    ObjectSetInteger(chart_ID,nm,OBJPROP_READONLY,read_only);
    ObjectSetInteger(chart_ID,nm,OBJPROP_CORNER,cr);
    ObjectSetInteger(chart_ID,nm,OBJPROP_COLOR,clr);
    ObjectSetInteger(chart_ID,nm,OBJPROP_BGCOLOR,back_clr);
    ObjectSetInteger(chart_ID,nm,OBJPROP_BORDER_COLOR,border_clr);
    ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTABLE,false);
    ObjectSetInteger(chart_ID,nm,OBJPROP_SELECTED,false);
    ObjectSetInteger(chart_ID,nm,OBJPROP_HIDDEN,false);
  }
 }