Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1194
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Merci pour le conseil, je suis au courant de ces fonctions.
Savez-vous pourquoi tant de gens, vous y compris, répondent à ceux qui connaissent mql comme une hache. Et ils ignorent les conseils de ceux qui savent ? Si vous n'en avez pas, consultez ce conseil :
Le forum sur le trading, les systèmes de trading automatisés et les tests de stratégies.
Toute question des débutants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes
Artyom Trishkin, 2020.06.29 00:03
Bonjour.Commencez par surveiller l'état du graphique dans OnChartEvent() https://www.mql5.com/ru/docs/event_handlers/onchartevent
Vous avez besoin de quelques événements :
CHARTEVENT_OBJECT_CREATE Créer un objet graphique
CHARTEVENT_OBJECT_CHANGE Modifier les propriétés de l'objet graphique via la boîte de dialogue des propriétés
CHARTEVENT_OBJECT_DELETE Supprimer l'objet graphique
https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents
Enregistrer tous les paramètres du gestionnaire OnChartEvent() et voir leurs valeurs lors de l'ajout/modification/suppression d'objets graphiques. Cela vous indiquera où aller.
Merci pour le conseil, je connais ces fonctions.
Mais comment pouvons-nous les utiliser pour trouver automatiquement un objet sur le graphique et lire ses paramètres, si nous ne connaissons pas son nom a priori ?
Lorsque l'on dessine un objet sur un graphique avec la souris, le système lui donne un nom.
Bien sûr, il n'est pas difficile d'organiser la saisie manuelle de toutes les données nécessaires de l'objet à partir de sa table de propriétés, mais alors pourquoi l'automatisation ?
Mais comment donner programmatiquement à une EA le nom d'un objet pour qu'elle puisse utiliser toutes les fonctions que vous avez mentionnées, n'est toujours pas clair pour moi...
Comme indiqué ci-dessus, travaillez avec des événements graphiques :
Bonjour.
Commencez par suivre l'état du graphique dans OnChartEvent() https://www.mql5.com/ru/docs/event_handlers/onchartevent
Vous avez besoin de quelques événements :
CHARTEVENT_OBJECT_CREATE Créer un objet graphique
CHARTEVENT_OBJECT_CHANGE Modifier les propriétés d'un objet graphique via la boîte de dialogue des propriétés
CHARTEVENT_OBJECT_DELETE Supprimer un objet graphique
https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents
Enregistrer tous les paramètres de OnChartEvent() et voir leurs valeurs lorsque vous ajoutez/modifiez/supprimez des objets graphiques. Cela vous indiquera où aller.
Merci beaucoup, j'ai déjà suivi vos conseils !
Vous pouvez trouver et enregistrer les objets d'un type donné avec leurs coordonnées comme suit :
Vous pouvez enregistrer n'importe quelle donnée dans un fichier. Et dans l'Expert Advisor, créez un chargeur qui ajoutera les objets appropriés, puis chargera les données du fichier dans ces objets. Mais vous avez au moins esquissé un code source pour votre tâche spécifique et l'avez publié ici.
Comme indiqué ci-dessus, travaillez avec les événements du graphique :
Michael, votre aide et celle de @Artyom Trishkin ont été très utiles !
Nous devons maintenant trouver le point de croisement entre le graphique des prix et l'objet trouvé, dans ce cas, la ligne de tendance.
L'algorithme est le suivant :
1. En utilisant les coordonnées de lecture de la ligne de tendance, nous calculons le coefficient d'augmentation de la tendance pour 1 barre du TF sélectionné.
2. Calcule la coordonnée du prix de la ligne de tendance sur la barre courante et surveille le franchissement par le graphique de ce point pendant la TF sélectionnée.
3. Si c'est le cas, nous procédons au traitement de cet événement, par exemple, l'ouverture d'une commande. Dans le cas contraire, la procédure est répétée pour la mesure suivante.
Mais peut-être que MT4(5), en raison des spécificités de ce système, a une solution beaucoup plus simple ?
Savez-vous pourquoi tant de gens, vous y compris, répondent à ceux qui connaissent mql comme une hache. Et ils ignorent les conseils de ceux qui savent. Dans votre cas, c'est ce conseil :
Mon cher Alexey, vous avez tout à fait raison concernant ma connaissance de MQL. Cependant, vous vous trompez en disant que je ne prête pas attention aux conseils des initiés, car mon premier contact a été avec@Artyom Trishkin, qui est, je crois, l'un des meilleurs professionnels de MQL et que vous connaissez bien.
Ses conseils m'ont permis de comprendre immédiatement comment résoudre mon problème et m'ont ouvert les yeux pour la suite. Et@Mihail Matkovskij m'a rendu la vie encore plus facile !
Michael, votre aide et celle de @Artyom Trishkin ont été très utiles !
Nous devons maintenant trouver le point de croisement entre le graphique des prix et l'objet trouvé, dans ce cas, la ligne de tendance.
L'algorithme est le suivant :
1. En utilisant les coordonnées de lecture de la ligne de tendance, nous calculons le coefficient d'augmentation de la tendance pour 1 barre du TF sélectionné.
2. Calcule la coordonnée du prix de la ligne de tendance sur la barre courante et surveille le franchissement par le graphique de ce point pendant la TF sélectionnée.
3. Si c'est le cas, nous procédons au traitement de cet événement, par exemple, l'ouverture d'une commande. Dans le cas contraire, la procédure est répétée pour la mesure suivante.
Mais peut-être que MT4(5), en raison des spécificités de ce système, a une solution beaucoup plus simple ?
Comme je l'ai dit plus haut, esquissez un code source pour avoir quelque chose sur quoi commencer. De plus, vous avez déjà quelques connaissances sur la façon d'obtenir les données de l'objet sur le graphique. Personne ne veut tout faire pour vous à partir de zéro. Et de cette façon, ce qui manque pour le travail de l'expert peut être complété...
Michael, votre aide et celle de @Artyom Trishkin ont été très utiles !
Nous devons maintenant trouver le point de croisement entre le graphique des prix et l'objet trouvé, dans ce cas, la ligne de tendance.
L'algorithme est le suivant :
1. En utilisant les coordonnées de lecture de la ligne de tendance, nous calculons le coefficient d'augmentation de la tendance pour 1 barre du TF sélectionné.
2. Calcule la coordonnée du prix de la ligne de tendance sur la barre courante et surveille le franchissement par le graphique de ce point pendant la TF sélectionnée.
3. Si c'est le cas, nous procédons au traitement de cet événement, par exemple, l'ouverture d'une commande. Dans le cas contraire, la procédure est répétée pour la mesure suivante.
Peut-être, tout est beaucoup plus facile dans MT4(5) en raison du caractère spécifique de ce système.
Ce que vous voulez trouver n'est pas très clair. Vous voulez trouver le point de passage de la ligne de tendance par le prix sur une certaine barre ? Pour cela, il existe des fonctions permettant d'obtenir la valeur de la ligne sur une barre. Mais j'utiliserais l'équation de la ligne droite :
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
FAQ des débutants MQL5 MT5 MetaTrader 5
Artyom Trishkin, 2020.05.02 12:27
Utilisez une équation de ligne droite :
Indiquez le numéro de barre et le prix du point de gauche, indiquez le numéro de barre et le prix du point de droite (une ligne virtuelle est tracée sur ces points) et indiquez la barre que vous recherchez.
La fonction renverra le prix de la barre que vous recherchez.
..... Il existe des fonctions permettant d'obtenir la valeur de la ligne sur la barre. Mais j'utiliserais l'équation de la ligne droite :
Artyom, plus de détails ici, s'il vous plaît.
Soit je n'étais pas très attentif avant, soit la documentation a été retouchée... Je ne sais pas.
Mais j'ai toujours pensé que ObjectGetDouble retournait le prix de la ligne sur une barre particulière (je veux dire le prix exact). Et là, j'ai décidé de faire un petit script pour le vérifier, et qu'ai-je vu ?
1. Il n'y a pas de numéro de barre dans les paramètres, sur lequel la valeur doit être lue.
2. identifiant de la propriété :
OBJPROP_PRICE
Coordination des prix
modifier=numéro du point d'ancrage
ce n'est que le point d'ancrage !
Oui, en gros, si je trace cette ligne dans le code, j'ai déjà ces points ! Pourquoi ai-je besoin de les connaître ? En fait, quel en est l'intérêt ?
Comment puis-je obtenir la valeur du prix de cette ligne ailleurs ?
Il s'avère que c'est
prop_modifier
[Modificateur de la propriété spécifiée. Pour la première option, la valeur par défaut du modificateur est 0. La plupart des propriétés ne nécessitent pas de modificateur. Désigne un nombre de niveau dans lesoutils Fibonacci et dans l'objet graphique Pitchfork d'Andrews. La numérotation des niveaux commence à partir de zéro.
Cela n'a pas de sens du tout ? Cherche-t-il les points d'attache de TOUTES les lignes de ventilation ? C'est absurde. Pardon.
Artyom, pouvez-vous entrer dans un peu plus de détails, s'il vous plaît ?
Soit je n'étais pas très attentif avant, soit la documentation a été retouchée... Je ne sais pas.
Mais j'ai toujours pensé que ObjectGetDouble retournait le prix de la ligne sur une barre particulière (je veux dire le prix). Et là, j'ai décidé de faire un petit script pour le vérifier, et qu'ai-je vu ?
1. Il n'y a pas de numéro de barre dans les paramètres, sur lequel la valeur doit être lue.
2. identifiant de la propriété :
OBJPROP_PRICE
Coordination des prix
modifier=numéro du point d'ancrage
ce n'est que le point d'ancrage !
Oui, en gros, si je trace cette ligne dans le code, j'ai déjà ces points ! Pourquoi ai-je besoin de les connaître ? En fait, quel en est l'intérêt ?
Comment puis-je obtenir la valeur du prix de cette ligne ailleurs ?
Il s'avère que c'est
prop_modifier
[Modificateur de la propriété spécifiée. Pour la première option, la valeur par défaut du modificateur est 0. La plupart des propriétés ne nécessitent pas de modificateur. Désigne un nombre de niveau dans lesoutils Fibonacci et dans l'objet graphique Pitchfork d'Andrews. La numérotation des niveaux commence à partir de zéro.
Cela n'a pas de sens du tout ? Cherche-t-il les points d'attache de TOUTES les lignes de ventilation ? C'est absurde. Excusez-moi.
Je n'ai pas beaucoup travaillé avec de tels objets. Que retournera cette fonction pour la tendance en fonction du temps de barre spécifié ? Je n'ai pas le temps de le vérifier. Même si c'est fait dans un petit script...
ObjectGetValueByTime()