La division par zéro est une erreur critique. Les programmes mql refusent catégoriquement de le faire).
si vous ne le comprenez pas, vous pouvez faire quelque chose comme ça :
J'ai montré que la division par zéro ne se produit que dans un cas particulier, ce zéro ne devrait pas être, et il n'existe pas si on prend le diviseur et le divisible séparément, c'est ce qui n'est pas clair,
OK, merci pour cette information, je vais y réfléchir moi-même. Peut-être y a-t-il une part de vérité dans votre réponse, merci encore.
Malheureusement, il faut du temps pour s'y mettre. Et le temps, c'est de l'argent.
Le problème ne se résoudra pas tout seul,
Il existe un concept d'aide désintéressée. Sur mql4.com et dans d'autres circonstances, j'aide aussi de temps en temps si je peux. Vous auriez pu vous taire.
Une position est fermée, et la requête PositionGetDouble(POSITION_PRICE_OPEN) renvoie la valeur de la position fermée. Tant qu'une nouvelle position n'est pas ouverte, la valeur de l'ancienne position (déjà fermée) n'est pas modifiée. C'est censé être comme ça ?
Laissez-moi être direct. La requête PositionGetDouble(POSITION_PRICE_OPEN) est effectuée après la requête de disponibilité de la position ?
Demande PositionsTotal() = 0. Maintenant je fais la requête PositionGetDouble(POSITION_PRICE_OPEN) et j'obtiens en réponse le prix d'ouverture d'une position déjà fermée. Idéalement, je devrais obtenir zéro, puisqu'il n'y a pas de position ouverte. Oui, après avoir demandé l'existence de la position.
À mon avis, tout est dans les règles :
La fonction PositionSelect() copie les données de position dans l'environnement logiciel, et les appels ultérieurs à PositionGetDouble(), PositionGetInteger() et PositionGetString() renvoient les données précédemment copiées. Cela signifie que la position elle-même peut ne plus exister (ou avoir changé de volume, de direction, etc.), mais que les données de cette position peuvent toujours être récupérées. Afin de garantir la réception de données de position fraîches, il est recommandé d'appeler la fonction PositionSelect() immédiatement avant de les demander.
Cependant, je ne comprends pas pourquoi les données de position doivent être demandées si la sélection de la position échoue. Mais peu importe.
Chers développeurs. Ne le prenez pas comme une contrainte, j'ai une question : que pensez-vous de la possibilité d'annuler un ordre en attente si le prix a atteint une valeur ?
Après la mise à niveau vers la Build 507, j'ai deux problèmes dans le testeur :
1. Pendant l'optimisation, lors du changement d'onglet du testeur, le terminal se bloque occasionnellement (pas toujours) ;
2. Si une énumération a été sélectionnée comme paramètre optimisé, lorsque l'on essaie d'exécuter l'un des résultats de l'optimisation, le conseiller expert ne voit pas la valeur de cette énumération, c'est-à-dire qu'elle est toujours égale à zéro.
Il semble que nous ayons trouvé un problème avec les énumérations pendant l'optimisation et que le terminal se plante. Vous devrez attendre la prochaine version.
stringo: Il semble avoir trouvé un problème avec l'énumération pendant l'optimisation et l'abandon du terminal. Vous devrez attendre la prochaine version.
Super. Vous ne parvenez pas à reproduire le problème des agents distants qui raccrochent ? Je m'en suis déjà lassé. Il est rare qu'une optimisation se déroule sans geler. Je dois désactiver les agents congelés, puis les réactiver et ainsi de suite jusqu'au prochain gel. Et il se bloque à la fois sur les agents qui sont sur le réseau local et sur les agents en nuage (moins souvent).
C'est génial. Ne pouvez-vous pas reproduire le problème avec les agents distants qui raccrochent ? Je commence à en avoir marre d'eux. Il est rare qu'une optimisation se déroule sans geler. Je dois désactiver les agents bloqués, puis les réactiver et ainsi de suite jusqu'au prochain blocage. Et il se bloque à la fois sur les agents qui sont sur le réseau local et sur les agents en nuage (moins souvent).
Beaucoup de choses ont été corrigées dans les agents. Et vous n'avez pas à attendre la prochaine version. Vous devez attendre que les agents distants passent à la version la plus récente.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
View-Tools-Experts.
La division par zéro est une erreur critique. Les programmes mql refusent catégoriquement de le faire).
si vous ne le comprenez pas, vous pouvez faire quelque chose comme ça :
J'ai montré que la division par zéro ne se produit que dans un cas particulier, ce zéro ne devrait pas être, et il n'existe pas si on prend le diviseur et le divisible séparément, c'est ce qui n'est pas clair,
OK, merci pour cette information, je vais y réfléchir moi-même. Peut-être y a-t-il une part de vérité dans votre réponse, merci encore.
Malheureusement, il faut du temps pour s'y mettre. Et le temps, c'est de l'argent.
Le problème ne se résoudra pas tout seul,
L'aide désintéressée existe. Sur mql4.com et dans d'autres circonstances, il m'arrive aussi d'aider si je peux. Vous auriez pu vous taire.
C'est censé être comme ça ?
Une position est fermée, et la requête PositionGetDouble(POSITION_PRICE_OPEN) renvoie la valeur de la position fermée. Tant qu'une nouvelle position n'est pas ouverte, la valeur de l'ancienne position (déjà fermée) n'est pas modifiée. C'est censé être comme ça ?
point intéressant, à savoir
Pour éviter cela, j'utilise ce qui suit
et il sera nul comme souhaité.
Demande PositionsTotal() = 0. Maintenant je fais la requête PositionGetDouble(POSITION_PRICE_OPEN) et j'obtiens en réponse le prix d'ouverture d'une position déjà fermée. Idéalement, je devrais obtenir zéro, puisqu'il n'y a pas de position ouverte. Oui, après avoir demandé l'existence de la position.
À mon avis, tout est dans les règles :
La fonction PositionSelect() copie les données de position dans l'environnement logiciel, et les appels ultérieurs à PositionGetDouble(), PositionGetInteger() et PositionGetString() renvoient les données précédemment copiées. Cela signifie que la position elle-même peut ne plus exister (ou avoir changé de volume, de direction, etc.), mais que les données de cette position peuvent toujours être récupérées. Afin de garantir la réception de données de position fraîches, il est recommandé d'appeler la fonction PositionSelect() immédiatement avant de les demander.
Cependant, je ne comprends pas pourquoi les données de position doivent être demandées si la sélection de la position échoue. Mais peu importe.
Chers développeurs. Ne le prenez pas comme une contrainte, j'ai une question : que pensez-vous de la possibilité d'annuler un ordre en attente si le prix a atteint une valeur ?
Après la mise à niveau vers la Build 507, j'ai deux problèmes dans le testeur :
1. Pendant l'optimisation, lors du changement d'onglet du testeur, le terminal se bloque occasionnellement (pas toujours) ;
2. Si une énumération a été sélectionnée comme paramètre optimisé, lorsque l'on essaie d'exécuter l'un des résultats de l'optimisation, le conseiller expert ne voit pas la valeur de cette énumération, c'est-à-dire qu'elle est toujours égale à zéro.
Il semble avoir trouvé un problème avec l'énumération pendant l'optimisation et l'abandon du terminal. Vous devrez attendre la prochaine version.
Super. Vous ne parvenez pas à reproduire le problème des agents distants qui raccrochent ?
Je m'en suis déjà lassé. Il est rare qu'une optimisation se déroule sans geler.
Je dois désactiver les agents congelés, puis les réactiver et ainsi de suite jusqu'au prochain gel.
Et il se bloque à la fois sur les agents qui sont sur le réseau local et sur les agents en nuage (moins souvent).
C'est génial. Ne pouvez-vous pas reproduire le problème avec les agents distants qui raccrochent ?
Je commence à en avoir marre d'eux. Il est rare qu'une optimisation se déroule sans geler.
Je dois désactiver les agents bloqués, puis les réactiver et ainsi de suite jusqu'au prochain blocage.
Et il se bloque à la fois sur les agents qui sont sur le réseau local et sur les agents en nuage (moins souvent).