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

 
Alexey Kozitsyn:

Quelle heure de fermeture ? J'ai besoin d'une heure d'ouverture...

Tu as le dernier chèque de l'heure d'ouverture du bar qui passe partout, voilà ce que tu obtiens. Immédiatement après l'ouverture du terminal, la barre n'a pas encore été formée dans OnInit.

 
Konstantin Nikitin:

Vous avez le dernier contrôle de l'heure d'ouverture du bar partout, c'est ce que vous obtenez. Immédiatement après l'ouverture du terminal, la barre ne s'est pas encore formée dans OnInit.

...Pas de commentaire, j'ai fini de te parler.

 
Alexey Kozitsyn:

Question ! Pourquoi les données précédentes sont-elles affichées alors que la connexion au serveur a déjà été établie ? Il y avait une pré-requête de données dans OnInit(), une vérification du chargement des données dans chacune des fonctions CheckCurren...(). Combien de contrôles sanglants nous devons faire pour que ça fonctionne correctement...

Il y a beaucoup de symboles et de périodes, si le terminal a été hors ligne pendant une longue période, il doit charger beaucoup de données.
Afin de ne pas attendre ce chargement qui dépend de la vitesse de l'internet et du serveur du courtier, le terminal vous donne les données précédentes en une seule fois.
Ceux qui sont déjà disponibles.

Il ne s'agit donc pas d'une "solution de béquille", mais d'une vérification nécessaire pour le chargement de la dernière bougie.

ps. comment vérifier plus avant l'apparition d'une nouvelle barre?

 
Taras Slobodyanik:

Il y a beaucoup de symboles et de périodes, si le terminal a été hors ligne pendant une longue période, beaucoup de données doivent être téléchargées.
Pour éviter d'attendre ce téléchargement, qui dépend de la vitesse de l'internet et du serveur du courtier, le terminal vous donne immédiatement les données précédentes.
Ceux qui sont déjà disponibles.

Il ne s'agit donc pas d'une "solution de béquille", mais d'une vérification nécessaire pour le chargement de la dernière bougie.

Ressentez-vous le problème de logique ? Si l'historique n'est pas encore chargé, et me laisser sortir "quelque chose" et attendre que les données soient mises à jour. Et peu importe que les données soient correctes ou non...

De plus, même si le terminal est hors ligne pendant 5 à 10 minutes, c'est la même absurdité. Même s'il n'y a que 3 caractères dans la fenêtre de données - la même absurdité. Tous les contrôles ont été effectués - même absurdité.

Vous comprenez que les conseils du développeur concernant le chargement correct ne fonctionnent pas. Ça ne signifie rien pour toi ?

 
La mise à jour 1126 est maintenant arrivée sur MQDemo... Je vérifierai davantage cette version lundi.
 
Alexey Kozitsyn:

Tu sens un problème de logique ? Si l'historique n'a pas encore été téléchargé, laissez-moi donner "quelque chose" et attendez que les données soient mises à jour. Et peu importe que les données soient correctes ou non...

Cette logique ne s'applique qu'au premier symbole d'ouverture.
Le terminal ne sait pas s'il y a d'autres chandeliers, il donne ce qu'il possède.

Puis la dernière bougie apparaît.

 
Taras Slobodyanik:

Cette logique ne fonctionne que la première fois que vous exécutez l'ouverture d'un symbole.
Le terminal ne sait pas s'il y aura d'autres bougies, il vous donne ce qu'il a.

Puis la dernière bougie apparaît.

J'ai mis à jour mon message.

Dites-moi, voulez-vous passer des heures de travail à chaque fois pour comprendre de telles nuances, ou voulez-vous lire la documentation une fois et tout comprendre ? Voulez-vous souffrir des "précharges" ou simplement obtenir une erreur lorsque les données n'ont pas encore été mises à jour ?

 
Taras Slobodyanik:

Au fait, quelle est la version du terminal que vous avez ?

 
Taras Slobodyanik:

ps. comment vérifier plus avant l'apparition d'une nouvelle barre?

//+------------------------------------------------------------------+
//| Проверяем образование нового часа                                |
//+------------------------------------------------------------------+
bool CheckNewHour()     
        {
         //--- Сбрасываем код последней ошибки
         ResetLastError();
         //--- Получаем время открытия текущего часа
         const datetime hOpenTime = iTime( _Symbol, PERIOD_H1, 0 );
         //--- Проверяем корректность полученного времени
         if( hOpenTime == 0 || GetLastError() != 0 )            // Если возникла ошибка или время не получено
                 return( false );                                                                               // Возвращаем ложь
         //--- Сравниваем полученное время с сохраненным
         if( hOpenTime == _hourOpenTime )                                       // Если время совпадает
                 return( false );                                                                               // Возвращаем ложь
         //--- Запоминаем время нового часа
         _hourOpenTime = hOpenTime;
         //--- Возвращаем истину
         return( true );
        }
 

Je ne vois pas de problème, il y a une nouvelle bougie - recalculez la dernière bougie de l'indicateur/conseiller.
Il y a plus d'une nouvelle bougie - faites un nouveau calcul complet de l'indicateur/conseiller.
C'est la même chose - une nouvelle bougie apparaît.

Autre chose - les périodes requises doivent être constamment "tirées" pour les mettre à jour.
Si personne ne travaille sur la période-symbole (les cotations ne sont pas vérifiées, l'indicateur n'est pas en cours d'exécution), il "dort" car il est considéré comme inutile.