Erreurs, bugs, questions - page 1494

 
Maxim Khrolenko:
À mon avis, vous pouvez utiliser OnTimer() ici, pour appeler un événement toutes les X millisecondes.
Cette solution a depuis longtemps donné lieu à une variante plus précise : placer des indicateurs sur les symboles requis et envoyer l'événement utilisateur au conseiller expert.
 
zaskok3:
Nouvel événement d'arrivée des tiques dans Marketwatch. Similaire à OnTick, mais seulement il réagit aux nouveaux ticks non pas d'un symbole, mais de tous ceux qui sont signés dans Marketwatch.

Avec le flux de cotation actuel, même leurs propres ticks peuvent arriver par lots, tout en traitant un autre OnTick.

Pour une raison quelconque, beaucoup de gens pensent que lorsqu'un événement se produit, le gestionnaire de cet événement est instantanément activé, même si un autre événement est traité par le même conseiller expert (c'est-à-dire en parallèle). Ce n'est pas le cas.

Tous les événements sont alignés dans une file d'attente générale pour le même conseiller expert. Le conseiller expert les traitera un par un. Dans ce cas, tout dépend du programmeur - de l'efficacité avec laquelle il met en œuvre le traitement d'un certain événement. Mais même si le programmeur est un super programmeur et qu'il a une super voiture, il fera quand même gonfler la file d'attente s'il y a beaucoup d'événements (et d'autant plus s'il y a des tics de caractères étrangers).

Quels sont les arguments pour vouloir les tics des personnages d'autres personnes ? "Je ne veux pas faire tourner la minuterie pour repérer les bons personnages, car je risque d'arriver trop tard pour la distribution". Et comme l'événement de tic-tac d'un autre symbole (surtout si plusieurs symboles sont surveillés) peut être retardé dans la file d'attente par son propre traitement d'un autre événement, la probabilité d'être en retard pour le don est beaucoup plus élevée.

Croyez-moi, nous avons effectivement discuté d'événements concernant les tics des autres. C'est pourquoi nous sommes arrivés à la conclusion qu'il est bien mieux d'utiliser un minuteur.

 
zaskok3:

Dans MQL4++, je ne peux pas me passer de l'extern lorsque j'ai besoin de modifier les paramètres d'entrée de manière programmatique.

Il n'y a absolument rien qui vous empêche de travailler avec des variables régulières. Pour les indicateurs interactifs, il n'y a essentiellement pas besoin de paramètres constants externes, qui ne sont pas contrôlés par votre interactivité.

Vous êtes juste paresseux et vous demandez une redondance irrationnelle, que vous n'utiliserez pas parce qu'il existe une alternative qui fonctionne.

 
Joo Zepper:
Quels conseils donneriez-vous aux propriétaires de plusieurs moniteurs ? Comment organiser un travail efficace avec le terminal ?

Tous les onglets et fenêtres de service (boîte à outils, testeur, aperçu du marché, navigateur, fenêtre de données, barres d'outils) doivent être placés sur un moniteur distinct.

Ne laissez que les graphiques dans la fenêtre du terminal. Étendre la fenêtre du terminal sur plusieurs moniteurs ayant la même taille et la même résolution

 
o_O:

Vous feriez mieux de ne pas demander d'explication sur le fait que cet événement n'est pas dans MT.

Vous devez écrire au Service Desk en expliquant en détail comment vous pensez que cela devrait fonctionner et pourquoi 99% des traders en ont besoin.

o_O:

Rien ne vous empêche de travailler avec des variables normales. Pour les indicateurs interactifs, il n'est pas nécessaire d'avoir des paramètres externes qui ne sont pas contrôlés par votre interactivité.

Vous êtes simplement paresseux et exigez une redondance irrationnelle que vous n'utiliserez pas vous-même puisqu'il existe déjà une alternative viable.

Je ne comprends pas une perception aussi agressive d'un raisonnement calme. Quelque chose vous a semblé anormal... Il n'y en a pas, tout va bien, calmez-vous. Vous n'êtes pas R...

Maxim Khrolenko:
Je pense que vous pouvez utiliser OnTimer() ici, appeler l'événement toutes les X millisecondes.
o_O:
Cette solution a déjà été développée de manière plus précise - mettre des indicateurs sur les symboles requis et envoyer l'événement personnalisé au conseiller expert.

Je sais, c'est pourquoi j'ai écrit tout de suite :

zaskok3:

Pour une raison quelconque, ils proposent des solutions de béquille via un timer ou une perversion encore plus grande - OnChartEvent.

Slawa, je ne comprends pas bien ta logique :

Slawa:

Quels sont les arguments pour vouloir les tics des personnages d'autres personnes ? "Je ne veux pas faire tourner le chronomètre pour repérer les bons personnages parce que je risque d'être en retard pour le don". Et comme l'événement de tic-tac d'un autre symbole (surtout si plusieurs symboles sont surveillés) peut être retardé dans la file d'attente par son propre traitement d'un autre événement, la probabilité d'être en retard à la distribution est beaucoup plus élevée.

Croyez-moi, nous avons discuté des événements concernant les tics des autres. C'est pourquoi nous sommes arrivés à la conclusion suivante : "il vaut mieux utiliser un minuteur".

Alors à quoi sert d'avoir OnTick, si un timer est suffisant pour ses propres ticks aussi ? Ma logique peut ne pas fonctionner correctement. Mais mon raisonnement est le suivant : puisqu'il y a OnTick, il doit aussi y avoir OnMarketWatch. Puisque OnMarketWatch peut être implémenté par OnTimer, la même chose peut être faite avec OnTick. Ainsi, l'existence de OnTick a le même raisonnement que l'existence de OnMarketWatch. Mais l'un existe et l'autre pas.

La file d'attente OnTick est remise à zéro pour les ticks qui étaient là lorsque le OnTick actuel a été exécuté (dans les EA, c'est ainsi). Le débordement de la file d'attente dont nous parlons n'est pas clair. Il n'est pas raisonnable de faire tourner la minuterie au ralenti pendant les week-ends. Et les EAs ne déclenchent pas OnTick à chaque tick. C'est la raison pour laquelle il est impossible de collecter les ticks sans les sauter dans l'EA. La file d'attente est vidée, et c'est normal. Il n'y a pas de débordements.

 

zaskok3:

Slawa, je ne comprends pas bien ta logique :

Alors quel est l'intérêt d'avoir OnTick, si un timer est suffisant pour ses propres ticks également ? Ma logique, peut-être, ne fonctionne pas correctement. Mais mon raisonnement est le suivant : s'il y a OnTick, il doit aussi y avoir OnMarketWatch. Puisque OnMarketWatch peut être implémenté par OnTimer, la même chose peut être faite avec OnTick. Ainsi, l'existence de OnTick a le même raisonnement que l'existence de OnMarketWatch. Mais l'un existe et l'autre pas.

La file d'attente OnTick est remise à zéro pour les ticks qui étaient au moment de l'exécution du OnTick actuel (dans les EA, c'est le cas). La raison du débordement de la file d'attente n'est pas claire. Il n'est pas raisonnable de faire tourner la minuterie au ralenti pendant les week-ends. Et les EAs ne déclenchent pas OnTick à chaque tick. C'est la raison pour laquelle il est impossible de collecter des ticks sans les sauter dans l'EA. La file d'attente est vidée, et c'est normal. Il n'y a pas de débordements.

OnTick est passé sans transition de la fonction de démarrage quadruple à la fonction de démarrage.

OnTick couvre 99% des besoins et vous permet d'écrire des programmes simples.

Il ne s'agit pas de faire déborder la file d'attente. Il s'agit de donner du volume - les événements ne sont pas perdus.

Il n'y a pas de files d'attente distinctes pour les événements individuels (file d'attente OnTick). Il existe une file d'attente commune pour tous les événements d'un même conseiller expert.

Mais la file d'attente est réapprovisionnée en événements de manière assez intelligente - s'il y a un événement NewTick brut dans la file d'attente, les autres événements NewTick n'y sont pas ajoutés. S'il y a un événement Timer brut dans la file d'attente, les autres événements Timer ne sont pas ajoutés à la file d'attente. Etc.

Sur le caractère raisonnable ou déraisonnable de la minuterie. En fait, le minuteur ne prend pas autant de ressources que vous le pensez. D'ailleurs, le terminal client a plusieurs minuteries qui fonctionnent simultanément pour ses propres besoins. Ils fonctionnent tout le temps et la charge du processeur est nulle.

 
Slawa:

OnTick couvre 99% de vos besoins et vous permet d'écrire des programmes simples.

Dans les 99%, si vous renommez OnTick en OnTimer dans le code source en faisant de l'initialisation du timer une autre (une ligne), le résultat ne changera pas - il fonctionnera comme avant et le programme sera toujours aussi simple.

OnTick est passé en douceur de la fonction de démarrage quadruple à la fonction de démarrage.

Maintenant, c'est un oui. La plupart des gens y sont plus habitués. C'est la raison principale.

Merci de consacrer autant d'attention aux clarifications. J'ai une demande pour ajouter le code source de l'implémentation artificielle de OnMarketWatch via timer. Dans mon implémentation, je dois me souvenir des ticks précédents de tous les symboles et les comparer avec les valeurs actuelles à chaque étape du timer. En cas de différence, générer un événement pour appeler OnMarketWatch. Et justement, cette action semble déraisonnable. En d'autres termes, nous ne pouvons pas exécuter OnTimer à vide aux sorties. Nous devons continuer à comparer. Il existe peut-être une meilleure solution. C'est pourquoi je vous demande de me montrer votre variante. Comment vous le feriez.


Je considère toujours les bicyclettes avec OnChartEvent comme une perversion. Comme il faut ouvrir autant de graphiques que de caractères dans Market Watch.

 
Mes amis, il y a probablement une situation vraiment paradoxale.
En théorie, si je comprends bien, si un abonné aux signaux augmente l'effet de levier sur son compte de 1:200 à 1:500, cela devrait entraîner une multiplication par deux au moins des volumes d'ouverture.
La même situation s'applique à la charge de dépôt ; si elle est augmentée, les volumes devraient augmenter.
Un de mes abonnés écrit qu'il a augmenté l'effet de levier de 1:200 à 1:500 et la charge de 50% à 90%. Mais après cela, le volume des positions ouvertes n'a pas changé dans un sens ou dans l'autre. En même temps, le solde de son compte aurait dû le permettre.
Peut-être que je ne comprends pas bien le système de copie ?
 
Artem Prischepa:
...
Arrêtez de poser des questions au nom d'abonnés imaginaires (ou fictifs). Si un abonné a une question, qu'il la pose lui-même. Sinon, je considérerai que c'est de la publicité pour le signal.
 
Karputov Vladimir:
Arrêtez de poser des questions au nom d'abonnés imaginaires (ou fictifs). Si un abonné a une question, qu'il la pose lui-même. Sinon, je considérerai qu'il s'agit d'une publicité pour le signal.
Je crains que vous ne m'ayez mal compris. Mon signal n'a pas eu besoin de publicité depuis longtemps. J'essaie de comprendre les aspects techniques du service que j'utilise. Néanmoins, je suis le premier à être abordé.
Raison: