Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 894

 
rapid_minus:

Aïe ! Gourou ! Vous vous êtes cassé le doigt dans la paume ?

Tu pensais que je n'avais rien d'autre à faire ? Je suis surpris d'entendre ça...

Personne d'autre que vous ne peut trouver une erreur de logique, car personne ne sait ce que vous faites. Et tout le monde a un style d'écriture différent et pour moi personnellement, il est difficile de lire votre code, je ne vois pas l'appariement des parenthèses. Chaque parenthèse fermante est située en dessous de la parenthèse ouvrante et chaque paire de parenthèses n'est pas équidistante du bord gauche. Ce problème a été résolu lorsque les crochets n'étaient pas mis en évidence, et ils ne le sont pas non plus sur le forum maintenant.

Qu'est-ce que (condition A, B, C, D, D, E) ? Apparemment, il y a une erreur ici, mais je n'en suis pas sûr. Et vous êtes sûr que les commandes sont ouvertes avec les magiciens listés ? Comprenez-vous les méthodes permettant de trouver les erreurs logiques ? On vous a conseillé à plusieurs reprises de désimprimer le code et de voir où l'exécution entre et où elle n'entre pas, et vous continuez à demander de l'aide.

 
tuner:
Probablement... il existe des fonctions intégrées dans MQl4 liées à l'enregistrement et au chargement des modèles : ChartSaveTemplate, ChartApplyTemplate
Je l'ai, merci !
 

Je voulais écrire un script simple pour créer un segment(ligne de tendance) sur un graphique avec le début à l'endroit où le script est lancé (pas de problème avec ça) et la fin aux coordonnées où le clic gauche de la souris sera fait... C'est là que j'ai trébuché... Comment le faire dans un indicateur ou un expert pour capter cet événement est élémentaire, COMMENT LE FAIRE DANS UN SCRIPT ? Comment le faire en script ?

 
Batman:

Je voulais écrire un script simple pour créer un segment (ligne de tendance) sur un graphique avec le début à l'endroit où le script est lancé (pas de problème avec ça) et la fin aux coordonnées où le clic gauche de la souris sera fait... C'est là que j'ai trébuché... Comment le faire dans un indicateur ou un expert pour attraper cet événement est élémentaire, mais comment le faire dans un script ? Comment le faire en script ?

En bouclant le script.
 
tara:
En bouclant le script.

J'ai essayé, disons, une boucle dans OnStart tourne toute seule, maisOnChartEvent n'est plus exécuté à ce moment-là...

Existe-t-il un exemple pratique permettant d'éviter que le script ne se termine avant d'avoir attendu un événement de clic de souris ?

 
Batman:

J'ai essayé, disons, une boucle dans OnStart tourne toute seule, mais OnChartEvent n'est plus exécuté à ce moment-là...

Existe-t-il un exemple pratique d'un script qui ne se termine pas avant d'avoir attendu un événement de clic de souris ?

Que diriez-vous de boucler une fonction personnalisée qui dépend du retour de OnChartEvent?

C'est un impromptu. Je ne sais pas si ça marche, mais si je devais le faire, j'essaierais cette solution.


zy. Je suppose que j'ai été trop hâtif avec mon opinion. L'événement OnChartEvent semble ne pas être disponible dans les scripts.
 
AlexeyVik:

Et si l'on boucle à travers une fonction personnalisée dont le retour dépend de OnChartEvent

C'est un impromptu. Je ne suis pas sûr que ça va marcher, mais si je devais le faire, j'essaierais cette solution.

Et de quoi ça aurait l'air ?)).

Je soupçonne en quelque sorte que lorsqu'on organise une boucle dans le script, le traitement des événements n'a plus lieu... Si cela se fait quand les scripts sont en cours d'exécution - j'en doute déjà...

Une tâche aussi simple n'a-t-elle pas de solution, du moins "sans danser avec des tambourins" ?

 
Batman:

A quoi cela ressemblerait-il ?))

Je soupçonne en quelque sorte que lorsqu'une boucle est mise en place dans un script, le traitement des événements n'a plus lieu... Si cela est fait lors de l'exécution des scripts - j'en doute déjà...

Une tâche aussi simple n'a-t-elle pas de solution, du moins "sans danser avec des tambourins" ?

Eh bien, la boucle à travers une fonction définie par l'utilisateur est simple. Cette fonction est appelée par la boucle while et en fonction de la valeur renvoyée, elle répète ou arrête.

Mais la présence de OnChartEvent dans les scripts est... est discutable.

Apparemment, nous devons comprendre ce qui est possible dans les scripts et ce qui est plus coûteux à mettre en place. Il me semble que le résultat peut être imprévisible et dépend de l'utilisateur, et non du programmeur. Imaginez ce qui se passera si vous n'appuyez pas sur le "rat" dans un tel script... la boucle ne se terminera pas. Et que peut faire l'utilisateur ensuite ? Comme un singe avec une grenade.

 
AlexeyVik:

La boucle via une fonction personnalisée est simple. La boucle while appelle cette fonction et selon la valeur renvoyée, elle répète ou interrompt l'opération.

Mais la présence de OnChartEvent dans les scripts... est discutable.

Apparemment, nous devons comprendre ce qui est possible dans les scripts et ce qui est plus coûteux à mettre en place. Il me semble que le résultat peut être imprévisible et dépend de l'utilisateur, et non du programmeur. Imaginez ce qui se passera si vous n'appuyez pas sur le "rat" dans un tel script... la boucle ne se terminera pas. Et que peut faire l'utilisateur ensuite ? Comme un singe avec une grenade.

Des bêtises sur un singe avec une grenade...)))) Le script est glissé sur le graphique avec une souris, puis l'utilisateur clique au bon endroit du graphique (les événements en attente et interceptés doivent être gérés d'une manière ou d'une autre...), un objet graphique est créé, le script termine son travail. Pour les "oublieux", il est possible de mettre fin à l'attente après un certain temps. Même un script croche "suspendu" est supprimé du graphique par un clic droit, "Supprimer le script".

Question : pourquoi n'est-il pas possible de gérer les événements liés à la pression d'un bouton ou autre dans le script ? Qu'est-ce qui est interdit ici ?

 
Batman:

Une absurdité à propos d'un singe avec une grenade...)) Le script est glissé sur le graphique à l'aide de la souris, puis un clic tout à fait naturel au bon endroit du graphique (en supposant que l'attente et la capture des événements ont été organisées d'une manière ou d'une autre...), un objet graphique est créé, le script se termine. Pour les "oublieux", il est possible de mettre fin à l'attente après un certain temps. Même un script croche "suspendu" est supprimé du graphique par un clic droit, "Supprimer le script".

Question : pourquoi n'est-il pas possible de gérer les événements liés à la pression d'un bouton ou autre dans le script ? Qu'est-ce qui est interdit ici ?

Tu ne vas pas le croire. J'ai un ami à qui je dis "terminal proche"... Que pensez-vous qu'il fasse ? IL FAIT... C'est ce que j'appelle "un singe avec une grenade". On ne sait jamais où il va la lancer. Vous ne devinerez jamais ce qu'un tel utilisateur fera à votre programme.

La raison pour laquelle le traitement des événements est impossible est une question pour MQ.

Essayez de le résoudre en utilisant le Conseiller Expert qui supprime le Conseiller Expert du graphique en utilisant la fonction ExpertRemove()