conseiller expert - questions diverses - page 22

 
Marco vd Heijden:

Veuillez utiliser le stylet qui se trouve sous l'onglet Outils.
Je n'ai aucune idée de ce que vous essayez d'accomplir et je dois donc deviner ce que vous voulez faire, ce qui n' est jamais bon.
Mais vous pouvez regarder l'exemple ici :
Donc vous pouvez voir que vous pouvez utiliser ObjectGetDouble directement, il n'y a pas besoin de copier la valeur dans un autre double parce que l'objet lui-même détient la valeur, et quand vous faites glisser la ligne, cette valeur change automatiquement, et sera vue la prochaine fois que vous la lirez.

Tout d'abord, merci pour vos commentaires qui me montrent la bonne voie.
J'ai fait une grosseerreur parce que j'essayais dans le fichier Test.mq4. Depuis que j'ai commencé à essayer dans le fichier mq4 principal. J'ai trouvé le bon chemin. Ces deux fichiers sont très différents pour moi.

Oui, après avoir essayé plusieurs fois vos exemples, j'ai pu atteindre mon objectif dans ce domaine. Mais j'ai compris que je devrais juste utiliser OnChartEvent() pour les créations d'objets " HLine " (et certains graphiques).
Et ensuite je devrais juste utiliser OrderModify() pour la modification de Take Profit, cette modification de Take Profit devrait suivre l'objet " HLine ". ( Premièrement : " HLine " obtient le prix actuel de Take Profit et deuxièmement : Take Profit suit l'objet " HLine " - et mais OrderModify() ne doit pas être mis à jour pendant que je fais glisser l'objet " HLine " ).
Et maintenant, j'ai commencé à faire des recherches sur OrderModify().

Je sens que je pourrais vérifier votre exemple une fois de plus. J'espère pouvoir le faire.

Merci pour toute votre aide, M. Marco.

 

M. Marco, encore une fois, merci beaucoup pour tout.

La fonction OM (modification des ordres) est terminée.
J'ai vu quelques problèmes dans ma fonction OM que j'ai résolus moi-même.
Mais je vois continuellement que la fonction OM a besoin de quelques mises à jour, parce que j'essaie de tester la fonction OM avec des modifications de Take Profit.

Je voudrais donc mentionner que je suis toujours confronté à de nouveaux problèmes (maintenant le marché est fermé).

#1 Quelle partie des codes puis-je conserver ?
J'ai déjà essayé les deux parties des codes ci-dessous. Mais je n'ai pas vu de différence entre eux. Il semble que les deux fonctionnent bien pour moi.

// I learned this Calculation from thread of @Simon's
for ( i = OrdersTotal() - 1; i >= 0; i-- ){}

// This is from yours Mr. Marco
for ( i = OrdersTotal(); i >= 0; i-- ){}

#2 Est-ce faux ?
J'utilise 7x fois la partie du code ci-dessous dans mon script EA unique. Juste 2x pour le calcul des fonctions Sell et Buy. Et 2x pour les fermer. Je les appelle par les fonctions OnChartEvent() et OnTick().

for ( i = OrdersTotal() - 1; i >= 0; i-- )
  {
   if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
   if(closeothers==false && OrderSymbol()!=Symbol()) continue;
//...
  }



J'ai aussi d'autres problèmes mais je travaille dessus pour les résoudre moi-même.

Merci d'avance.

 

La numérotation commence à partir de 0 et non de 1.

Supposons que vous ayez 3 commandes. Elles sont :

  • 0
  • 1
  • 2

Vous devriez donc utiliser ceci :

for ( i = OrdersTotal() - 1; i >= 0; i-- ){}

Si vous ne le faites pas, ce n'est pas un désastre ; l'OrderSelect échouera au premier passage (i==3) et passera à l'itération suivante.

Désolé, je ne comprends pas votre deuxième question.

 

Pour la deuxième question.

J'ai généralement tendance à tout regrouper dans une seule boucle, mais vous pouvez bien sûr en utiliser plusieurs.

 
honest_knave:

Si ce n'est pas le cas, ce n'est pas une catastrophe ; l'OrderSelect échouera à la première passe (i==3) et passera à l'itération suivante.

Marco vd Heijden:

J'ai généralement tendance à tout condenser dans une seule boucle, mais vous pouvez bien sûr en utiliser plusieurs.

Merci pour vos commentaires. J'apprécie beaucoup !

 

J'ai déjà passé plusieurs heures sur ces questions et j'ai pu comprendre d'où cela venait !
Q : S'il vous plaît permettez-moi de savoir ce que c'est ? ( Je joins le fichier image )

J'ai utilisé votre exemple le plus utile " Stealth 4.mq4 " pour les drags Stop Loss et Take Profit, ce qui a parfaitement fonctionné vendredi dernier.
Maintenant que le marché est fermé, je vois ces messages dans la fenêtre Journal. Lorsque je supprime les blocs de code OrderModify(), ces messages s'arrêtent.

Je vous souhaite un bon week-end.

Dossiers :
 

Eh bien, vous pouvez modifier un ordre lorsque les marchés sont fermés, donc c'est assez logique...

Il faudrait un peu plus de code pour que cela s'arrête.

 

Max Enrik: Lorsque je supprime les blocs de code OrderModify(), les messages s'arrêtent.
  1. C'est pourquoi je recommande
    Ne pas trader plusieurs devises dans un EA
  2. Si vous ne traitez qu'une seule paire/graphique dans OnTick, vous n'auriez pas le problème.
 

Il est parfaitement possible de négocier toutes les devises dans un seul EA.

 
Marco vd Heijden: Il est parfaitement possible de négocier toutes les devises dans un seul EA.
Je n'ai jamais dit que ça ne l'était pas. J'ai dit que je ne le recommandais pas à cause de tous les problèmes. Une seule paire/graphique simplifie tout. Ne rendez pas les choses plus difficiles que nécessaire.