Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1453

 
ANDREY:

Et que fait exactement le testeur à chaque tic , s'il n'y a pas un seul symbole dans le programme qu'il exécute, qui lui donnerait une commande ?

Eh bien, le testeur crée une simulation du marché. Il envoie un nouveau prix à votre EA à chaque tick. Et comme il y a 53 000 tics, il faut un temps considérable pour les envoyer tous. Tout cela se passe avant l'exécution du code EA. Ce qu'il faut écrire dans l'EE est l'affaire du programmeur et n'a rien à voir avec le travail du testeur.

 

Le temps total comprend le temps de fonctionnement du testeur et le temps de préparation du testeur. La durée de fonctionnement de votre testeur est minimale (traitée en) dans les deux modes. Le temps de préparation est standard quel que soit le mode.

 
ANDREY:

Lors du test aux PRIX D'OUVERTURE - sur les 160 ordres qui ont été ouverts à CHAQUE TICK, seuls 120 ont été ouverts, et de plus pas aux prix intra-minutes (comme le code l'exige).

Ici, tout est entre les mains du programmeur : comment construire la logique, comment cela va fonctionner, rechercher les erreurs de compréhension du programme.

Travailler sur les tiques sur une longue histoire prend beaucoup de temps. Et comme il y aura un grand nombre d'essais, le temps de calcul doit être réduit. Par conséquent, il est préférable de développer un Expert Advisor avec le contrôle de l'ouverture d'une nouvelle barre et d'utiliser le mode - par les prix d'ouverture. Et ensuite étudier et analyser ce qui ne va pas.

 
Aleksei Stepanenko:

Eh bien, le testeur crée une opération de marché simulée. Il envoie un nouveau prix à votre EA à chaque tick. Et comme il y a 53 000 ticks, il faut un temps considérable pour les envoyer tous. Tout cela se passe avant l'exécution du code EA. Ce qu'il faut écrire dans l'EE est l'affaire du programmeur et n'a rien à voir avec le travail du testeur.

Merci pour ces informations. Cependant, les phrases jaunes et grises semblent se contredire. Il semble que le testeur envoie TOUS les ticks avec les prix à mon conseiller expert au moment où la fonction OnTick() commence à fonctionner. Mais, lorsque OnTick( ) commence à fonctionner , le testeur n'envoie pas les ticks avec les prix au Conseiller Expert. Dans ce cas, que faire si ce ne sont pas les ticks qui vont traiter les lignes de programme de mon EA ? Je suis désolé si je vous ai mal compris.

 
Aleksei Stepanenko:

Tout ici est entre les mains du programmeur : quel type de logique construire, comment cela va fonctionner, rechercher les erreurs dans la compréhension du fonctionnement du programme.

Travailler sur les tiques sur une longue histoire prend beaucoup de temps. Et comme le testeur s'exécutera un grand nombre de fois, le temps de calcul doit être réduit. Par conséquent, il est préférable de développer un Expert Advisor avec le contrôle de l'ouverture d'une nouvelle barre et d'utiliser le mode - par les prix d'ouverture. Et ensuite étudier et analyser ce qui ne va pas.

Êtes-vous d'accord que si les ordres sont ouverts dans une bougie minute sur des ticks, le modèle BAR OPENING PRICES n'ouvrira pas d'ordres aux prix des ticks dans une bougie minute ? Même si nous contrôlons l'ouverture de chaque bougie minute.

 
Aleksei Stepanenko:

Le temps total comprend le temps de fonctionnement du testeur et le temps de préparation du testeur. La durée de fonctionnement de votre testeur est minimale (traitée en) dans les deux modes. La préparation prend le temps habituel, quel que soit le mode.

Cela signifie que vous ne pouvez économiser le temps d'exécution du testeur que sur les données traitées en

 
Bonjour, je ne savais pas où écrire un peu hors sujet, j'ai besoin d'un indicateur pour l'application Binance, il y a un "indicateur configurable" ajouté par saisie directe d'un code. Si vous pouvez aider, voici la mission :
"Identifier la bougie d'impulsion"

1. Comparaison de la taille du corps d'un chandelier qui vient d'être fermé avec les chandeliers précédents (nombre de chandeliers précédents X (doit être modifié dans la fenêtre des paramètres de l'indicateur ou dans le code lui-même ?)

2. le chandelier doit être plus grand que les chandeliers précédents de Y% (possibilité de changer le Y dans la fenêtre des paramètres de l'indicateur ou dans le code)

3. L'ombre d'un chandelier ne fait pas plus de Z% du corps du chandelier (elle doit aussi changer).

Lorsque les trois conditions sont remplies, il est souhaitable d'envoyer une notification à l'adresse électronique.
J'en ai déjà un au format luac, mais j'en ai besoin sur Binance.

 
ANDREY:

Il s'avère que le testeur envoie TOUS les ticks avec les prix à mon conseiller expert au moment où la fonction OnTick() commence à fonctionner.

OnTick() est la fonction de capture d'événement, où l'événement est l'arrivée d'un tick au terminal, ou l'imitation de cette arrivée dans le testeur. S'il y a un code dans OnTick(), il sera exécuté à chaque tick entrant. Si un nouveau tick arrive au moment du traitement de l'ancien tick, le nouveau tick n'est pas placé dans la file d'attente mais est ignoré (en mode trade). S'il n'y a pas de code dans OnTick(), le tick active également cette fonction, mais le code n'est pas là, donc il n'y a rien à exécuter.

 
Aleksei Stepanenko:

OnTick() est une fonction de capture d'événement, où l'événement est l'arrivée d'un tick dans le terminal, ou une arrivée simulée dans le testeur. Les ticks arrivent les uns après les autres et activent la fonction. S'il y a du code dans OnTick(), alors il traite chaque tick qui arrive. Si un nouveau tick arrive alors que l'ancien est en cours de traitement, le nouveau tick est ignoré et n'est pas placé dans la file d'attente. S'il n'y a pas de code dans OnTick(), le tick active également cette fonction, mais il n'y a pas de code à cet endroit, il n'y a donc rien à résoudre.

Je l'ai. Merci.

 
Bonjour, pouvez-vous m'aider à comprendre pourquoi PrintFormat() a besoin du signe %, si sans lui les valeurs sont enregistrées comme dans Print() ?
PrintFormat("%s %d : épaule = 1:%I64d",
server,login,leverage);