Erreurs, bugs, questions - page 1887

 
Alexandr Bryzgalov:

Je n'ai pas besoin de le vérifier, je peux voir qu'il renvoie ce dont j'ai besoin.

Je parlais de la première variante de l'utilisation de la fonction


Ok, alors. Commençons par la queue.

1. positionGetInteger :

La fonction renvoie la propriété demandée d'une position ouverte précédemment sélectionnée à l'aide de la fonction...

En d'autres termes, avant d'utiliser PositionGetInteger, la position doit d'abord être sélectionnée.


2. Nous sélectionnons la position en utilisant le PositionGetTicket :

Valeur de retour.

Le billet de poste. En cas d'échec de l'exécution, il renvoie 0.


Et où avez-vous une vérification (après la boucle) qu'il y a eu un retour de PositionGetTicket ? Il n'y a pas de contrôle, et là, d'ailleurs, "zéro" est renvoyé - c'est-à-dire que PositionGetTicket a été déclenché avec une erreur - ce qui revient à sélectionner une position qui n'existe pas. Ensuite, sans vérifier le résultat de PositionGetTicket, vous essayez d'obtenir sa propriété à partir d'une position inexistante. Et là, dans les propriétés de la position inexistante, soit des déchets, soit de simples données de structures nulles.


En résumé, sans vérifier si la PositionGetTicket renvoie "zéro", vous ne pouvez pas aller plus loin.

 
Vladimir Karputov:


Ok, alors. Partons de la queue.

1. positionGetInteger :

La fonction renvoie la propriété demandée d'une position ouverte précédemment sélectionnée à l'aide de la fonction...

En d'autres termes, la position doit d'abord être sélectionnée avant d'utiliser PositionGetInteger.


2. Nous sélectionnons la position en utilisant le PositionGetTicket :

Valeur de retour.

Le billet de poste. En cas d'échec de l'exécution, il renvoie 0.


Et où avez-vous une vérification (après la boucle) qu'il y a eu un retour de PositionGetTicket ? Il n'y a pas de contrôle, et là, d'ailleurs, "zéro" est renvoyé - c'est-à-dire que PositionGetTicket a été déclenché avec une erreur - ce qui revient à sélectionner une position qui n'existe pas. Ensuite, sans vérifier le résultat de PositionGetTicket, vous essayez d'obtenir sa propriété à partir d'une position inexistante. Et là, dans les propriétés de la position inexistante, soit des déchets, soit de simples données de structures nulles.


En résumé, sans vérifier que la PositionGetTicket renvoie "zéro", vous ne pouvez pas aller plus loin.

Merci, très détaillé et utile.
 
Vladimir Karputov:


Ok, allons-y comme ça. Commençons par la queue.

1. positionGetInteger :

La fonction renvoie la propriété demandée d'une position ouverte précédemment sélectionnée à l'aide de la fonction...

En d'autres termes, la position doit d'abord être sélectionnée avant d'utiliser PositionGetInteger.


2. Nous sélectionnons la position en utilisant le PositionGetTicket :

Valeur de retour.

Le billet de poste. En cas d'échec de l'exécution, il renvoie 0.


Et où avez-vous une vérification (après la boucle) qu'il y a eu un retour de PositionGetTicket ? Il n'y a pas de contrôle, et là, d'ailleurs, "zéro" est renvoyé - c'est-à-dire que PositionGetTicket a été déclenché avec une erreur - ce qui revient à sélectionner une position qui n'existe pas. Ensuite, sans vérifier le résultat de PositionGetTicket, vous essayez d'obtenir sa propriété à partir d'une position inexistante. Et là, dans les propriétés de la position inexistante, soit des déchets, soit de simples données de structures nulles.


En résumé, si vous ne vérifiez pas si la PositionGetTicket renvoie "zéro", vous ne pouvez pas aller plus loin.

vous n'avez pas besoin de vous expliquer)

Ce n'est pas la question.

lire correctement : est-il acceptable qu'une fonction renvoie la même valeur dans différentes situations ?

La fonction peut-elle faire cela ?
 
Vladimir Karputov:

En résumé, si vous ne vérifiez pas que PositionGetTicket a un retour de "zéro", vous ne pouvez pas avancer.

Vous pouvez

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bugs, bugs, questions

fxsaber, 2017.05.12 11:19

il est logique de faire une vérification (PositionGetInteger(POSITION_TICKET) > 0).
 
Alexandr Bryzgalov:

cette fonction pour différentes situations renvoie la même valeur ?

Est-il exact que la fonction fait cela ?
Malheureusement, oui.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bugs, bugs, questions

fxsaber, 2017.05.12 11:29

Oui. Mais toute autre valeur serait également trompeuse.
 
Alexandr Bryzgalov:

1. vous n'avez pas à vous expliquer).

ce n'est pas la question

2. si j'ai bien lu : est-il acceptable qu'une fonction renvoie la même valeur dans différentes situations ?

Une fonction peut-elle faire cela ?


1. Vous êtes une personne grossière qui a également fait une erreur dans son code, mais ne veut pas l'admettre.

2. La fonction fonctionne tout à fait correctement. Parce qu'il (PositionGetInteger(POSITION_TYPE)) ne peut renvoyer que 2 valeurs - soit POSITION_TYPE_BUY, soitPOSITION_TYPE_SELL. Mais sans sélectionner une position (et vous ne la sélectionnez pas - vous ne vérifiez pas ce qui a été sélectionné exactement), exiger quelque chose de (PositionGetInteger(POSITION_TYPE)) est imprudent.


En résumé, lorsque votre code est écrit avec une erreur logique, vous n'avez tout simplement pas le droit d'exiger quelque chose des fonctions du système.

 
Vladimir Karputov:

En résumé, lorsque votre code est écrit avec une erreur logique, vous n'avez tout simplement pas le droit d'exiger quoi que ce soit des fonctions du système.

Un bon exemple est celui de la question qui n'a jamais reçu de réponse.
 
Vladimir Karputov:


1. Vous êtes une personne grossière qui a fait une erreur dans le code mais ne veut pas l'admettre.

2. La fonction fonctionne tout à fait correctement. Parce qu'il (PositionGetInteger(POSITION_TYPE)) ne peut renvoyer que DEUX valeurs - soit POSITION_TYPE_BUY, soitPOSITION_TYPE_SELL. Mais sans sélectionner une position (et vous ne la sélectionnez pas - vous ne vérifiez pas ce qui a été sélectionné exactement), exiger quelque chose de (PositionGetInteger(POSITION_TYPE)) est imprudent.


En résumé, lorsque votre code est écrit avec une erreur logique, vous n'avez tout simplement pas le droit d'exiger quelque chose des fonctions du système.

Désolé, ce n'est pas ma faute si quelqu'un ne voit pas le problème.

Le fait qu'il y ait une erreur délibérée dans le code est reconnu.

Et je sais comment le réparer.

Mais la question est différente.

 

Pourquoi la fonction PositionGetInteger(POSITION_TYPE) renvoie-t-elle une valeur d'achat (égale à 0) au lieu d'une valeur d'erreur (égale à 0) si les paramètres d'entrée ne sont pas corrects ?

 
Alexandr Bryzgalov:

Pourquoi la fonction PositionGetInteger(POSITION_TYPE_SELL) renvoie-t-elle une valeur d'achat (égale à 0) au lieu d'une valeur d'erreur(égale à 0) si les paramètres d'entrée ne sont pas corrects ?

Un exemple de nombre qu'il pourrait renvoyer en cas d'erreur ?
Raison: