"Erreur de PositionSelect() flottante - page 5

 

prostotrader:

Est-ce que ça a plus de sens "professeur" ?

Heh-heh-heh. Tu es adulte ou quoi ?

Que vouliez-vous montrer dans la capture d'écran ?

Passons en revue les points de votre journal.

En premier lieu :

2016.08.15 15:37:17.720    Test_deff_order (GAZR-9.16,M1)    History done. Ticket: 50942179

Dans le deuxième paragraphe, que voyez-vous ?

Je vais prendre la peine de l'écrire :

2016.08.15 15:37:17.720    Test_deff_order (GAZR-9.16,M1)    Volume initial: 1.0. Volume current: 0.0 Deals done: 0.0 

 

Mais une fois de plus, vous essayez d'analyser quelque chose (les ordres) sans tenir compte du fait que le déclencheur qui vous permet d'analyser le volume de la position est une transaction du type TRADE_TRANSACTION_DEAL_ADD - ajoutant une transaction à l'historique.

Pourtant, vous persistez, pour la énième fois, avec TRADE_TRANSACTION_DEAL_ADD à ne pas vérifier le volume de la position.

Voici votre code à partir du message ci-dessus :

      case TRADE_TRANSACTION_DEAL_ADD:
        if((order_ticket!=0) && (trans.order==order_ticket))
        {
         Print("Deal done. Ticket: ",trans.order);
        }
      break; 
 
Изменение позиции в терминале происходит строго в результате получения сделочной транзакции, ....

Ne voyez-vous pas que la position (dans le second cas) a changé AVANT que la transaction n 'arrive?

Cela ne devrait pas être, car Alexndr a écrit :

Изменение позиции в терминале происходит СТРОГО в результате получения сделочной транзакции, ....
 

STRICTEMENT !

STRICTEMENT !

STRICTEMENT !

STRICTEMENT !

 
prostotrader:

Ne voyez-vous pas que la position (dans le second cas) a changé AVANT que la transaction n'intervienne ?

Il ne devrait pas y en avoir, car Alexndr a écrit :

Ah c'est ça... Seul l'auteur pourra le dire plus précisément :-))

Mais, à mon avis, ce n'est pas la peine de s'en prendre à ces mots. La transaction commerciale est déjà arrivée, elle n'est simplement pas traitée immédiatement dans OnTradeTransaction().

Ce qui est amusant, c'est que vous indiquez la transaction commerciale, alors que dans votre code il y a le cas TRADE_TRANSACTION_HISTORY_ADD .

Je pense qu'il est important ici de le traiter en examinant les transactions - cas TRADE_TRANSACTION_DEAL_ADD.

 
Dennis Kirichenko:

Ah, c'est ça... Seul l'auteur peut être plus précis :-))

Mais, à mon avis, nous ne devrions pas nous en prendre à ces mots. La transaction est déjà arrivée, elle n'a simplement pas été traitée immédiatement dans OnTradeTransaction().

Imho, il est important de le traiter en examinant les transactions...

Merci Denis !

Je suis un idiot qui ne sait même pas ce qu'estOnTradeTransaction.

 
prostotrader:

Merci Deniska !

Je suis un idiot qui ne sait même pas ce qu'est OnTradeTransaction.

Tout le plaisir est pour moi ! Mais votre ironie est sans fondement. Vous avez déjà été frotté plusieurs fois de suite ce qui est incorrect dans le code.

Vous auriez au moins dû remercier Vladimir, il a été le premier à vous indiquer la bonne direction ;-)

 
Dennis Kirichenko:

Tout le plaisir est pour moi ! Mais votre ironie n'a pas lieu d'être. On vous a dit plusieurs fois de suite ce qui ne va pas dans le code.

Vous devriez au moins remercier Vladimir, il a été le premier à vous indiquer la bonne direction ;-)

Lisez "à votre guise" :

https://www.mql5.com/ru/forum/93357#comment_2707875

 

Karputov Vladimir

Les chiffres sous mes avatars ne peuvent-ils pas être multipliés par 1000 ?

Encore une chose...

Au cas où vous ne l'auriez pas remarqué, je dois dire que dans tous les exemples, les ordres sont émis

De manière asynchrone, il est donc important de les contrôler !

 
prostotrader:

Karputov Vladimir

Les chiffres sous mon avatar ne peuvent-ils pas être multipliés par 1000 ?

Les chiffres sous votre avatar ne vous appartiennent pas, vous n'avez donc aucun pouvoir sur eux (vous ne pouvez pas les changer à volonté).

Ajouté.

Oublier les ordres jusqu'à la transaction de type TRADE_TRANSACTION_DEAL_ADD. Pourquoi "l'oublier" ? Parce que c'est FAUX.