Questions des débutants MQL5 MT5 MetaTrader 5 - page 622

 
Comment augmenter le nombre de barres dans le testeur dans MT4 avant d'initialiser l'indicateur ? L'indicateur doit calculer sur l'historique - vous devez vérifier s'il est correct dans le testeur.
 
Autre question, comment puis-je vérifier l'intégrité de l'historique pendant l'initialisation dans MT4 ? Je soupçonne que l'historique est échangé au moment de l'initialisation, ce qui affecte le pré-calcul...
 
-Aleks-:
Autre question, comment puis-je vérifier l'intégrité de l'historique pendant l'initialisation dans MT4 ? Je soupçonne qu'au moment de l'initialisation, l'historique est échangé, ce qui affecte le pré-calcul...
Vérifiez le nombre de barres rates_total. Si rates_total > prev_calculated+1 - alors plus d'une barre a été échangée et donc l'historique est échangé.
 
Alexey Kozitsyn:
Vérifiez le nombre de barres rates_total. Si rates_total > prev_calculated+1 - cela signifie que plus d'une barre a été échangée et donc que l'historique a été échangé.
Et vérifier la fréquence une fois par seconde, et après une longue pause continuer l'initialisation, n'est-ce pas ?
 
-Aleks-:
Et la fréquence de vérification est d'une fois par seconde, et après une longue pause, l'initialisation continue, n'est-ce pas ?

En général, comme on me l'a dit récemment à SD, dans les indicateurs, il est préférable de se passer de minuterie.

Il suffit d'ajouter la condition : if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) comme condition de premier démarrage et de recalcul complet de l'indicateur. Si vous le faites dans OnCalculate(), il n'y aura aucun problème.

 
Et de quelle "longue pause" parlez-vous ?
 
Alexey Kozitsyn:

En général, comme on me l'a dit récemment à SD, il vaut mieux se passer de minuterie dans les indicateurs.

Il suffit d'ajouter la condition : if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) comme condition de premier démarrage et de recalcul complet de l'indicateur. Si vous le faites dans OnCalculate(), il n'y aura pas de problème.

Je veux avoir un calcul correct de la classe de type d'indicateur dans mon Expert Advisor.

Si nous autorisons 10 000 barres par graphique, et que nous les avons, alors Bars ne retournera pas plus de 10000 même s'il y a une nouvelle barre. Alors comment puis-je savoir s'il y a une nouvelle barre lorsque l'historique est chargé ?

 
Et apparemment la vérification ne doit pas être faite à l'initialisation, car l'EA est initialisée lors du chargement du terminal avant de se connecter à DC.....
 
-Aleks-:

J'ai besoin que la classe de type d'indicateur soit calculée correctement dans mon EA.

Je suis donc confus, si 10000 barres par graphique sont autorisées et elles le sont, alors Bars ne retournera pas plus de 10000 barres même si de nouvelles barres apparaissent. Alors comment puis-je savoir s'il y a une nouvelle barre lors du chargement de l'historique ?

Pourquoi pas ? Oui, il le fera. Et Bars() et rates_total vont augmenter. Vérifiez le nombre dans OnCalculate().

Le nombre de barres défini dans le terminal n'a pas d'incidence sur le nombre de barres du testeur (un peu moins de 100000).

 
Alexey Kozitsyn:

Pourquoi pas ? Il le fera. Bars() et rates_total vont augmenter. Vérifiez le nombre dans OnCalculate().

Le nombre de barres défini dans le terminal n'a pas affecté le nombre de barres dans le testeur (un peu moins de 100000).

Non non, je n'en ai pas besoin dans le testeur mais lorsque j'exécute le terminal sur un graphique réel - là, cela ne fonctionnera que si l'historique a moins que le nombre maximum de barres, ou est-ce que je me trompe ?
Raison: