Erreurs, bugs, questions - page 622

 
Dima_S:
Très original)

et quelques autres ajouts.

Si vous créez un indicateur sur le graphique principal, il traite l'événement de la minuterie avec succès.
Si vous créez un indicateur sur un objet graphique ou à partir d'un EA placé sur cet objet, le timer ne se produira pas.

Anton m'a expliqué dans SD que la propriété de disponibilité de la minuterie est copiée à partir du fil graphique à partir duquel l'indicateur est placé. Il n'y a pas de minuterie dans les objets graphiques. Ils ne sont présents que dans le tableau principal.

Ainsi, l'indicateur de temporisation ne sera disponible que dans le graphique principal et non dans l'objet graphique.

Vous devez exécuter ChartIndicatorAdd dans tous les cas. Pour que la minuterie commence à fonctionner.

 
Rosh:

Les événements de la minuterie sont générés pour le graphique et, de là, pour les programmes qui s'exécutent sur lui (lancés par-dessus). C'est l'idéologie - l'exécution du programme:

C'est pourquoi l'indicateur appelé depuis le conseiller expert n'accepte pas les événements de minuterie. Essayez d'appliquer l'indicateur au graphique en utilisant la fonction ChartIndicatorAdd, cela changera-t-il quelque chose ?

Je pense que le minuteur fonctionnerait aussi bien que si vous mettiez simplement un indicateur sur ce graphique. S'il n'y avait qu'un seul tableau, pas de problème.

Nous avons besoin de rassembler plusieurs graphiques avec différentes devises en un seul.

Nous devrons automatiser l'ouverture d'un grand nombre de petites fenêtres et leur chargement avec "indicateur" (pour l'instant).

Merci à tous pour vos réponses avisées.

 

Dima_S:

Nous devrons automatiser l'ouverture d'un tas de petites fenêtres et y jeter un "inducteur" (pour l'instant).

Pourquoi ? Vous attrapez par minuterie, donc vous n'avez pas besoin de beaucoup de fenêtres. La seule fenêtre avec l'indicateur est suffisante. Dans cet indicateur, prescrire la manipulation de n'importe quoi avec n'importe quel symbole. C'est toujours sur la minuterie, pas sur les tics.
 
sergeev:
Pourquoi ? Vous attrapez par minuterie, donc vous n'avez pas besoin de beaucoup de fenêtres. Une fenêtre avec un indicateur est suffisante. Dans cet indicateur, vous pouvez prescrire le traitement de n'importe quoi avec n'importe quel symbole. C'est toujours sur la minuterie, pas sur les tics.
Le fait est que les ticks sont également capturés sur de nombreuses paires - ils forment des seconds comptes et sont ensuite envoyés par mapping à l'EA pour un traitement ultérieur).
 
Dima_S:
Le fait est que les ticks sont également capturés par de nombreuses paires, à partir desquelles des seconds comptes sont formés, puis ils sont envoyés via le mapping à Expert Advisor pour une perversion supplémentaire du traitement).
Il est alors plus facile de récupérer les ticks des indices dans le conseiller expert et de les sauvegarder jusqu'à ce que le prochain comptage de secondes soit reçu d'un seul chronomètre (dans le conseiller expert), puis de former un deuxième paquet et d'effacer l'"accumulateur".
 
Rosh:

Les événements de la minuterie sont générés pour le graphique et, de là, pour les programmes qui s'exécutent sur lui (lancés par-dessus). C'est l'idéologie - l'exécution du programme:

Par conséquent, l'indicateur qui est appelé depuis le conseiller expert n'accepte pas les événements de temporisation. Essayez d'appliquer l'indicateur à un graphique dans le conseiller expert avec la fonction ChartIndicatorAdd- est-ce que quelque chose va changer ?

Dima_S:

Je pense que le minuteur fonctionnera de la même manière que lorsque vous lancez simplement l'indicateur sur le graphique. Si je n'avais qu'un seul tableau, il n'y aurait pas de problème.

Je devrais rassembler plusieurs graphiques avec différentes devises en un seul.

Nous devrons automatiser l'ouverture d'un grand nombre de petites fenêtres et leur chargement avec "indicateur" (pour l'instant).

Merci à tous pour les réponses compétentes.

Taki, la minuterie n'a pas fonctionné avec cette séquence d'appels de l'Expert Advisor :

ChartOpen -> iCustom -> ChartIndicatorAdd

Des graphiques sont apparus et des indicateurs ont été ajoutés. La minuterie n'a commencé à fonctionner qu'après avoir appelé manuellement les propriétés de chaque nouveau graphique et cliqué sur OK sans modification.

C'est un bug ? Un bug ?

 
MetaDriver:
Il est alors plus facile d'obtenir des ticks dans Expert Advisor à partir des inducteurs et de les sauvegarder jusqu'à la prochaine seconde à partir d'une seule minuterie (dans Expert Advisor), puis de former un deuxième lot et d'éliminer le "thésauriseur".
Ce n'est pas plus facile, c'est plus compliqué. Je l'ai déjà fait de cette façon)
 
Dima_S:

Taki, le timer n'a pas fonctionné tout seul avec cette séquence d'appels du Conseiller Expert :

ChartOpen -> iCustom -> ChartIndicatorAdd

Des graphiques sont apparus et des indicateurs ont été ajoutés. La minuterie n'a commencé à fonctionner qu'après avoir appelé manuellement les propriétés de chaque nouveau graphique et cliqué sur OK sans modification.

Un bug ? Un bug ?

Appelez OnTimer() dans Inite.

 
Dima_S:
Ce n'est pas plus simple, mais plus compliqué. Je l'ai déjà fait de cette façon).

Alors nous devrons rendre les choses plus difficiles. :)

C'est la seule bonne manière de le faire de toute façon.

Jugez-en par vous-même. Même si vous parvenez à démarrer tous les timers (ce qui n'est pas un fait), et même si vous parvenez à les faire fonctionner en stricte synchronisation (ce qui est encore plus un fait), vous obtiendrez toujours des informations de leur part soit de manière séquentielle, et dans un ordre inconnu (s'il n'y a qu'un seul cœur) ou proche de celui-ci (s'il y a plusieurs cœurs). Et puis vous devez suivre la séquence et toutes ces conneries.

Je suggère un compromis : vous attrapez les ticks par des espions et les envoyez immédiatement au conseiller expert principal avec une marque de milliseconde(GetTickCount()). Expert Advisor les classe en fonction de leurs étiquettes et les découpe en seconds blocs.

Ce n'est pas très simple, mais ce sera précis.

 
Urain:
Appelez OnTimer() dans l'init.
Maintenant, vous allez avoir un vrai coup de pied dans la fourmilière... :))
Raison: