Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 722

 
Zver4991:
Y a-t-il des règles de code ?

Bien sûr, et pas seulement le code !

https://forum.mql4.com/ru/38943

 
Je n'arrive pas à comprendre pourquoi ça se bloque.
//+------------------------------------------------------------------+
//|                     Машка за больший период без перерисовки .mq4 |
//|                                                             Zver |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Zver"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property  indicator_color1 Aqua
extern int Otobrajat_v_istorii = 1000;
extern int ma_shift=0;
extern int ma_method =0;
extern int applied_price=0;


double buf_ma[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
     SetIndexBuffer(0,buf_ma);         // Назначение массива буферу
   SetIndexStyle(0,DRAW_LINE,EMPTY,2);// Стиль линии
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   int i,// Индекс бара
   Counted_bars;
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   if(i>Otobrajat_v_istorii-1) // Если много баров то ..
      i=Otobrajat_v_istorii-1;                  // ..рассчитывать заданное колич.
     
   while(i>=1) // Цикл по непосчитанным барам
     {

    
     buf_ma[i]=iMA(Symbol(),Period(),5,ma_shift,ma_method,applied_price,i);
  
     
     }
   
   
   
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

 
Variante du code
int Err;   //Номер ошибки
int FunErr(int Err) // Функция обработки ошибок
donne un avertissement :
la déclaration de 'Err' cache la déclaration globale à la ligne 51
Une autre variante du code
int Err;   //Номер ошибки
int FunErr(Err) // Функция обработки ошибок
donne une erreur :
Err' - déclaration sans type
Comment l'écrire correctement ?
 
Zver4991:
Je n'arrive pas à comprendre pourquoi ça se bloque.
int i// Indice de barre
while(i>=1) // Cycle à travers les barres non comptées
i>=1toujours.
 
Shurkin:
int i// Index des barres
while(i>=1) // Boucle sur les barres non comptées
i>=1toujours.

C'est vrai, j'avais oublié... merci.

i-- ;

 
//--------------------------------------------------------------------
int Count=0;                                    
//--------------------------------------------------------------------
void OnTick()   
  {
   Count++;
   Comment("Новый тик ", Count);
   //if(Count>2) ExpertRemove();
  }
//--------------------------------------------------------------------
void OnDeinit(const int reason)
  {
   Comment("Сработала ф-ия deinit() при выгрузке");
  }
//--------------------------------------------------------------------

Si on décommente if(Count>2) ExpertRemove(), et qu'on sort par cette fonction, alorsaprès le déchargement de l'EA, le commentaire "Deinit() triggered during unloading" reste affiché sur le graphique.

Quelqu'un sait-il pourquoi, si un tel EA est supprimé du graphique via le menu contextuel, la fonction Comment() de OnDeinit ne reste pas sur le graphique ?

 

Shurkin:

Variante du code
int Err;   //Номер ошибки
int FunErr(int Err) // Функция обработки ошибок
donne un avertissement :
la déclaration de 'Err' cache la déclaration globale à la ligne 51
Une autre variante du code
int Err;   //Номер ошибки
int FunErr(Err) // Функция обработки ошибок
donne une erreur :
Err' - déclaration sans type
Comment l'écrire correctement ?

C'est une erreur de conception du langage en général, défendue au plus haut niveau. Deux faits :

1. Le langage MQL4++ permet de cacher les noms de variables dans des scopes imbriqués.

2. Lorsque l'on cache des noms de variables dans des scopes imbriqués, il doit y avoir un avertissement, qui ne peut pas être désactivé.

Pour répondre à la question, il y a au moins deux possibilités :

1. utiliser le masquage des noms, mais supporter la présence d'un avertissement (mauvais, vous pourriez manquer un autre avertissement vraiment important parmi les nombreux avertissements sur le masquage des noms qui pourrait aider à détecter et éliminer une erreur potentielle).

2. N'utilisez pas le masquage des noms, même si la langue dispose d'une telle fonctionnalité. Par exemple, nommez la variable globale gErr au lieu de Err.

Au lieu d'interdire le masquage des noms, un avertissement inamovible est introduit. Profitez-en.

 

En russe : la bonne option est la première, ignorez les avertissements.

 
tara:

En russe : la bonne option est la première, ignorez les avertissements.

Merci.
 
Où puis-je trouver les descriptions des fonctions dans les fichiers d'inclusion ?
Raison: