[Erreur dans la récupération de l'heure du senior TF dans le chronomètre ! - page 8

 
Igor Makanu:

3. point d'analyse intéressant, ce que retourne CopyClose(), je l'ai vérifié moi-même, s'il n'y a pas de fichier .hst pour le TF demandé, CopyClose() ne retourne jamais plus de 2048 - c'est-à-dire que c'est la valeur maximale qui peut être téléchargée ?

No. 2048 est la partie des données qui est téléchargée du serveur lorsqu'il n'y a pas de fichier sur le client.

 
вSlava:

Non. 2048 est un morceau de données qui est téléchargé du serveur quand il n'y a pas de données sur le client.

Hm, je fais des MQL depuis longtemps, mais c'est toujours inattendu pour moi.

OK, voici un exemple tiré de l'aide: https://www.mql5.com/ru/docs/series/timeseries_access

il est dit que :

Le prochain contrôle important consiste à vérifier le type de programme à partir duquel la fonction est appelée. Rappelons que l'envoi d'une demande de mise à jour de séries temporelles avec la même période que l'indicateur demandant la mise à jour est hautement indésirable. Le caractère indésirable de la demande de données de la même période que celle de l'indicateur est déterminé par le fait que la mise à jour des données historiques est effectuée dans le même thread, dans lequel l'indicateur travaille. Il y a donc une forte probabilité de conflit. Pour le vérifier, nous utilisons la fonctionMQL5InfoInteger() avec le modificateurMQL5_PROGRAM_TYPE.

c'est-à-dire l'exemplehttps://www.mql5.com/ru/code/449

il ne convient pas pour le chargement de données historiques dans un indicateur MT4, et comment puis-je télécharger l'historique complet par l'indicateur, s'il n'y a pas de fichier .hst préparé, c'est-à-dire que l'indicateur initialise le chargement de l'historique par son propre symbole.

comment puis-je savoir qu'ici j'ai "téléchargé" l'historique complet égal à iBars(Symbol(),PERIOD_CURRENT) ;

iBars() retournera également une valeur incorrecte ? - il n'y a pas encore d'historique, donc il n'y a pas de iBars()

il semble que dans MT5 l'historique est téléchargé sans problèmes, il faut juste attendre et vérifier le statut des données historiques, mais dans MT4 ?

PS : dans kodobase hier je cherchais un indicateur multidevise fonctionnant correctement pour MT4, mais les codes ne sont pas sujets à imitation, dans de nombreux exemples de kodobase, en général il n'y a pas de pagination de l'historique dans l'indicateur

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 

Chez les quadruplés, la touche "home" a été enfoncée. Il n'y a pas d'autre moyen. Si vous étudiez le sujet depuis un certain temps, vous devez vous souvenir de l'expression "brique sur le clavier".

https://www.mql5.com/ru/code/9968

https://www.mql5.com/ru/code/9153

https://www.mql5.com/ru/code/9888

ZG_All_Quotings 3.2
ZG_All_Quotings 3.2
  • www.mql5.com
Скайп-чат поддержки продукта: Последние версии библиотек, скриптов и приложений: Сей скрипт продолжение темы закачек котировок обновлением графика. Решил не обновлять старую версию, а выложить заново. Это принципиально новый скрипт. Удалось добиться максимальной надёжности его работы за счёт переноса функций WinAPI в DLL. Скрипт, как и...
 
Igor Makanu:

Vous pouvez consulter mon programme de téléchargement gratuit.

 
Alexey Kozitsyn:

Vous pouvez voir mon téléchargeur gratuit.

Je sais comment télécharger l'historique, mais je ne sais pas comment vérifier l'indicateur de téléchargement.

Slava:

En quadruple "appuyez sur la touche d'accueil". Il n'y a pas d'autre moyen. Si vous étudiez le sujet depuis longtemps, vous devez vous souvenir de l'expression "brique sur le clavier".

https://www.mql5.com/ru/code/9968

https://www.mql5.com/ru/code/9153

https://www.mql5.com/ru/code/9888

Lorsque j'ai commencé à utiliser MQL ces dernières années, je n'ai pas du tout appris MQL, depuis cette année, je suis vraiment surpris que les développeurs aient rendu la compatibilité entre MT5 et MT4 aussi grande que possible et aient amélioré les performances de MQL4 - même si on nous a dit auparavant que MT4 en tant que projet ne sera plus développé, il n'y a que des bugs à corriger.

et voici un espoir que je n'ai pas trouvé d'information sur le chargement automatique de l'historique dans l'indicateur MT4

Fondamentalement, si vous voulez garantir le téléchargement de tout l'historique dans MT4 et sans vérifications supplémentaires, alors il est plus facile d'utiliser le code dfix - écrire la date de la barre t=0 dans le fichier .hst ;

 
Igor Makanu:

Alors comment suggérez-vous que je regarde votre code ?

Je pensais que vous aviez juste besoin que l'historique soit chargé automatiquement...

 

À mon grand regret, je dois revenir une fois de plus sur le sujet de l'obtention de données TF senior dans MT4. Cette fois, c'est parce que les techniques suggérées ici n'ont pas fonctionné.

Voici le code que nous utilisons :

#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- Время открытия текущего часа, дня и недели
datetime _weekOpenTime = 0;
datetime _hourOpenTime = 0;
datetime _dayOpenTime=0;
//--- Вести лог журнала
const bool inpFileLog=true;
//--- Количество секунд в одном дне
const int SEC_PER_DAY=86400;
//--- Флаг работоспособности индикатора
bool _isWorking=true;
//--- Флаг соединения с торговым сервером (для таймера, получаем в OnCalculate())
bool _isConnected=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Сбрасываем время открытия текущего часа, дня и недели
   _weekOpenTime= 0;
   _dayOpenTime = 0;
   _hourOpenTime= 0;
//--- Устанавливаем флаг работоспособности
   _isWorking=true;
//--- Сбрасываем флаг установки соединения
   _isConnected=false;
//--- Запускаем таймер
   if(!EventSetMillisecondTimer(20))
     {
      Print(__FUNCTION__,": ОШИБКА #",GetLastError(),": таймер с частотой 20 не установлен!");
      //--- Устанавливаем флаг неработоспособности индикатора
      _isWorking=false;
     }
//--- Запрос данных
   SeriesInfoInteger(_Symbol,PERIOD_W1,SERIES_LASTBAR_DATE);
   SeriesInfoInteger(_Symbol,PERIOD_D1,SERIES_LASTBAR_DATE);
   SeriesInfoInteger(_Symbol,PERIOD_H1,SERIES_LASTBAR_DATE);
//---
   return( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                   |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Выключаем таймер
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   if(!_isWorking)
      return;
//---
   if(!_isConnected)
      return;
//---
   Print(__FUNCTION__,": Данные старших ТФ загружены!");
//--- Отключаем таймер
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--- Проверяем связь с сервером
   if(!IsConnected())                              // Если не удалось установить связь с сервером
     {
      //--- Сбрасываем флаг соединения с сервером
      _isConnected=false;
      //--- Выходим
      return( 0 );
     }
//--- Проверяем первый запуск индикатора
   if(prev_calculated<=0)
     {
      //--- Проверяем, записано ли время открытия текущей недели
      if(!CheckCurrentWeekOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Проверяем, записано ли время открытия текущего дня
      if(!CheckCurrentDayOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Проверяем, записано ли время открытия текущего часа
      if(!CheckCurrentHourOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Устанавливаем флаг соединения с сервером для запуска таймера
      _isConnected=true;
     }
//---
   return( rates_total );
  }
//+------------------------------------------------------------------+
//| Проверяем, записано ли время открытия текущей недели             |
//+------------------------------------------------------------------+
bool CheckCurrentWeekOpenTime()
  {
//--- Проверяем, записано ли время
   if(_weekOpenTime==0) // Если время не записано
     {
      //--- Получаем время открытия недельного бара
      ResetLastError();
      const datetime weekBarOpenTime=(datetime)SeriesInfoInteger(_Symbol,PERIOD_W1,SERIES_LASTBAR_DATE);
      const int err=GetLastError();
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Время открытия недельного бара = "+TimeToString(weekBarOpenTime)+". Ошибка #",err);
        }
      //--- Проверяем, получено ли время открытия недельного бара
      if(weekBarOpenTime==0 || err!=0) // Если время бара не получено или история обновляется
         return(false);                              // Возвращаем ложь
      //--- Запоминаем время открытия текущей недели (время открытия недельного бара - воскресенье)
      _weekOpenTime=weekBarOpenTime+SEC_PER_DAY;
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Актуальное время открытия текущей недели = "+TimeToString(_weekOpenTime)+". Ошибка #",err);
        }
      //--- Возвращаем истину
      return( true );
     }
//--- Время открытия недели ранее записано. Возвращаем истину
   return( true );
  }
//+------------------------------------------------------------------+
//| Проверяем, записано ли время открытия текущего дня                  |
//+------------------------------------------------------------------+
bool CheckCurrentDayOpenTime()
  {
//--- Проверяем, записано ли время
   if(_dayOpenTime==0) // Если время не записано
     {
      //--- Получаем время открытия дневного бара
      ResetLastError();
      const datetime tempDayOpenTime=(datetime)SeriesInfoInteger(_Symbol,PERIOD_D1,SERIES_LASTBAR_DATE);
      const int err=GetLastError();
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Время открытия текущего дня = "+TimeToString(tempDayOpenTime)+". Ошибка #",err);
        }
      //--- Проверяем, получено ли время открытия дневного бара
      if(tempDayOpenTime==0 || err!=0) // Если время бара не получено
         return(false);                                 // Возвращаем ложь
      //--- Сохраняем в глобальную переменную значение открытия текущего дня
      _dayOpenTime=tempDayOpenTime;
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Актуальное время открытия текущего дня = "+TimeToString(_dayOpenTime)+". Ошибка #",err);
        }
      //--- Возвращаем истину
      return( true );
     }
//--- Время открытия дня ранее записано. Возвращаем истину
   return( true );
  }
//+------------------------------------------------------------------+
//| Проверяем, записано ли время открытия текущего часа              |
//+------------------------------------------------------------------+
bool CheckCurrentHourOpenTime()
  {
//--- Проверяем, записано ли время
   if(_hourOpenTime==0) // Если время не записано
     {
      //--- Получаем время открытия часового бара
      ResetLastError();
      const datetime tempHourOpenTime=(datetime)SeriesInfoInteger(_Symbol,PERIOD_H1,SERIES_LASTBAR_DATE);
      const int err=GetLastError();
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Время открытия текущего часа = "+TimeToString(tempHourOpenTime)+". Ошибка #",err);
        }
      //--- Проверяем, получено ли время открытия часового бара
      if(tempHourOpenTime==0 || err!=0) // Если время бара не получено
         return(false);                                 // Возвращаем ложь
      //---
      _hourOpenTime=tempHourOpenTime;
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Актуальное время открытия текущего часа = "+TimeToString(_hourOpenTime)+". Ошибка #",err);
        }
      //--- Возвращаем истину
      return( true );
     }
//--- Время открытия часа ранее записано. Возвращаем истину
   return( true );
  }
//+------------------------------------------------------------------+

Il met en œuvre la pagination des données comme on me l'a conseillé :

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

[SERVICESDESK] Erreur dans la récupération de l'heure de l'ancien TF dans le timer !

Slava, 2018.09.27 06:20

Ce sujet a été abordé à de nombreuses reprises. 12 pages sur "erreur 4066".

Et on vous a conseillé à juste titre d'envoyer la requête dans OnInit et de l'analyser dans OnCalculate.

Pourquoi avez-vous besoin d'une minuterie en millisecondes ? Vous empêchez le terminal client de démarrer normalement. Ce ne sont pas les messages du vent qui interfèrent avec votre minuterie, c'est votre minuterie qui interfère avec tout le monde. Encore une fois : LES INDICATEURS DANS LE TERMINAL MT4 DU CLIENT TRAVAILLENT EN POTENTIEL D'INTERFACE.

L'implémentation est exactement la suivante : la première demande de données a lieu dans OnInit(). Ensuite, nous attendons que la connexion avec le serveur commercial soit établie, puis dans OnCalculate() ! nous obtenons les données du TF élevé. Nous obtenons le résultat lors du premier lancement aujourd'hui :

2018.10.04 09:10:56.266 test_isNewDayInOnCalculate EURGBP.e,M1: OnTimer: Данные старших ТФ загружены!
2018.10.04 09:10:56.237 test_isNewDayInOnCalculate EURGBP.e,M1: test_isNewDayInOnCalculate.mq4: Актуальное время открытия текущего часа = 2018.10.03 09:00. Ошибка #0
2018.10.04 09:10:56.237 test_isNewDayInOnCalculate EURGBP.e,M1: test_isNewDayInOnCalculate.mq4: Время открытия текущего часа = 2018.10.03 09:00. Ошибка #0
2018.10.04 09:10:56.237 test_isNewDayInOnCalculate EURGBP.e,M1: test_isNewDayInOnCalculate.mq4: Актуальное время открытия текущего дня = 2018.10.03 00:00. Ошибка #0
2018.10.04 09:10:56.237 test_isNewDayInOnCalculate EURGBP.e,M1: test_isNewDayInOnCalculate.mq4: Время открытия текущего дня = 2018.10.03 00:00. Ошибка #0
2018.10.04 09:10:56.237 test_isNewDayInOnCalculate EURGBP.e,M1: test_isNewDayInOnCalculate.mq4: Актуальное время открытия текущей недели = 2018.10.01 00:00. Ошибка #0
2018.10.04 09:10:56.237 test_isNewDayInOnCalculate EURGBP.e,M1: test_isNewDayInOnCalculate.mq4: Время открытия недельного бара = 2018.09.30 00:00. Ошибка #0

Comme nous pouvons le voir dans le journal, nous avons obtenu des valeurs erronées pour l'heure et le jour.

Oui, les développeurs(@Slava) peuvent remarquer que je n'ai pas appliqué tous les conseils qui m'ont été donnés. En d'autres termes, j'exécute toujours le timer rapide dans OnInit(), bien qu'on m'ait conseillé à l'origine d'exécuter le timer lent. Cependant, dans ce cas, c'est fait exprès. Si la minuterie rapide est lancée dans le thread de l'interface et qu'elle peut ralentir la récupération des données des autres indicateurs, cela pose un gros problème. La documentation ne contient aucun avertissement à ce sujet, vous pouvez mettre un programme avec une minuterie rapide qui peut devenir une sorte de "virus" et provoquer des "pannes" d'autres programmes.

Au vu de ce qui précède, je pense que nous devrions soit introduire des restrictions sur le timer en millisecondes, soit préciser dans la documentation de EventSetMillisecondTimer() que la fonction ne peut pas être lancée dans OnInit() pour permettre au terminal de se lever normalement au démarrage.

 
Aujourd'hui, à l'ouverture de la journée, la situation est similaire, l'erreur s'est répétée. Banc d'essai : un graphique, trois indicateurs. Deux n'utilisent pas de minuterie, le troisième le fait. Tous ont reçu des données incorrectes lors du chargement. J'ai maintenant supprimé l'indicateur qui utilise une minuterie du graphique et je vais voir ce qui se passe.
 

Maintenant, la partie amusante. Le code est sans aucune minuterie :

#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- Время открытия текущего часа, дня и недели
datetime _weekOpenTime = 0;
datetime _hourOpenTime = 0;
datetime _dayOpenTime=0;
//--- Вести лог журнала
const bool inpFileLog=true;
//--- Количество секунд в одном дне
const int SEC_PER_DAY=86400;
//--- Флаг работоспособности индикатора
bool _isWorking=true;
//--- Флаг соединения с торговым сервером (для таймера, получаем в OnCalculate())
bool _isConnected=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Сбрасываем время открытия текущего часа, дня и недели
   _weekOpenTime= 0;
   _dayOpenTime = 0;
   _hourOpenTime= 0;
//--- Устанавливаем флаг работоспособности
   _isWorking=true;
//--- Сбрасываем флаг установки соединения
   _isConnected=false;
//--- Запрос данных
   SeriesInfoInteger(_Symbol,PERIOD_W1,SERIES_LASTBAR_DATE);
   SeriesInfoInteger(_Symbol,PERIOD_D1,SERIES_LASTBAR_DATE);
   SeriesInfoInteger(_Symbol,PERIOD_H1,SERIES_LASTBAR_DATE);
//---
   return( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                   |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--- Проверяем связь с сервером
   if(!IsConnected())                              // Если не удалось установить связь с сервером
     {
      //--- Сбрасываем флаг соединения с сервером
      _isConnected=false;
      //--- Выходим
      return( 0 );
     }
//--- Проверяем первый запуск индикатора
   if(prev_calculated<=0)
     {
      //--- Проверяем, записано ли время открытия текущей недели
      if(!CheckCurrentWeekOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Проверяем, записано ли время открытия текущего дня
      if(!CheckCurrentDayOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Проверяем, записано ли время открытия текущего часа
      if(!CheckCurrentHourOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Устанавливаем флаг соединения с сервером для запуска таймера
      _isConnected=true;
      //---
      Print(__FUNCTION__,": Данные старших ТФ загружены!");
     }
//---
   return( rates_total );
  }
//+------------------------------------------------------------------+
//| Проверяем, записано ли время открытия текущей недели             |
//+------------------------------------------------------------------+
bool CheckCurrentWeekOpenTime()
  {
//--- Проверяем, записано ли время
   if(_weekOpenTime==0) // Если время не записано
     {
      //--- Получаем время открытия недельного бара
      ResetLastError();
      const datetime weekBarOpenTime=(datetime)SeriesInfoInteger(_Symbol,PERIOD_W1,SERIES_LASTBAR_DATE);
      const int err=GetLastError();
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Время открытия недельного бара = "+TimeToString(weekBarOpenTime)+". Ошибка #",err);
        }
      //--- Проверяем, получено ли время открытия недельного бара
      if(weekBarOpenTime==0 || err!=0) // Если время бара не получено или история обновляется
         return(false);                              // Возвращаем ложь
      //--- Запоминаем время открытия текущей недели (время открытия недельного бара - воскресенье)
      _weekOpenTime=weekBarOpenTime+SEC_PER_DAY;
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Актуальное время открытия текущей недели = "+TimeToString(_weekOpenTime)+". Ошибка #",err);
        }
      //--- Возвращаем истину
      return( true );
     }
//--- Время открытия недели ранее записано. Возвращаем истину
   return( true );
  }
//+------------------------------------------------------------------+
//| Проверяем, записано ли время открытия текущего дня                  |
//+------------------------------------------------------------------+
bool CheckCurrentDayOpenTime()
  {
//--- Проверяем, записано ли время
   if(_dayOpenTime==0) // Если время не записано
     {
      //--- Получаем время открытия дневного бара
      ResetLastError();
      const datetime tempDayOpenTime=(datetime)SeriesInfoInteger(_Symbol,PERIOD_D1,SERIES_LASTBAR_DATE);
      const int err=GetLastError();
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Время открытия текущего дня = "+TimeToString(tempDayOpenTime)+". Ошибка #",err);
        }
      //--- Проверяем, получено ли время открытия дневного бара
      if(tempDayOpenTime==0 || err!=0) // Если время бара не получено
         return(false);                                 // Возвращаем ложь
      //--- Сохраняем в глобальную переменную значение открытия текущего дня
      _dayOpenTime=tempDayOpenTime;
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Актуальное время открытия текущего дня = "+TimeToString(_dayOpenTime)+". Ошибка #",err);
        }
      //--- Возвращаем истину
      return( true );
     }
//--- Время открытия дня ранее записано. Возвращаем истину
   return( true );
  }
//+------------------------------------------------------------------+
//| Проверяем, записано ли время открытия текущего часа              |
//+------------------------------------------------------------------+
bool CheckCurrentHourOpenTime()
  {
//--- Проверяем, записано ли время
   if(_hourOpenTime==0) // Если время не записано
     {
      //--- Получаем время открытия часового бара
      ResetLastError();
      const datetime tempHourOpenTime=(datetime)SeriesInfoInteger(_Symbol,PERIOD_H1,SERIES_LASTBAR_DATE);
      const int err=GetLastError();
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Время открытия текущего часа = "+TimeToString(tempHourOpenTime)+". Ошибка #",err);
        }
      //--- Проверяем, получено ли время открытия часового бара
      if(tempHourOpenTime==0 || err!=0) // Если время бара не получено
         return(false);                                 // Возвращаем ложь
      //---
      _hourOpenTime=tempHourOpenTime;
      //---
      if(inpFileLog)
        {
         Print(__FILE__,": Актуальное время открытия текущего часа = "+TimeToString(_hourOpenTime)+". Ошибка #",err);
        }
      //--- Возвращаем истину
      return( true );
     }
//--- Время открытия часа ранее записано. Возвращаем истину
   return( true );
  }
//+------------------------------------------------------------------+

Et vous n'arrivez toujours pas à obtenir le résultat que vous voulez. Les développeurs(@Slava), veuillez commenter. Il est impossible d'obtenir des données correctes lors du chargement du terminal à partir de plusieurs TF supérieurs. La condition obligatoire est que le terminal doit être éteint plus d'une heure après l'arrêt (car nous obtenons des données de la barre d'une heure). Et, bien sûr, démarrage sur TF moins d'une heure.

Le chronomètre s'est avéré ne pas être impliqué.
 
Alexey, tu interroges les données des TF seniors dans l'Inite. Pas encore de connexion, le plus probable est qu'il ait retourné une erreur. Essayez de faire une demande avec le premier tic-tac qui arrive.
Je ne peux pas le vérifier, je suis au chalet et je n'ai pas apporté ma tablette avec moi.