Erreurs, bugs, questions - page 98

 

Je ne comprends pas "où le chien est enterré", le code fonctionne, tout est OK, mais les avertissements du compilateur concernant une éventuelle perte de données due à la conversion de type Indi.mqh 125 45 me font me demander.


//+------------------------------------------------------------------+
//|Получение значений позиций в средe BB цены AppPrice,Fast/Slow TEMA|
//+------------------------------------------------------------------+

void CIndi::SetPricePositions(ushort SymbolPosition,ushort Index,uchar AppPrice)
  {
   int handle=GetHandle(SymbolPosition,BANDS);
   double Upper =Upper_Band(handle,Index);
   double Base  =Base_Band(handle,Index);
   double Lower =Lower_Band(handle,Index);
   double FTema =GetValuesFromIndi(GetHandle(SymbolPosition,TEMA_FAST),0,Index);
   double STema =GetValuesFromIndi(GetHandle(SymbolPosition,TEMA_SLOW),0,Index);
   
   Bollinger[SymbolPosition][PRICE_POSITION]=(double)GetPricePos(handle,Index,AppPrice); ???
   Bollinger[SymbolPosition][FAST_POSITION] =(double)Custom.Position(Lower,Upper,FTema); ???
   Bollinger[SymbolPosition][SLOW_POSITION] =(double)Custom.Position(Lower,Upper,STema); ???
   Bollinger[SymbolPosition][UPPER]         =(double)Upper; ???
   Bollinger[SymbolPosition][BASE]          =(double)Base;  ???
   Bollinger[SymbolPosition][LOWER]         =(double)Lower; ???
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Предупреждения компилятора - Документация по MQL5
 

Aux développeurs.

D'après ce que j'ai compris, le problème de l'échange a été résolu ? Ou alors, on ne sait pas pourquoi le sujet a disparu du site servicedesk......

 

Lors du test d'une EA

void OnTick(){
   Print(iTest());
}
//+------------------------------------------------------------------+
int iTest(){
   double i;
   int j;
   for(int x=3; x>0; x--) { 
      i=i+0.00001;
   }//Next x
   j=int(i/_Point);
   return(j);
}//iTest()

Le journal montre un nombre en constante augmentation ! C'est censé être comme ça ?

Dans MQL4, vous auriez dû écrire

static double i;

 
EvgeTrofi:

Lors du test d'une EA

Le journal montre un nombre en constante augmentation ! C'est censé être comme ça ?

Oui, ça devrait l'être.

Vous n'avez pas initialisé la variable locale i, qui, lors des appels suivants, a été allouée au même endroit sur la pile que lors des appels précédents.

Документация по MQL5: Основы языка / Переменные / Локальные переменные
Документация по MQL5: Основы языка / Переменные / Локальные переменные
  • www.mql5.com
Основы языка / Переменные / Локальные переменные - Документация по MQL5
 
Renat:

Oui, c'est comme ça que ça devrait être.

Vous n'avez pas initialisé la variable locale i qui sera allouée au même endroit de la pile lors des prochains appels qu'elle l'était lors des appels précédents.

Dans quel cas faut-il utiliser la classe de mémoire statique?

Phrase incompréhensible dans l'aide: "Les variables locales déclarées commestatiques ont la portée d'un bloc, malgré le fait qu'elles existent depuis le début de l'exécution du programme", veuillez expliquer. Il semble y avoir une erreur de syntaxe ou de grammaire dans cette phrase :)

Notez l'exemple dans l'aide: https://www.mql5.com/ru/docs/basis/variables/static

Si vous supprimez le mot statique du code, rien ne changera :

int Counter()
  {
   int count;
   count++;
   if(count%100==0) Print("Функция Counter была вызвана уже ",count," раз");
   return count;
  }
void OnStart()
  {
//---
   int c=345;
   for(int i=0;i<1000;i++)
     {
      int c=Counter();
     }
   Print("c = ",c);
  }

Question : pourquoi avons-nous besoin de statique si c'est la même chose sans elle ?

Документация по MQL5: Основы языка / Переменные / Статические переменные
Документация по MQL5: Основы языка / Переменные / Статические переменные
  • www.mql5.com
Основы языка / Переменные / Статические переменные - Документация по MQL5
 
ALozovoy:
Bonjour. Il manque le paramètre ExpertParameters dans la description du [Testeur]. Vous pouvez en savoir plus à ce sujet dans l'aide.

Merci, ça marche.

 


Dites-moi, s'il vous plaît, quel était le but d'ajouter la possibilité de déclarer des variables dans les blocs en premier lieu ? Auparavant, dans un cas comme celui-ci :

  
int c;    for(int i=0;i<1000;i++)      {        int  c=Counter(); }

Auparavant, une boîte apparaissait pour signaler qu'une directe était déclarée deux fois et il était clair que vous deviez trouver un autre nom pour la variable ou utiliser le même nom mais sans l'int. Mais maintenant ça peut devenir confus. Est-ce que c'est la même chose en C++ ?

(J'avais l'habitude de programmer en Visual Basic avant d'apprendre MQL. Il n'y avait pas un tel désordre là-bas).

 
EvgeTrofi:

Dans quel cas faut-il alors utiliser la classe de mémoire statique?


Non.

Si vous avez créé une variable int i ;, pourquoi ne l'avez-vous pas initialisée ? En fait, vous avez vous-même dit "Je ne me soucie pas de ce que contient cette variable" et vous vous êtes retrouvé avec des déchets à l'intérieur.

La méthode correcte est int i=0;

Est-ce que c'est aussi le cas en C++ ?

Oui, c'est vrai - vous pouvez créer de telles variables à l'intérieur d'un bloc.
 

J'ai rencontré un problème sur Windows 7 64 bit sur 306 Bild du terminal (Windows 7 32 bit tout fonctionne bien).

Dossiers :
mql64.png  52 kb
 
VanHelsing:

J'ai rencontré un problème sur Windows 7 64 bit sur 306 Bild du terminal (Windows 7 32 bit tout fonctionne bien).

Veuillez poster dans servicedesk un morceau de code sur lequel cette situation se produit.