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

 
Alexey Kozitsyn:

Lire le point 1.

Pour obtenir l'heure d'ouverture de la barre, le timer n'est d'aucune utilité, et toute autre donnée, si ce n'est d'un autre symbole différent du graphique. Si elle n'est pas liée à un symbole différent du graphique actuel, mais à une autre TF du symbole actuel, elle est intéressante. Il ne sera pas mis à jour avant l'arrivée des nouvelles données. Mais tout votre travail est basé sur le symbole actuel. Ne vous embêtez donc pas avec la minuterie. Le reste en tant que tel est mâché à plusieurs reprises. Le sujet a tourné en rond.

 
Konstantin Nikitin:

Pour obtenir l'heure d'ouverture de la barre, le timer n'est d'aucune utilité, et toute autre donnée, si ce n'est d'un autre symbole différent du graphique. Si elle n'est pas liée à un symbole différent du graphique actuel, mais à une autre TF du symbole actuel, il est intéressant de la vérifier toutes les millisecondes. Il ne sera pas mis à jour avant l'arrivée des nouvelles données. Mais tout votre travail est basé sur le symbole actuel. Ne vous embêtez donc pas avec la minuterie. Le reste en tant que tel est mâché à plusieurs reprises. Le sujet a tourné en rond.

Mon pote, il est évident que tu ne comprends pas ce qui se passe ici. Il ne s'agit plus de la minuterie, oublie-la. La minuterie renvoie à mon vrai problème. Le problème maintenant est l'erreur dans les données reçues. Le point 1, que je vous ai conseillé de lire, dit qu'en présence de IsConnected(), l'indicateur ne se connectera au serveur que lors du deuxième événement OnCalculate(). Donc votre conseil précédent est inutile.

 
Alexey Kozitsyn:

Mec, tu ne comprends clairement pas ce qui se passe ici. Il ne s'agit plus de la minuterie, oublie-la. La minuterie renvoie à mon vrai problème. Le problème maintenant est l'erreur dans les données reçues. Le point 1, que je vous ai conseillé de lire, dit qu'en présence de IsConnected(), l'indicateur ne se connectera au serveur que lors du deuxième événement OnCalculate(). Donc votre conseil précédent est inutile.

L'avez-vous vérifié expérimentalement ? Je conseille de le vérifier. Donc redémarrez le terminal avec le test.

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[]
)
{
   static int num = 1;
   
     
     if( IsConnected() )
          if( num == 1 )
               Comment( "Test: ", num );
     num++;
     return(rates_total);
}

Et qu'est-ce que tu vois ?

Au premier passage, s'il y a une connexion au serveur, tout fonctionne.

 
Konstantin Nikitin:

L'avez-vous testé empiriquement ? Je vous suggère de le faire. Donc redémarrez le terminal avec le test.

Et qu'est-ce que tu vois ?

Au premier passage, s'il y a une connexion au serveur, tout fonctionne.

Qui, dans son bon sens et son esprit, fait des tests lorsque le marché ne fonctionne pas ?

Et oui, je l'ai testé empiriquement, c'est ce que j'ai écrit.

 
Alexey Kozitsyn:

Qui, dans son bon sens et son esprit, fait des tests lorsque le marché ne fonctionne pas ?

Et oui, je l'ai testé expérimentalement, et c'est ce que j'ai écrit.

Cela n'a rien à voir avec le fait que le marché fonctionne ou non. L'indicateur a été lancé et son analyse a commencé. Le résultat de la première passe est dans le commentaire. Vous avez dit

Alexey Kozitsyn:

Vous devriez le lire - il s'agit du fait que si IsConnected() est présent, l'indicateur ne se connectera au serveur que lors du deuxième événement OnCalculate(). Donc votre conseil précédent est inutile.

 
Konstantin Nikitin:

Qu'est-ce que cela a à voir avec le fait que le marché fonctionne ou non ? L'indicateur a commencé, l'analyse est en cours. Le résultat de la première passe est dans le commentaire. Tu as dit.

Ouais. Très bien. Maintenant, éteignez le terminal avec cet indicateur installé sur le graphique et exécutez-le à nouveau.

 
Alexey Kozitsyn:

Oups. Très bien, alors. Maintenant, éteignez le terminal avec votre indicateur installé sur la carte et remettez-le en marche.

Donc ce tableau

a été réalisé quelques minutes avant sa première publication. C'est-à-dire, aujourd'hui. Et c'était après que le terminal ait été redémarré.
La connexion avec le serveur est établie pendant le week-end également. La même balance à vérifier, peut obtenir les dernières données, si elle a été déconnectée avant la fermeture de la session.

 
Konstantin Nikitin:

Donc ce graphique

et il a été réalisé quelques minutes avant sa première publication. C'est-à-dire, aujourd'hui. Et c'était après que le terminal ait été redémarré.
La connexion au serveur est également établie pendant le week-end. La même balance à vérifier, peut obtenir les dernières données, si elle a été déconnectée avant la fermeture de la session.

#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   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[])
  {
//---
   if( !IsConnected() )
     {
        Print( __FUNCTION__,": IsConnected = false" );
        return( 0 );
     }
   //---
   Print( "Connected!" );
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

J'obtiens un résultat :

2018.10.06 18:24:32.261 test_isConnected GBPUSD,M1: initialized
2018.10.06 18:24:32.313 test_isConnected GBPUSD,M1: OnCalculate: IsConnected = false
2018.10.06 18:24:33.080 test_isConnected GBPUSD,M1: Connected!
Et votre code n'affiche aucun commentaire lors du chargement.
 
Alexey Kozitsyn:

J'obtiens un résultat :

Et votre code n'affiche aucun commentaire lorsqu'il est chargé.

Eh bien, c'est possible. Mon serveur est parfois indisponible pour maintenance le dimanche, mais pas pour longtemps. C'est peut-être l'une des raisons de l'absence de connexion.
Cela peut être une autre raison pour laquelle le terminal ne peut pas se connecter au serveur avant que l'indicateur ne démarre.
Mon terminal se connecte immédiatement.

 
Konstantin Nikitin:

Ça peut très bien être le cas. Mon serveur sera peut-être indisponible pour maintenance dimanche, mais il ne le restera pas longtemps. C'est peut-être l'une des raisons de l'absence de connexion.
Cela peut être une autre raison pour laquelle le terminal n'a pas le temps de se connecter au serveur avant le démarrage de l'indicateur.
Mon terminal se connecte immédiatement.

Alors faites simple : chargez mon indicateur avec vos modifications sur le graphique maintenant. Éteignez le terminal. Rallumez-la le lundi et voyez le résultat. Toute discussion supplémentaire est inutile.

Raison: