Erreurs, bugs, questions - page 1392

 
Karputov Vladimir:

La variable count doit être incrémentée avant de quitter OnCalculate() - cette variable comptera alors correctement toutes les exécutions dans OnCalculate.

Il ne doit pas les compter tous, mais seulement jusqu'au calcul de l'Ishimoku. Pendant tout ce temps, le compte était supérieur ou égal à 0, puis à -1. En fait, ça n'a pas d'importance. Ce qui est important, c'est que

1) Au premier démarrage de l'indicateur, il a été appelé une fois (OnCalculate) et il n'a pas démarré avant le prochain tick (les week-ends et jours fériés jusqu'à plusieurs jours), si nous n'appuyons pas sur le bouton "Refresh".

2) A ce premier appel, l'indicateur Ishimoku n'a pas eu le temps de calculer (sans parler d'indicateurs plus complexes).

3) Si vous utilisez OnTimer au lieu de OnCalculate (ou appelez OnCalculate à partir de OnTimer), un utilisateur peut lancer un indicateur qui sera construit automatiquement, sinon il/elle doit appuyer sur le bouton Rafraîchir (probablement plusieurs fois) ou attendre les prochains ticks. Ce qui est un inconvénient évident, par rapport au même MT4.

Anatoli Kazharski:
C'est tout à fait normal dans les indicateurs simples. Mais dans les cas plus complexes, il arrive qu'il ne fonctionne pas correctement. )
À mon avis, il est plus facile d'utiliser OnTimer plutôt que OnCalculate.
 
Ilya Malev:

Là, il ne fallait pas tout compter, mais seulement jusqu'au calcul de l'Ishimoku. Pendant tout ce temps, le compte était supérieur ou égal à 0, puis à -1. En général, cela n'a pas d'importance. Ce qui est important, c'est que

...

L'idée est que l'utilisateur puisse voir le nombre d'entrées dans OnCalculate. En même temps, dans OnCalculate lui-même, lorsque le résultat deCopyBuffer est supérieur à zéro, les messages sur la réussite de l'obtention des valeurs dans le tampon sont affichés. Par conséquent, le nombre d'entrées réussies dans OnCalculate est visuellement visible.
 
Karputov Vladimir:
L'idée est que l'utilisateur puisse voir le nombre d'entrées dans OnCalculate. Dans ce cas, dans le OnCalculate lui-même, lorsque le résultat deCopyBuffer est supérieur à zéro, les messages concernant la réception réussie des valeurs dans le tampon sont émis. Par conséquent, le nombre d'entrées réussies dans OnCalculate est visuellement visible.

Je comprends, c'est juste que nous sommes déjà allés un peu au-delà de cet exemple. Il a été utilisé, trié et ramené à l'essentiel. L'exemple a confirmé que dès la première exécution, le calcul n'a pas lieu le week-end. Ça l'a confirmé pour moi, du moins. Il aurait fallu cliquer sur "Mise à jour" tout le temps. Personnellement, je trouve cela inacceptable pour les utilisateurs. Je vais donc essayer de le faire via OnTimer.

 

Il n'est pas possible d'attendre que les séries chronologiques soient prêtes dans OnCalculate, car tout se bloquerait. Par conséquent, s'il n'est pas prêt, nous créons un EventTimer pendant une milliseconde et vérifions l'état de préparation dans OnTimer. Dès que la série chronologique est prête, nous appelons OnCalculate et tuons la minuterie avec KillTimer.

J'ai une autre question : comment puis-je être sûr à 100% que toutes les séries chronologiques requises sont prêtes ou non ?

 

Il semble que OnTimer dans les indicateurs, qui sont appelés par d'autres indicateurs, ne fonctionne pas du tout. Par conséquent, vous ne pourrez pas les mettre à jour via OnTimer. Il semble que je doive supporter des dizaines de clics inutiles sur le graphique "Rafraîchir" pendant l'opération, par rapport à MT4.

Et comme par malchance, cela se fera à chaque fois à l'aide de la souris à partir du menu, car il n'y a pas d'option de ce type dans la barre d'outils, ni de touche de raccourci pour cela. Et il existe des indicateurs "lourds", qui sont construits bien plus longtemps qu'une seconde.

 
Ilya Malev:

... Et il existe des indicateurs "lourds" dont la construction prend beaucoup plus d'une seconde.

J'ai rencontré le problème des indicateurs "lourds". Regardez les liens dans l'ordre - vous serez intéressés.

Le point clé - un seul indicateur lourd pour un symbole ralentit le travail de tous les EAs sur ce symbole.Même sur un autre chat ! !! Les indicateurs lourds sont diaboliques :)

2)Un thème avec une description et des options pour résoudre le problème

3.la solution au problème au sein du marché

 
Andrey Miguzov:

J'ai rencontré le problème des indicateurs "lourds". Jetez un coup d'œil aux liens dans l'ordre - vous serez intéressé.

Je n'ai pas besoin d'échanger des données entre les EA et les indicateurs, et les indicateurs eux-mêmes, bien que "lourds" en partie, mais effectuent des calculs relativement longs seulement au moment du calcul de tout l'historique au départ.

Le problème est que je ne peux pas attendre le calcul de tous les autres indicateurs utilisés dans cet indicateur au premier démarrage de OnCalculate, et OnCalculate lui-même n'est rappelé qu'au prochain tick, ce qui n'est pas le cas le week-end par exemple. Vous ne pouvez pas utiliser OnTimer à la place de (ou avec) OnCalculate, car il ne sera pas appelé dans les indicateurs qui n'ont pas été appelés par un utilisateur, mais par exemple ont été appelés depuis un autre indicateur utilisant iCustom (c'est le cas jusqu'à présent selon mes tests). Je voudrais trouver une solution pour que l'indicateur attende automatiquement le calcul de tous les indicateurs qu'il utilise et fournisse des informations sans intervention de l'utilisateur (sans appuyer régulièrement sur le bouton "Rafraîchir" du menu déroulant du graphique, si la fréquence des nouveaux ticks n'est pas suffisante pour cela).

 
Ilya Malev:

Je n'ai pas besoin d'échanger des données entre les Expert Advisors et les indicateurs, et les indicateurs eux-mêmes, bien que "lourds" en partie, mais ils effectuent des calculs relativement longs uniquement au moment du calcul de l'ensemble de l'historique au départ.

Le problème est que je ne peux pas attendre le calcul de tous les autres indicateurs utilisés dans cet indicateur au premier démarrage de OnCalculate, et OnCalculate lui-même n'est rappelé qu'au prochain tick, ce qui n'est pas le cas le week-end par exemple. Vous ne pouvez pas utiliser OnTimer à la place de (ou avec) OnCalculate, car il ne sera pas appelé dans les indicateurs qui n'ont pas été appelés par un utilisateur, mais par exemple ont été appelés depuis un autre indicateur utilisant iCustom (c'est le cas jusqu'à présent selon mes tests). J'aimerais trouver une solution pour que l'indicateur puisse attendre automatiquement le calcul de tous ses indicateurs et fournir des informations sans intervention de l'utilisateur (sans appuyer régulièrement sur le bouton "Rafraîchir" du menu déroulant du graphique, si la fréquence des nouveaux ticks n'est pas suffisante pour cela).

Si la tâche est définie de cette manière, ce n'est vraiment pas nécessaire.

Mais nous pouvons créer un Expert Advisor qui créera des indicateurs, recevra des données de ceux-ci, traitera les données et transmettra le résultat au visualiseur de l'indicateur. Alors il n'y aura pas tous ces problèmes que vous avez décrits. Et bien d'autres problèmes encore...

La solution n'est pas très jolie, mais elle permet de se débarrasser des problèmes décrits.

 

BONJOUR, POURRIEZ-VOUS ME CONSEILLER, LORSQUE J'OUVRE UN COMPTE RÉEL SUR MT5, COMBIEN DE TEMPS FAUT-IL POUR QU'UN EMPLOYÉ DE LA SOCIÉTÉ M'APPELLE ET TERMINE LA PROCÉDURE D'OUVERTURE DU COMPTE ?

 
galustyan10:

BONJOUR, POURRIEZ-VOUS ME CONSEILLER, LORSQUE J'OUVRE UN COMPTE RÉEL SUR MT5, COMBIEN DE TEMPS FAUT-IL POUR QU'UN EMPLOYÉ DE LA SOCIÉTÉ M'APPELLE ET TERMINE LA PROCÉDURE D'OUVERTURE DU COMPTE ?

Pourquoi tu cries ? Vous recevez votre identifiant et votre mot de passe lorsque vous enregistrez votre compte. Il s'agit généralement d'un compte personnel sur le site web du courtier.