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

 
Artyom Trishkin:
Construisez une ligne virtuelle, et non un objet graphique, à la place d'une ligne de tendance. Respectivement, et obtenir la valeur non pas par ObjectGetValueByShift("1",bar_seek), mais par équation de ligne droite.
merci ! - je vais essayer)
 
Nikolay Gaylis:
Merci ! Je vais essayer.)
Vous êtes le bienvenu...
 
Nikolay Gaylis:
Merci, je vais l'essayer)

J'ai écrit un article sur mql4.com il y a longtemps. Il contient une description détaillée du travail avec les lignes de tendance virtuelles et de la recherche de la bonne valeur de prix sur la bonne barre de ces lignes virtuelles.

Il existe un indicateur basé sur cet article dans kodobase. J'y ai déjà retravaillé le code pour la nouvelle mql4.

 
Artyom Trishkin:
Ça devait être l'idée. Toutefois, cette vérification ne prend pas seulement en compte les ordres en attente, mais aussi toutes les opérations effectuées sur un compte de trading - dépôts, retraits, bonus, etc.
Nikolay Gaylis:

Cette condition permet au conseil de ne travailler qu'avec des commandes empilées, était-ce l'intention ?

    if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;
Propriétés des commandes

Type d'opération pour la fonction OrderSend(). Peut être l'une des valeurs suivantes :

Constant
Valeur
Description
OP_BUY
0
Acheter
OP_SELL
1
Vendez
OP_BUYLIMIT
2
Ordre BUY LIMIT en attente
OP_SELLLIMIT
3
Ordre SELL LIMIT en attente
OP_BUYSTOP
4
Ordre BUY STOP en attente
OP_SELLSTOP
5
Ordre SELL STOP en attente


Le calcul est que les ordres en attente ne seront pas pris du tout jusqu'à ce qu'ils soient convertis en ordres de marché uniquement pour le symbole actuel. Après le traitement du dernier ordre de marché (s'il y en a plusieurs) pour le symbole courant, l'EA est retiré du graphique (maintenant il est retiré immédiatement après le déclenchement du premier ordre et il ne fait attention que s'il y a un ordre pour le symbole courant et un autre pour un autre, l'EA en tient compte).

Pourquoi cela se produit-il et où dois-je placer un ordre de retour, de sorte que lorsque le prochain ordre est fermé, il envoie une fonction directement aux conditions après le compte++ et ne commence à jouer qu'après le déclenchement du dernier ordre. Enfin, je mets Orderselect() pour déterminer le dernier (si l'ordre est fermé et que nous ne pouvons pas sélectionner l'ordre nous n'avons rien à faire sur ce graphique)

 
trader781:
Propriétés des commandes

...


Les ordres en attente ne seront pas du tout pris en compte jusqu'à ce qu'ils soient convertis en ordres de marché uniquement pour un symbole courant. Après le traitement du dernier ordre de marché (s'il y en a plusieurs) pour le symbole actuel, le Conseiller Expert se supprime du graphique (il est supprimé immédiatement après le déclenchement du premier ordre et fait attention au fait que s'il y a un ordre pour le symbole actuel et un autre pour un autre, il le prend en considération).

pourquoi cela se produit et où mettre un retour, de sorte que lorsque le prochain ordre est fermé, il envoie une fonction immédiatement aux conditions après count++ et seulement après que le dernier ordre se soit déclenché, il exécutera playsound. Enfin, je mets Orderselect() pour déterminer le dernier (si l'ordre est fermé et que nous ne pouvons pas sélectionner l'ordre nous n'avons rien à faire sur ce graphique)

if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;

Ce code ignore toutes les positions de marché dans la boucle.

La suite m'est inconnue mais si l'on passe au traitement d'autres types d'ordres - ceux de type 2 et plus, ce traitement prendra en compte tous les types d'ordres en attente et les ordres de type 6 - actions sur le compte.

Où est le code avec le cycle complet ?

 
Artyom Trishkin:
if(OrderSymbol() ==Symbol() &&OrderType()<2)
          continue;


Où est le code avec le cycle complet ?

Poste 236

cette section ne doit passer que celles du marché pour l'instrument actuel

 
trader781:

Poste 236

cette section ne doit passer que les marchés sur l'instrument actuel

Cette boucle que vous avez est stupidement vide du tout. Cela n'a aucun sens - il ralentit simplement si vous avez un grand nombre d'ordres sur votre compte.

Et mettez de l'ordre dans votre code - ce ne sont que des déchets illisibles, pas du code.

Et pourquoi avez-vous besoin de doubles accolades dans OnTick() ? Quelle est la signification sacrée de ceci ?

 
Artyom Trishkin :

Et mettez de l'ordre dans votre code - ce ne sont que des déchets illisibles, pas du code.

Ne vous méprenez pas. Si je pouvais le faire comme vous le voulez, je ne serais pas assis ici. C'est pourquoi je demande de l'aide pour résoudre la tâche actuelle.

 
trader781:
Artyom Trishkin :

Et mettez de l'ordre dans votre code - ce ne sont que des déchets illisibles, pas du code.

Ne vous méprenez pas. Si je pouvais le faire comme vous le voulez, je ne serais pas assis ici. C'est pourquoi je vous demande de m'aider à résoudre la tâche actuelle.

Peut-être êtes-vous en mesure de supprimer les lignes vides du code ? Cela nécessite-t-il des compétences particulières ?

En fait, il existe la combinaison de touches Ctrl+ "," - un stylo. Bien que mauvais, mais quand même. Et puis vous pouvez supprimer les lignes vides du code pour ne pas laisser les gens regarder les "tripes". C'est la culture la plus simple de la communication.

Mais après avoir nettoyé votre code, il deviendra plus lisible pour vous, sans parler des autres personnes qui devront également comprendre votre logique. Tous les défauts y seront vus.

 
Artyom Trishkin:

Vous savez probablement comment supprimer les lignes vides du code, n'est-ce pas ? Cela nécessite-t-il des compétences particulières ?

En fait, il existe un raccourci clavier Ctrl+ "," - un styliste. Bien que mauvais, mais quand même. Et puis vous pouvez supprimer les lignes vides du code pour ne pas laisser les gens regarder les "tripes". C'est la culture la plus simple de la communication.

Mais après avoir nettoyé votre code, il deviendra plus lisible pour vous, sans parler des autres personnes qui devront également comprendre votre logique. Et tous vos défauts y seront vus.

Après avoir nettoyé votre code, il deviendra plus lisible pour vous, sans parler des autres personnes qui doivent également comprendre votre logique. C'est là que l'on verra tous les bugs.

OK, c'est mieux ?
Dossiers :