Erreurs, bugs, questions - page 1805

 
Slawa:
Il n'y a pas de contrainte explicite. Essayez-le.

Mais vous pouvez rencontrer une redistribution du tampon au moment de l'ajout d'une nouvelle barre (la redistribution est effectuée avec une certaine réserve, donc pas à chaque nouvelle barre).

Ici, plus de détails, s'il vous plaît. Quelle est la répartition, comment la gérer ?

J'ai juste écrit la question parce que je remarque des "hoquets" sur une nouvelle barre. Et ces hoquets réinitialisent les valeurs des tampons = 0 (avec la valeur vide que j'ai explicitement définie - EMPTY_VALUE). Jusqu'à présent, je n'ai pas réussi à saisir ce moment. Parfois, l'indicateur "saute" et revient immédiatement à la normale, parfois il se "fige". Lorsqu'il est bloqué, les valeurs ne sont pas écrites dans le fichier et les tampons ne sont pas dessinés. Les tampons sont écrits dans OnBookEvent().

Le même code fonctionne bien dans OnCalculate(), mais OnCalculate() ne permet pas de collecter toutes les valeurs de l'intérêt ouvert et des autres paramètres d'échange.

Il ne peut être résolu que par la commutation TF. Oui, 5-7 mêmes indicateurs fonctionnant au même moment, écrivant des données différentes.

Ajouté :

Oui, j'ai aussi remarqué exactement la même chose aujourd'hui en allumant le terminal. Tout se bloque, tous les tampons, toutes les valeurs ont des zéros, aucun historique (écrit dans un fichier) n'a été donné par l'indicateur. En d'autres termes, tout s'est arrêté. Le marché était toujours fermé. J'ai changé de TF - l'historique est revenu, mais à nouveau, à la question de la nécessité d'un horodatage des valeurs de SESSION : la dernière valeur connue au moment de la fermeture du terminal a été enregistrée ! La synchronisation de l'historique a réussi, sans erreur. Mais TimeCurrent() a retourné une valeur erronée (environ 21:03). L'heure réelle de cette valeur est 23:49:59. En somme, une sorte de tristesse.

 
Alexey Kozitsyn:

Ici, plus de détails, s'il vous plaît. Quelle est la répartition, comment la gérer ?

J'ai juste écrit la question parce que je remarque des "hoquets" sur une nouvelle barre. Et ces hoquets valeurs de tampon nulles = 0 (et la valeur vide fixée explicitement par moi - EMPTY_VALUE). Jusqu'à présent, je n'ai pas réussi à saisir ce moment. Parfois, l'indicateur "saute" et revient immédiatement à la normale, parfois il se "fige". Lorsqu'il est bloqué, les valeurs ne sont pas écrites dans le fichier et les tampons ne sont pas dessinés. Les tampons sont écrits dans OnBookEvent().

Le même code fonctionne bien dans OnCalculate(), mais OnCalculate() ne permet pas de collecter toutes les valeurs de l'intérêt ouvert et des autres paramètres d'échange.

Il ne peut être résolu que par la commutation TF. Oui, 5-7 mêmes indicateurs fonctionnent simultanément, en écrivant des données différentes.

C'est facile. Le premier tic-tac d'une nouvelle barre arrive. Le tampon est alloué pour 1000 barres et est complètement plein.

Nous réallouons le tampon à 1250 barres et copions 1000 barres du tampon précédent vers le nouveau tampon. Mettez le nouveau tampon à la place de l'ancien tampon, supprimez l'ancien tampon. On ajoute la 1001e barre.

Que voulez-vous dire par "qu'en faire" ?

Gardez à l'esprit que tous les indicateurs d'un symbole sont comptés séquentiellement l'un après l'autre dans un même fil. Si un indicateur ralentit, l'ensemble du processus de traitement des symboles ralentit également.
 
Slawa:
Facile. Le premier tic-tac de la nouvelle barre arrive. Le tampon est alloué pour 1000 barres et est complètement plein.

Nous réallouons le tampon à 1250 barres et copions 1000 barres de l'ancien tampon vers le nouveau. Mettez le nouveau tampon à la place de l'ancien tampon, supprimez l'ancien tampon. On ajoute la 1001e barre.

Que voulez-vous dire par "qu'en faire" ?

Gardez à l'esprit que tous les indicateurs d'un symbole sont comptés séquentiellement l'un après l'autre dans un même fil. Si un indicateur ralentit, l'ensemble du processus de traitement des symboles ralentit également.
Je suis au courant d'un fil. Et la redistribution, si j'ai bien compris, affecte davantage OnBookEvent() que OnCalculate()?
 
Alexey Kozitsyn:
Je suis au courant du truc du fil unique. Et la redistribution, si je comprends bien, affecte davantage OnBookEvent() que OnCalculate() ?
La redistribution est effectuée lorsqu'un nouveau tick arrive. Immédiatement après l'arrivée d'un nouveau tic, OnCalculate est appelé hors de son tour. Et ce n'est qu'après que le traitement des événements reçus par l'indicateur se poursuit.

Mais, tant que l'indicateur (n'importe quel indicateur sur ce symbole !) n'a pas terminé ses calculs (OnCalculate, OnTimer, OnChartEvent, OnBookEvent), le nouveau tick n'arrivera pas au traitement.
 
Slawa:
La redistribution est effectuée à l'arrivée d'un nouveau tick. Immédiatement après qu'un nouveau tick arrive de la file d'attente , OnCalculate est appelé. Et ce n'est qu'après que le traitement des événements, reçus par l'indicateur, se poursuit.

Cependant, tant que l'indicateur (n'importe quel indicateur sur ce symbole !) n'a pas terminé ses calculs (OnCalculate, OnTimer, OnChartEvent, OnBookEvent), un nouveau tick n'arrivera pas pour être traité.

De plus, d'après ce que je comprends, les indicateurs sur un symbole sont calculés séquentiellement, c'est-à-dire que si j'ai jeté l'indicateur i1, i2, i3 dans une rangée, alors ils seront calculés dans le même ordre ?

J'ai maintenant ajouté un MAKD standard pour le tester ; c'est le dernier de la liste. Je verrai s'il ralentit lorsqu'une nouvelle barre est formée.

 
Alexey Kozitsyn:

De plus, d'après ce que je comprends, les indicateurs sur un symbole sont calculés séquentiellement, c'est-à-dire que si j'ai jeté l'indicateur i1, i2, i3 dans une rangée, alors ils seront calculés dans le même ordre ?

Maintenant, j'ai ajouté un MAKD standard pour le tester, c'est le dernier de la liste. Je vais voir s'il s'y accroche lorsqu'une nouvelle barre est formée.

Au début, oui, le calcul sera dans le même ordre.

Mais si vous supprimez et ajoutez différents indicateurs, la séquence de recalcul peut vous surprendre. Par conséquent, ne vous fiez pas à la séquence
 
Slawa:
Au début, oui, le calcul se fera dans la même séquence.

Mais si vous supprimez et ajoutez différents indicateurs, la séquence de recalcul peut vous surprendre. Ne vous fiez donc pas à la séquence.
C'est nécessaire pour vérifier, si mes indicateurs se bloquent, si le dernier, le MAKD standard, sera calculé. Tous les miens passent avant le MACD.
 
Slawa:

C'est ce dont je parlais :

Une nouvelle barre s'est formée sur GOLD-3.17, tous mes indicateurs calculés dans OnBookEvent() par ce symbole toutes les valeurs actuelles ont été mises à zéro. Selon la logique de l'indicateur, au moment de la formation d'une nouvelle barre, les tampons ne sont pas mis à zéro, et la valeur actuelle y est écrite immédiatement. Le MACD n'est pas remis à zéro. Le journal est vide, cela signifie qu'il n'y a pas eu de désynchronisation, toutes les valeurs devraient être correctes. Dans ce cas, le problème a duré environ 5 secondes. Hier, j'ai eu des pépins pendant plusieurs minutes.

Tous les autres personnages étaient bien. Encore une fois, la logique de l'indicateur ne remet pas les valeurs à 0 ! La question est donc la suivante : lors de la redistribution des nouveaux articles, en théorie, ils devraient contenir des déchets. Mais ici 0.0 et hangs...

Oui, encore une chose : si un indicateur était suspendu, les autres auraient dû conserver leurs valeurs ! Mais tous, d'un seul coup, se sont éteints. Y a-t-il des situations où cela pourrait se produire ?
 

Un blocage similaire s'est produit sur BR-3.17 :

@Slawa une idée de la façon dont il faut creuser ? Peut-être existe-t-il une meilleure façon de collecter les données d'échange et de les afficher ?

 

Que faire en cas d'une telle erreur lors du chargement d'un programme MQL sur un graphique ?

2017.02.15 15:13:28.351 MQL5    'TestLibrary.ex5' has newer unsupported version, please update your client terminal

Service Desk : #1673705

Raison: