Pouvez-vous me dire où dans ce code l'appel à TimeCurrent est effectué ?
L'heure d'ouverture du bar est donc toujours la même qu'avant la fermeture du terminal. Une nouvelle barre est formée et l'heure est mise à jour. Quel est le problème ?
L'heure d'ouverture du bar est la même que celle que nous avons reçue avant la fermeture du terminal. Une nouvelle barre est formée et l'heure est mise à jour. Quel est le problème ?
Le problème, c'est que le terminal s'éteint lorsque la dernière barre horaire du graphique est à 22 heures. Il est éteint à 22h45, par exemple. S'allume à 23:01 - demande de temps pour la dernière heure après que la connexion au serveur ait été établie et après la pré-demande à OnInit() sans aucun timer - c'est toujours 22 heures. C'est normal, tu crois ?
Vérifiez le temps des bougies, pas le calcul des barres. C'est ainsi qu'il sera mis à jour correctement (coché).
//--- Проверяем первый запуск индикатораif(prev_calculated<=0 ||
_weekOpenTime!=iTime(_Symbol,PERIOD_W1,0)+SEC_PER_DAY ||
_dayOpenTime!=iTime(_Symbol,PERIOD_D1,0) ||
_hourOpenTime!=iTime(_Symbol,PERIOD_H1,0) )
{
_weekOpenTime= 0;
_dayOpenTime = 0;
_hourOpenTime= 0;
//--- Проверяем, записано ли время открытия текущей неделиif(!CheckCurrentWeekOpenTime()) // Если время не записаноreturn(0); // Выходим//--- Проверяем, записано ли время открытия текущего дняif(!CheckCurrentDayOpenTime()) // Если время не записаноreturn(0); // Выходим//--- Проверяем, записано ли время открытия текущего часаif(!CheckCurrentHourOpenTime()) // Если время не записаноreturn(0); // Выходим//--- Устанавливаем флаг соединения с сервером для запуска таймера
_isConnected=true;
//---Print(__FUNCTION__,": Данные старших ТФ загружены!");
}
Si je comprends bien, le terminal donne pour la première fois les dernières données qu'il a dans l'historique, puis elles sont téléchargées depuis le serveur.
Vérifiez le temps des chandeliers, pas le calcul des barres. C'est ainsi qu'il sera mis à jour correctement (coché).
De quel type de calcul de barre parlons-nous ?
Je vais vérifier votre variante, mais en fait vous avez juste ajouté une requête de données "idle" dans OnCalculate() et c'est tout. Et par logique, il n'arrivera même pas à la requête "idle", car prev_calculated <= 0 sera déjà exécuté et le premier bloc d'exécution sera exécuté.
De toute façon, c'est une béquille, il ne doit pas y avoir de telles situations dans la langue. La connexion est établie, la fonction d'acquisition de données est vérifiée pour détecter les erreurs et l'exactitude des données obtenues. Mais au final, qu'est-ce qu'on obtient ? Les données sont toujours fausses.
En fait, si nous voulons être sûrs, nous pouvons simplement demander l'heure actuelle dans l'inite et ensuite demander l'heure actuelle dans OnCalculate() et les comparer jusqu'à ce qu'elles soient différentes. Mais c'est la même béquille et ça ne devrait pas être le cas.
Le problème, c'est que le terminal s'éteint lorsque la dernière barre horaire du graphique est à 22 heures. Il est éteint à 22h45, par exemple. S'allume à 23:01 - demande de temps pour la dernière heure après que la connexion au serveur ait été établie et après la pré-demande à OnInit() sans aucun timer - c'est toujours 22 heures. Est-ce normal selon vous ?
L'heure de clôture de la dernière barre sera TimeCurrent(c'est-à-dire actuelle). Cela semble être ce dont vous avez besoin, à en juger par votre question.
Taras Slobodyanik: Si je comprends bien, le terminal, pour la première fois, sort les dernières données qu'il a dans l'historique, puis le chargement depuis le serveur se produit.
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 dois-je faire pour que tout fonctionne correctement...
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Essayez vous-même. Démarrez l'indicateur, éteignez le terminal et rallumez-le lorsque la nouvelle heure arrive.
Donc si vous obtenez TimeCurrent
Renvoie la dernière heure connue du serveur, l'heure d'arrivée de la dernière cotation par l'un des symboles sélectionnés dans Market Watch.
Donc si vous obtenez TimeCurrent
Renvoie la dernière heure connue du serveur, l'heure d'arrivée de la dernière cotation pour l'un des symboles sélectionnés dans Market Watch.
Pouvez-vous me dire où se trouve l'appel TimeCurrent dans ce code ?
Pouvez-vous me dire où dans ce code l'appel à TimeCurrent est effectué ?
L'heure d'ouverture du bar est donc toujours la même qu'avant la fermeture du terminal. Une nouvelle barre est formée et l'heure est mise à jour. Quel est le problème ?
L'heure d'ouverture du bar est la même que celle que nous avons reçue avant la fermeture du terminal. Une nouvelle barre est formée et l'heure est mise à jour. Quel est le problème ?
Le problème, c'est que le terminal s'éteint lorsque la dernière barre horaire du graphique est à 22 heures. Il est éteint à 22h45, par exemple. S'allume à 23:01 - demande de temps pour la dernière heure après que la connexion au serveur ait été établie et après la pré-demande à OnInit() sans aucun timer - c'est toujours 22 heures. C'est normal, tu crois ?
Vérifiez le temps des bougies, pas le calcul des barres.
C'est ainsi qu'il sera mis à jour correctement (coché).
Vérifiez le temps des chandeliers, pas le calcul des barres.
C'est ainsi qu'il sera mis à jour correctement (coché).
De quel type de calcul de barre parlons-nous ?
Je vais vérifier votre variante, mais en fait vous avez juste ajouté une requête de données "idle" dans OnCalculate() et c'est tout. Et par logique, il n'arrivera même pas à la requête "idle", car prev_calculated <= 0 sera déjà exécuté et le premier bloc d'exécution sera exécuté.
De toute façon, c'est une béquille, il ne doit pas y avoir de telles situations dans la langue. La connexion est établie, la fonction d'acquisition de données est vérifiée pour détecter les erreurs et l'exactitude des données obtenues. Mais au final, qu'est-ce qu'on obtient ? Les données sont toujours fausses.
En fait, si nous voulons être sûrs, nous pouvons simplement demander l'heure actuelle dans l'inite et ensuite demander l'heure actuelle dans OnCalculate() et les comparer jusqu'à ce qu'elles soient différentes. Mais c'est la même béquille et ça ne devrait pas être le cas.
Le problème, c'est que le terminal s'éteint lorsque la dernière barre horaire du graphique est à 22 heures. Il est éteint à 22h45, par exemple. S'allume à 23:01 - demande de temps pour la dernière heure après que la connexion au serveur ait été établie et après la pré-demande à OnInit() sans aucun timer - c'est toujours 22 heures. Est-ce normal selon vous ?
L'heure de clôture de la dernière barre sera TimeCurrent (c'est-à-dire actuelle). Cela semble être ce dont vous avez besoin, à en juger par votre question.
Si je comprends bien, le terminal, pour la première fois, sort les dernières données qu'il a dans l'historique, puis le chargement depuis le serveur se produit.
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 dois-je faire pour que tout fonctionne correctement...
L'heure de clôture de la dernière barre sera TimeCurrent, ce dont vous semblez avoir besoin d'après votre question.
Quelle heure de fermeture ? J'ai besoin d'une heure d'ouverture...