Erreurs, bugs, questions - page 895

 
Konstantin83: Une commande avec un magik est ouverte. Ensuite, cette magie est transférée au métier et à la position. Ensuite, lorsque la position est fermée au profit ou au stop, le numéro magique n'est pas transféré à l'ordre de fermeture.

Comment connaître le bénéfice d'une position en passant par un trade magique ? Le commerce de fermeture ne va pas là parce qu'il n'a pas de magik.

IDENTIFICATEUR DE POSITION

L'ID du poste est un numéro unique attribué à chaque poste nouvellement ouvert et ne change pas tout au long de sa vie. Un retournement de la position ne modifie pas l'identifiant de la position.

long

DEAL_POSITION_ID

Identifiant de la position, en ouverture, modification ou fermeture de laquelle cette affaire a été impliquée. Chaque position possède un identifiant unique, qui est attribué à toutes les transactions effectuées sur l'instrument pendant la durée de vie de la position.

long

 
Une terminaison anormale signifie que l'Expert Advisor est bouclé, ne vérifie pas IsStopped et est arrêté de force par le terminal.
 
Renat:
Une terminaison anormale signifie que l'Expert Advisor est en boucle, qu'il ne vérifie pas IsStopped et qu'il est forcé de s'arrêter par le terminal.

Je peux noter que la terminaison anormale n'est pas seulement due au code MQL, mais aussi à des hoquets internes du runtime lui-même. Disons que la terminaison anormale incontrôlable du MQL.

Par exemple, lorsque le code MQL envoie une commande de suppression d'objetSupprimer un objet d'un graphique qui existe déjà (ni objet ni graphique). Mais il était là au moment où la commande a été envoyée.
Et le code MQL n'attendra pas la réponse de la commande, puisque le blocage ne s'est pas produit dans le code MQL, mais dans les profondeurs de l'exécution. C'est-à-dire, dans ObjectDelete lui-même. En conséquence, nous obtiendrons une fin anormale.
Le deuxième cas le plus fréquent est l'utilisation de la fonction ObjectsDeleteAll. Puisqu'elle est synchrone, elle s'accroche également à la suppression des objets qui ont déjà été supprimés, mais seulement après son appel.
Le troisième cas est le plus dangereux, lorsque le runtime ne peut pas terminer la commande Expert Advisor de Deinit, parce que l'EA a été supprimé du graphique et que celui-ci est fermé. Nous aurons également un gel de l'environnement et une cessation anormale incontrôlée.

Tout ce que j'ai décrit ci-dessus concerne spécifiquement la fin du travail de l'expandeur dans la fonction OnDeinit. Quelque part dans les profondeurs du code, il y a une incohérence entre les actions de fin, d'abord avec la présence de la carte, et ensuite - avec le comportement de l'environnement à Deinit de l'expert.
Quelqu'un fait quelque chose plus tôt et provoque une terminaison anormale.

Bien sûr, dans certains cas, j'ai pu résoudre ce problème en vérifiant en plus la disponibilité. Mais il est rare qu'un seul des problèmes de synchronisation décrits se produise. La suppression/installation d'un indicateur sur un graphique qui tente de se fermer, la suppression d'objets.

 

J'aimerais avoir des réponses sur la façon dont il peut y avoir un prélèvement absolu SUPÉRIEUR au solde initial.

Bien que par définition.

 Absolute Drawdown
Просадка от начального баланса показывает, насколько уменьшался баланс относительно первоначального значения. Максимально может быть равно начальному балансу, если потеряны все деньги.

Détaillé dans le sujethttps://www.mql5.com/ru/forum/8996

 
Renat:
Une terminaison anormale signifie que l'EA est bouclée et ne vérifie pas IsStopped et est arrêtée de force par le terminal.

Faux.

sergeev:

Je pourrais noter que la terminaison anormale n'est pas seulement due au code MQL, mais aussi à des hoquets internes dans le runtime lui-même.

Oui, et il y a beaucoup de surprises de ce genre.

J'ai connu un blocage du terminal et l'impossibilité de supprimer le conseiller expert en raison d'une mémoire insuffisante. Dans ce cas, même la journalisation n'est pas toujours enregistrée.

 
komposter:

Faux.

Oui, et il y a beaucoup de surprises comme ça.

J'ai rencontré des blocages de terminal et l'impossibilité de supprimer l'EA s'il n'y a pas assez de mémoire. Dans ce cas, même la journalisation ne fonctionne pas toujours.

Si j'ai bien compris, le fil de discussionhttps://www.mql5.com/ru/forum/8278 traite précisément de cette question.
Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс.
 
Yedelkin:

IDENTIFICATEUR DE POSITION

L'identifiant du poste est un numéro unique qui est attribué à chaque poste nouvellement ouvert et qui ne change pas tout au long de sa durée de vie. L'inversion d'une position ne modifie pas l'identifiant de la position.

long

DEAL_POSITION_ID

Identifiant de la position, en ouverture, modification ou fermeture de laquelle cette affaire a été impliquée. Chaque position possède un identifiant unique, qui est attribué à toutes les transactions effectuées sur l'instrument pendant la durée de vie de la position.

long

Merci, ça m'a aidé)
 
iTC:
Si j'ai bien compris, le sujet dehttps://www.mql5.com/ru/forum/8278 est lié à cette même question.

Non, c'était à propos des indicateurs.

Un conseiller expert qui dépasse une certaine limite de mémoire raccroche silencieusement le terminal. Cela se produit, par exemple, lorsque de nombreux graphiques de différents symboles/périodes avec des indicateurs sont chargés.

 
sergeev:

Je peux noter que la terminaison anormale n'est pas seulement due au code MQL, mais aussi à des hoquets internes du runtime lui-même. Disons donc que la terminaison anormale est incontrôlable à partir du MQL.

Par exemple, lorsque le code MQL envoie une commande pour supprimer un objet ObjectDelete d'un graphique qui existe déjà (ni un objet, ni un graphique). Mais il était là au moment où la commande a été envoyée.
Et le code MQL n'attendra pas la réponse de la commande, puisque le blocage ne s'est pas produit dans le code MQL, mais dans les profondeurs de l'exécution. C'est-à-dire, dans ObjectDelete lui-même. En conséquence, nous obtiendrons une fin anormale.
Le deuxième cas courant est l'utilisation de la fonction ObjectsDeleteAll. Puisqu'elle est synchrone, elle s'accroche également à la suppression des objets qui ont déjà été supprimés, mais seulement après son appel.
Le troisième cas est le plus dangereux, lorsque le runtime ne peut pas terminer la commande Expert Advisor de Deinit, parce que l'EA a été supprimé du graphique et que celui-ci est fermé. Nous aurons également un gel de l'environnement et une cessation anormale incontrôlée.

Tout ce que j'ai décrit ci-dessus concerne spécifiquement la fin du travail de l'expandeur dans la fonction OnDeinit. Quelque part dans les profondeurs du code, il y a une incohérence entre les actions de fin, d'abord avec la présence de la carte, et ensuite - avec le comportement de l'environnement à Deinit de l'expert.
Quelqu'un fait quelque chose plus tôt et provoque une terminaison anormale.

Bien sûr, dans certains cas, j'ai pu résoudre ce problème en vérifiant en plus la disponibilité. Mais il est rare qu'un seul des problèmes de synchronisation décrits se produise. La suppression/installation d'un indicateur sur un graphique qui tente de se fermer, la suppression d'objets.

Merci, cela sera vérifié.
 
komposter:

Non, c'était à propos des indicateurs.

Un conseiller expert qui dépasse une certaine limite de mémoire raccroche silencieusement le terminal. Cela se produit, par exemple, lorsque de nombreux graphiques de différents symboles/périodes avec des indicateurs sont chargés.

Merci, nous allons certainement le vérifier.
Raison: