Erreurs, bugs, questions - page 2965

 
fxsaber:

J'envoie les ticks de l'indicateur via ceci : sparam contient MqlTick, lparam - numéro de tick.

Le conseiller expert capte ces ticks dans OnChartEvent. Et il doit comprendre si le tick actuel est le plus actuel ou non ? C'est-à-dire, y a-t-il une file d'attente de ticks ou est-elle vide ?

Pour cela, il lit le numéro (la tâche est de lire ce numéro) du dernier tick envoyé par l'indicateur. Si le tick a le même numéro - la file d'attente est vide, et il est possible de commencer à travailler avec les ticks.


Et pendant l'opération de OnTick, après OrderSend il est nécessaire de vérifier si l'indicateur a envoyé plus de ticks. Pour cela, nous devons à nouveau lire le nombre à partir de l'indicateur. Et il peut y avoir plus d'une centaine de ces contrôles au cours d'un OnTick. C'est pourquoi nous devons le lire rapidement.

Je ne fais la vérification que si au moins quelques millisecondes se sont écoulées depuis la vérification précédente. Cette approche est raisonnable et réduit encore plus la charge.

 

Pouvez-vous me dire.

Est-il possible de prendre la valeur du lot sur le panneau de raccordement standard ? Qui se trouve dans le coin supérieur gauche du terminal.

Puis-je appeler par programme le menu d'un indicateur ou d'un Expert Advisor ? Par exemple, en utilisant le bouton.

 
fxsaber:

Je ne fais la vérification que si au moins une milliseconde s'est écoulée depuis la précédente. Cette approche s'est avérée raisonnable et a permis de réduire encore plus la charge.

Peut-être ai-je mal compris, vous pouvez lier l'identifiant de l'événement à un symbole et ne pas passer d'autres paramètres du tout.

 
Fast235:

Peut-être ai-je mal compris, vous pouvez lier l'identifiant de l'événement à un symbole et ne pas passer les autres paramètres du tout.

Très probablement.

 
fxsaber:

J'attends celui-ci.

Pensez - le cerveau doit travailler. Excuses - je ne suis pas un programmeur, etc. - ne sont pas acceptées. Je suis moi-même un musicien. J'ai maîtrisé le C++ par moi-même avec l'aide du livre pour débutants en 2012.

Je pense que c'est encore plus facile pour les non-programmeurs, car il n'y a pas de dogmes ni de stéréotypes. Par exemple, ce"petit monstre" était 2 fois plus court alors que ce prétendu"bon mais incompréhensible code" était 3 fois plus court.

En attendant, je peux vous donner une solution à votre problème précédent :

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Erreurs, bogues, questions

A100, 2020.10.05 20:50

Si vite ? Tous les experts n'ont pas encore adhéré... attendez une semaine.

Conseil : ceci fonctionne aussi (mais la solution est légèrement différente)

#define  MACRO(  x, y, z )       enum nn##z { y = x };
#define  MACRO2( x, y )          MACRO( x, y, __LINE__ )
 

Erreur pendant l'exécution :

void OnStart()
{
    Print( StringToTime( "ABCDEF" ));
}

Résultat : 2021.02.19 01:00:00

Attendu : date erronée

 
A100:

Erreur pendant l'exécution :

Résultat : 2021.02.19 01:00:00

Attendu : date erronée

Discuté.

 
A100:

Pensez - le cerveau doit travailler.

L'option via SHORTNAME de l'indicateur est possible.
 
A100:

ce"petit monstre" est sorti deux fois plus court.

Je ne pense pas.

 
fxsaber:

Discuté.

L'erreur n'est pas évidente à cet endroit car : "peut-être que c'était prévu comme ça".

Le voici après l'exécution de la fonction GetLastError() = ERR_WRONG_STRING_DATE. Si la date est fausse, pourquoi le résultat ne l'est-il pas ?

Raison: