Question OrderModify() - page 2

 
WhooDoo22:

Ah-ha ! J'ai changé le numéro du ticket de 0 à 1 et tout a marché comme sur des roulettes. Oui, j'avais tort William... La fonction OrderSelect() était un problème. Il est évident que la fonction OrderSelect() doit sélectionner un ticket. Si le numéro du ticket est 0, quel ticket l'EA va-t-il sélectionner ? :O " ?". Merci à tous les deux pour votre aide.

Merci.

Le numéro du ticket ne sera JAMAIS 0... ce n'est pas un numéro de ticket valide.


Veuillez vous référer à ce fil de discussion: https://www.mql5.com/en/forum/142545
 

Simon, je comprends que 0 n'est pas un numéro de ticket valide CAR 0 signifie qu'il n'y a pas de ticket à sélectionner. 1 représente un billet ET le numéro de billet spécifique que la fonction OrderSelect() tente de sélectionner.

Je vais lire le fil de discussion. Merci de l'avoir publié.

Merci.

 
WhooDoo22:

Je comprends que 0 n'est pas un numéro de ticket valide CAR 0 signifie qu'il n'y a pas de ticket à sélectionner. 1 représente un ticket ET le numéro de ticket spécifique que la fonction OrderSelect() est en train de sélectionner.

Non, ce n'est pas correct. zéro comme numéro de ticket ne signifie rien, c'est INVALIDE. OrdersTotal() == 0 signifie qu'il n'y a pas d'ordres... il est évident que vous mélangez les résultats de différentes fonctions et les numéros de tickets par rapport aux positions des ordres.


Ne faites pas exactement ce que vous avez fait avant... à moins que vous ne vouliez exactement le même résultat. Vous ne pouvez pas supposer que vous avez le bon numéro de ticket... . . vous devez le trouver dans le pool d'ordres et le sélectionner. . .

Si vous voulez apprendre, faites cet exercice :

  • Ouvrez un nouveau compte de démonstration avec n'importe quel courtier.
  • placez un ordre au marché pour 0.1 lots sans TP ou SL
  • écrivez un code qui trouvera le numéro de ticket correct pour cet ordre, puis utilisera le numéro de ticket pour sélectionner l'ordre, puis le modifiera pour qu'il ait un TP et un SL et enfin le fermera.

 
RaptorUK:

Non, ce n'est pas correct. zéro comme numéro de ticket ne signifie rien, c'est INVALIDE. OrdersTotal() == 0 signifie qu'il n'y a pas de commandes ... il est évident que vous mélangez les résultats de différentes fonctions et numéros de tickets.

Si vous voulez apprendre, faites cet exercice :

  • Ouvrez un nouveau compte de démonstration avec n'importe quel courtier.
  • placez un ordre de marché pour 0.1 lots sans TP ou SL
  • écrivez un code qui trouvera le numéro de ticket correct pour cet ordre, puis utilisez le numéro de ticket pour sélectionner l'ordre, puis modifiez-le pour qu'il ait un TP et un SL et enfin fermez-le.


Avez-vous essayé l'exercice ? Montrez votre code quand vous l'avez fait . . .
 

Simon,

Je vais coder ce projet. Ça devrait être un jeu d'enfant. J'ai déjà fait une grande partie du travail. ;)

Oui, ça ne me dérange pas de faire cet exercice, vu que vous m'avez apporté votre soutien constant.

Merci.

 

Simon,

C'est fait. J'ai supposé que vous vouliez le fichier au format script, afin que vous puissiez simplement le glisser et le déposer sur un graphique, attendre que l'EA calcule quelques chiffres, puis le regarder retirer un ordre du marché.

Les différences entre ce que je construis actuellement et ce projet sont...

Ce que je construis actuellement :

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){

Ce projet :

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){

La raison pour laquelle j'ai utilisé "if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){", c'est parce que je traite avec un pool d'ordres et non une variable de ticket spécifique prédéfinie.

Mon build actuel pour le volume II utilise des variables prédéfinies car je dois sélectionner des tickets spécifiques pour exécuter la stratégie du volume II. Ce projet a été conçu pour simplement fermer un ordre en un clin d'œil.

J'ai effectivement eu quelques points d'interrogation au-dessus de ma tête lorsque j'ai codé l'exécution de la fonction contenant le prix Ask/Bid. C'est parce que, typiquement, quand j'envoie/ferme des ordres, je tape juste "Ask"/"Bid", mais j'ai réalisé que j'avais besoin de définir une variable qui pourrait être soit le prix Ask ou Bid basé sur la condition si l'ordre dans le marché était un ordre de vente OU d'achat. Ensuite, j'ai simplement ajouté l'habituel "si le total des commandes est supérieur à zéro", et j'étais prêt. Cela devrait suffire.

Merci.

Dossiers :
 

OK, ce n'est pas ce que je voulais, mais j'aurais dû être plus clair dans mes exigences. ... votre code ne fixe pas de SL et de TP... mais laissez-moi quand même revoir mon exigence... . .

En utilisant le même compte de démonstration...

  • placez un ordre de marché pour 0.1 lots sans TP ou SL sur GBPUSD, un sur USDJPY et un sur EURUSD ... oubliez l'ordre dans lequel vous avez placé ces ordres.
  • sans tenir compte de l'ordre dans lequel les transactions ont été placées et sans connaissance préalable du nombre d'ordres placés, écrivez un code qui trouvera le numéro de ticket correct pour l'ordre placé sur USDJPY.
  • imprimer le numéro de ticket dans le journal sous la forme "Numéro de ticket pour USDJPY = ".
  • puis utiliser le numéro de ticket pour sélectionner l'ordre, puis le modifier pour qu'il ait un TP & SL et enfin le fermer.

Lorsque vous avez terminé, veuillez montrer votre code et la ligne du journal indiquant le numéro de ticket.

 

Simon,

Ah, désolé, je n'ai pas entièrement lu vos premières instructions, et n'ai pas codé ce que vous avez demandé. Oh bien, vous avez ajouté une nouvelle liste d'exigences, donc je vais m'y mettre.

Avant de le faire, je vais préciser ce que je m'apprête à faire...

1. Trouver le numéro de ticket de l'ordre passé sur USDJPY.

2. Imprimer le numéro de ticket sur le journal sous la forme "Numéro de ticket pour USDJPY = ".

3. Utiliser le numéro de ticket pour sélectionner l'ordre ET modifier l'ordre pour qu'il ait un TP et un SL et le fermer.

4. Montrer le code et une ligne du journal montrant le numéro de ticket.


Ceci étant dit, je veux être sûr que nous sommes sur la même longueur d'onde.

Oui, je peux faire 1. (évidemment je ne peux pas utiliser les "fonctions de monnaie" pour isoler les tickets, n'est-ce pas ?)

Oui, je peux faire 2.

3. Ne voulez-vous pas dire, utiliser la fonction OrderSelect() pour sélectionner l'ordre ET le modifier pour qu'il ait un TP & SL et le fermer ?

4. Évidemment, je vais montrer le code ;)... une ligne du journal montrant le numéro du ticket (ce que vous auriez pu demander était un "instantané visuel" du journal montrant le numéro du ticket. Peu importe)

S'il vous plaît postez une réponse d'abord avant que je commence la tâche.


Merci.

 
WhooDoo22:


Ceci étant dit, je veux être sûr que nous sommes sur la même longueur d'onde.

Oui, je peux faire 1. (évidemment je ne peux pas utiliser les "fonctions de monnaie" pour isoler les tickets, n'est-ce pas ?)

Oui, je peux faire 2.

3. Ne voulez-vous pas dire, utiliser la fonction OrderSelect() pour sélectionner l'ordre ET le modifier pour qu'il ait un TP & SL et le fermer ?

4. Évidemment, je vais montrer le code ;)... une ligne du journal montrant le numéro du ticket (ce que vous auriez pu demander était un "instantané visuel" du journal montrant le numéro du ticket. Peu importe)

Vous pouvez utiliser toutes les fonctions que vous voulez tant que votre code répond aux exigences . ... et en faisant cela, vous ne violez pas ce qui est donné comme condition, par exemple,"sans tenir compte de l'ordre dans lequel les transactions ont été effectuées et en supposant qu'il n'y a pas de connaissance préalable du nombre d'ordres passés"... :-)
 
Comment ça se passe ? Vous avez besoin de précisions ou de conseils ?
Raison: