FORTS Veuillez nous aider - page 8

 
MigVRN:

Ça l'a toujours été.

C'est un expert en tic-tac qui ne fonctionne pas. Et tout le reste sur le chat. La minuterie et les événements personnalisés n'ont pas vraiment été vérifiés.

Également de l'aide

...Les fichiers de service au format HCC servent de source de données pour construire les données de prix pour les périodes demandées au format HC. Les données au format HC sont des séries chronologiques, qui sont préparées au maximum pour un accès rapide. Ils sont créés uniquement à la demande d'un graphique ou d'un programme mql5 dans un volume ne dépassant pas le paramètre "Max bars in charts", et sont sauvegardés pour une utilisation ultérieure dans des fichiers avec l'extension hc.

Afin d'économiser les ressources, les données de l'échéancier sont chargées et stockées dans la RAM uniquement lorsque cela est nécessaire. En cas d'absence prolongée de demandes, les données sont déchargées de la RAM et sauvegardées dans un fichier. Les données pour chaque période sont préparées indépendamment des données prêtes pour les autres périodes. Les règles de préparation et de disponibilité des données sont les mêmes pour toutes les périodes. Ainsi, malgré le fait que l'unité de stockage des données dans le format HCC est la barre des minutes, la disponibilité des données dans le format HCC ne signifie pas la disponibilité et l'accessibilité des données de la période M1 dans le même volume dans le format HC.

:)

Alors qui va les charger en mémoire, si ce n'est pasSeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date)

Il n'y a pas d'autre fonction !!!!

Pourquoi aller sur le serveur quand les données sont dans le terminal ????

 
Mikalas:

:)

Alors qui va les charger en mémoire, si ce n'est pasSeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date)

Il n'y a pas d'autre fonction !!!!

Pourquoi aller sur le serveur quand les données sont dans le terminal ????

C'est exact - il charge ce qui est là. Mais en raison du fait que tout retard dans l'indicateur ralentit le chat avec tout ce qui est suspendu sur elle - dans les indicateurs nous avons fait de sorte que, si la série au moment de l'appel n'est pas prêt - la fonction va retourner l'erreur et INITIALISER la préparation des données. Après un certain temps, il ne retournera plus d'erreur. C'est ce qui se passe dans vos journaux.
 
MigVRN:
Parce que c'est la première fois qu'il aborde cette série particulière.

J'ai fait le cycle :

long first_date = 0;
    datetime times[1];
    int fail_cnt = 0;
//---
    while ( fail_cnt < 1000 )
    {
      ResetLastError();  
      if ( SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) )
      {
        if ( first_date > 0 )
        {
//--- force timeseries build
          CopyTime( symbol, period, datetime( first_date ) + PeriodSeconds( period ), 1, times );
//--- check date
          if ( SeriesInfoInteger( symbol, period, SERIES_FIRSTDATE, first_date ) )
//---        
          if ( first_date > 0 && first_date <= long( start_date ) )
          {
            return( Bars( symbol, period, start_date, end_date ) );
          } 
        }
      }
      fail_cnt++;
    }

Devinez quel est le résultat ?

 
MigVRN:
Très bien - il charge et prépare ce qui est là. Mais étant donné que tout retard dans l'indicateur ralentit le chat avec tout ce qui est suspendu à lui - dans les indicateurs nous avons fait en sorte que si la série n'est pas prête au moment de l'appel - la fonction retournera une erreur et INITIALISERA la préparation des données. Après un certain temps, il ne retournera plus d'erreur. C'est ce que vous avez dans vos journaux.
Ce temps peut prendre plusieurs appels à OnCalculate() ou même quelques secondes. C'est ainsi que fonctionne la machine à gagner de l'argent. C'est pourquoi il est incorrect d'appeler tout ce qui est lié à l'obtention de données à partir de l'indicateur OnInit().
 
Mikalas:

J'ai fait le cycle :

Devinez quel est le résultat ?

barabashkakvn:
Ce temps peut prendre plusieurs appels à OnCalculate() ou même plusieurs secondes. C'est ainsi que fonctionne une machine à gagner de l'argent. C'est pourquoi il est erroné d'appeler tout ce qui est lié à la récupération des données à partir de OnInit() de l'indicateur.

C'est vrai - le cycle est TRÈS rapide. Pas le temps de se préparer... Je comprends que du point de vue d'un développeur (nous), c'est l'enfer :) Mais vous devrez vous y habituer.

Au fait, Sleep() ne fonctionne pas dans les indicateurs

:)

 
MigVRN:

C'est vrai - le cycle est TRÈS rapide. Pas le temps de se préparer... Je comprends que du point de vue d'un développeur (nous), c'est l'enfer :) Mais vous devrez vous y habituer...

Au fait, Sleep() ne fonctionne pas dans les indicateurs

:)

Merci, Andrey !

La question ne s'adresse pas à vous, elle est rhétorique :

Pourquoi ai-je besoin

SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) ? ???

Si je n'obtiens pas de réponse, je dois contacter le serveur (il se peut qu'il n'y ait vraiment aucune donnée dans le terminal) !

Merci à tous. Les chukchi l'ont eu....

... Et "respect" à MQ !

P/S Je ne lirai plus l'aide...

 
Mikalas:

komposter !

Lorsque vous ne comprenez pas ou mal quelque chose, personne ne vous appelle un Tchouktche.

Pourquoi le feraient-ils ?

Quand je ne comprends pas, j'essaie d'entendre ce qu'on me dit.

Et vous avez obstinément ignoré l'expérience de nombreuses personnes qui ont été confrontées à un problème similaire et l'ont résolu.

C'est ce que j'appelle un "écrivain chukcha".

 
Mikalas:

Alors, quel est le

SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) ? ???

Si je n'obtiens pas de réponse, je dois aller au serveur (les données dans le terminal peuvent vraiment ne pas être là) !

Pour obtenir les données si elles sont prêtes ou pour initier une préparation si la demande se produit pour la première fois.
 
MigVRN:

C'est vrai - le cycle est TRÈS rapide. Pas le temps de se préparer... Je comprends que du point de vue d'un développeur (nous), c'est l'enfer :) Mais vous devrez vous y habituer...

Au fait, Sleep() ne fonctionne pas dans les indicateurs

:)

D'ailleurs, qu'est-ce qui empêche les développeurs d'utiliser laSERIES_TERMINAL_FIRSTDATE

retour :

-1 - pas de données

0 - aucune donnée disponible mais pas prêt

> 0 - la date elle-même

 
Mikalas:

Au fait, les développeurs ont-ils empêché l'identifiantSERIES_TERMINAL_FIRSTDATE

retour :

-1 - pas de données

0 - aucune donnée disponible, mais pas prêt

> 0 - la date elle-même.

Et quelle est la différence entre "non disponible" et "non prêt" pour le programme (et le programmeur) ?

Si les données ne sont pas prêtes, il y aura une erreur.

Ou peut-être que cette information n'est pas non plus disponible instantanément, c'est pourquoi elle n'est pas affichée.

Raison: