Les erreurs typiques et la façon de les traiter dans l'environnement de négociation - page 4

 
Artyom Trishkin:

Et si la commande est annulée par le serveur ?

Ensuite, au prochain tick, l'EA verra qu'il n'y a pas de positions, et tout ira bien. Mais il n'y aura pas de doublement.


Artyom Trishkin:

Je pense que lors de la comptabilisation des ordres au marché, nous devrions retourner WRONG_VALUE, par exemple - les positions ne peuvent pas être inférieures à zéro. Ce sera un signal qu'il y a un ordre de marché non enregistré. Mais n'ajoutez pas le nombre de postes.

Cela dépend de la logique du TS spécifique.

Dans le cas le plus simple où une seule transaction est autorisée sur le marché, toute valeur autre que 0 doit être retournée. 1 fera également l'affaire.

 
Andrey Khatimlianskii:

Puis, au prochain tick, le conseiller verra qu'il n'y a pas de positions et tout ira bien. Mais il n'y aura pas de double emploi.


Cela dépend de la logique du TS particulier.

Dans le cas le plus simple, lorsqu'une seule transaction est autorisée sur le marché, il suffit de renvoyer toute valeur autre que 0, 1 fera l'affaire.

Il (le conseiller expert) recevra déjà, sur ce tick, une valeur supérieure au montant des ordres au marché. C'est-à-dire qu'il y en a en réalité deux, mais la fonction donnera le résultat 3.

Je pense que ce n'est pas un comportement normal. Nous devrions toujours reposer un numéro valide, sans positions virtuelles, qui pourraient finalement ne pas exister.

Après tout, il existe des stratégies qui nécessitent des calculs précis pour un nombre précis et défini de positions, de volumes, de niveaux agrégés de stop/stop, etc...

 
Andrey Khatimlianskii:

Cela dépend de la logique du TS particulier.

Dans le cas le plus primitif, lorsqu'une seule transaction est autorisée sur le marché, il suffit de renvoyer toute valeur autre que 0, 1 fera aussi l'affaire.

Andrew, une fonction à laquelle on demande une quantité ou un volume ou toute autre donnée quantitative est obligée de donner leur valeur exacte.

Ce n'est pas comme si nous jouions avec des jouets :)

 
Artyom Trishkin:

Andrew, une fonction à laquelle on demande une quantité ou un volume ou toute autre donnée quantitative est obligée de donner sa valeur exacte.

Vous regardez un exemple spécifique d'un EA avec une seule transaction sur le marché, et il est écrit de manière incorrecte dans 99% des cas. Vous devez encore atteindre les plus complexes.

Si vous voulez vraiment, renommez la fonction en IsPosition et rendez-la booléenne : return(Res>0) ;

 
Andrey Khatimlianskii:

Un exemple spécifique d'un EA avec une seule transaction sur le marché est considéré et il est écrit faux dans 99% des cas. Vous devez encore atteindre les plus complexes.

Si vous voulez vraiment, renommez la fonction en IsPosition et faites-en un booléen : return(Res>0) ;

Eh bien, non... c'est un exemple d'une fonction de bibliothèque commune "pour toutes les occasions"...

A propos, proposition intéressante pour en faire une fonction booléenne - à l'instar de nombreuses fonctions mql5 standard - avec retour du résultat de l'exécution comme valeur bool, et nombre de positions en passant la valeur à une variable par référence.

 
Artyom Trishkin:

Eh bien non..., un exemple de fonction générique de bibliothèque "pour toutes les occasions" est envisagé...

Oui, universel.

 
fxsaber:

Oui, universel.

La solution que vous avez proposée contient une inexactitude dans l'annulation de la commande par le serveur. Je voudrais discuter des options pour gérer cette inexactitude. Sans eux, la proposition est brute.
 
Artyom Trishkin:
La solution proposée par vous contient une inexactitude de l'annulation de la commande par le serveur. Je voudrais discuter de la manière de traiter cette inexactitude. Sans eux, l'offre est brute.

Passons de MT5 à MT4. Un EA est en train de négocier. Soudain, le courtier fait une erreur technique (pas vous) et place une position sur votre compte, qui passe avec succès le filtre du conseiller expert ami ou ennemi - Magic, Symbol, etc. Quelques secondes plus tard, le courtier corrige son erreur et supprime (sans même fermer) sa position de votre compte.

Votre TS va-t-il tomber en panne ?


Je me souviens d'une situation où un grand courtier qui adore les Expert Advisors a fait un excellent travail. Par "erreur", il a déposé une très grosse somme sur le compte. En conséquence, le conseiller expert a ouvert une position avec un lot très important. Ensuite, le courtier a corrigé l'"erreur" - il a retiré l'argent crédité de manière incorrecte. Le compte a été fermé en utilisant un stop loss.

 
fxsaber:

Passons de MT5 à MT4. Un EA est en train de négocier. Soudain, le courtier fait une erreur technique (pas vous) et place une position sur votre compte, qui passe avec succès le filtre du conseiller expert ami ou ennemi - Magic, Symbol, etc. Quelques secondes plus tard, le courtier corrige son erreur et supprime (sans même fermer) sa position de votre compte.

Votre TS va-t-il tomber en panne ?


Je me souviens d'une situation où un grand courtier qui adore les Expert Advisors a fait un excellent travail. Par "erreur", il a déposé une très grosse somme sur le compte. En conséquence, le conseiller expert a ouvert une position avec un lot très important. Ensuite, le courtier a corrigé l'"erreur" - il a retiré l'argent crédité de manière incorrecte. Le compte a été fermé en utilisant un stopout.

Nous ne parlons pas du TS.
Une fonction qui DOIT retourner ce qui est physiquement dans le compte.
Tout le reste "imagine" - doit être sur la balance du développeur TS. Mais il devrait avoir dans son arsenal une fonction simple qui ne ment pas, et qui donne pourtant la possibilité de connaître l'état incertain de l'environnement.
 

Artyom Trishkin:
Мы говорим не о ТС.

Dans l'exemple, nous parlons de la situation spécifique de TC décrite. Et là, la question reste sans réponse.

Une fonction qui DOIT retourner ce qui est physiquement dans le compte.
Toutes les autres "imaginations" devraient être à la charge du développeur du CT. Mais il devrait avoir dans son arsenal une fonction simple, qui ne ment pas et qui, en même temps, donne la possibilité de connaître l'état indéfini de l'environnement.

La fonction renvoie ce qui se trouve physiquement sur le compte. Et il ment exactement autant qu'il le ferait dans MT4. C'est-à-dire que tout est normal.

Raison: