Erreurs, bugs, questions - page 2404

 
Ilya Malev:

Avez-vous besoin d'un conseiller pour en rédiger un ? Je pense que vous pouvez le faire vous-même aussi bien que moi.

Vous mentionnez souvent SELECT_BY_TICKET mais vous n'en donnez aucune utilisation pratique.

Je n'utilise pas cette construction moi-même. De plus, je pense que son utilisation dans MT4 est dangereuse.

Ilya Malev:

Dans 90% des cas, ce n'est pas SELECT_BY_TICKET dans l'historique, mais cela fonctionne avec les commandes comme avec les entités indivisibles. La fermeture ou l'ouverture partielle est une rareté pour la plupart des brokers forex. Habituellement, ils ferment/ouvrent complètement la commande ou donnent une citation hors contexte.

MT5 est également une plateforme d'échange où les partiels ne sont pas du tout rares. De plus, il y a eu un exemple ci-dessus où l'utilisateur ferme partiellement sa position. Il s'agit d'une pratique tout à fait normale lorsque, par exemple, le trader ferme une position en pièces à des niveaux de prix différents.
 
fxsaber:

Vous mentionnez souvent SELECT_BY_TICKET, mais vous ne donnez aucune application pratique.

Je n'utilise pas cette construction moi-même. De plus, je pense que son utilisation dans MT4 est dangereuse.

Vous avez peut-être raison, mais il s'agit d'une partie de la fonctionnalité qui ne fonctionne pas dans votre bibliothèque de la même manière que dans MT4. J'ai effectivement souligné ce fait sans avoir l'intention de le commenter.

 
Ilya Malev:

Vous avez peut-être raison, mais c'est une partie de la fonctionnalité qui fonctionne différemment dans votre bibliothèque que dans MT4. J'ai effectivement signalé ce fait sans avoir l'intention de le commenter.

Elle est spécifiquement mentionnée dans la discussion sur la bibliothèque. Des exemples et des arguments pertinents sont donnés pour démontrer que même sur MT4, l'utilisation de SELECT_BY_TICKET est une mauvaise logique de trading.

 
Ilya Malev:

Si vous pensez que ce mode ne doit pas être utilisé du tout, faites-le comme dans MT4 et ne recommandez pas son utilisation.

Ce mode peut être utile dans certaines situations.

Juste au cas où - le comportement du serveur à la fermeture partielle dans MT4 était différent pour différents courtiers et n'est pas garanti comme vous l'avez décrit.

Vous pouvez essayer de chercher un endroit où, lors d'une fermeture partielle dans MT4, la position ne changera pas le ticket. Le code ci-dessus a été donné.

 
Ilya Malev:

1. Je devrais peut-être vous demander de donner un exemple maintenant (mais pas dans ce fil, il est déjà encombré).

Nous avons vu une position fermée dans l'historique du terminal. Nous devons obtenir rapidement ses données - nous avons écrit un ticket dans le script et c'est tout.

Ou nous devons trier l'historique des transactions à notre manière. Trier les billets et sélectionner.

2. En fait, je ne me soucie pas de savoir si cela modifie le ticket à la fermeture partielle ou non, car cela n'a aucun effet sur la sélection des commandes dans le ticket lorsque la fermeture partielle n'est pas utilisée. Et lorsqu'il est utilisé, vous devez soit regarder le commentaire (MT4), soit sélectionner les transactions par numéro de position (MT5).

Tout est sélectionnable par ticket. C'est juste que le ticket de position change lorsque vous le fermez. C'est la seule différence avec MT4.

 
Ilya Malev:

Vous devriez donc créer une fonction supplémentaire qui permette de trouver le numéro de ticket modifié à partir de l'ancien numéro, au lieu d'insister sur le fait que la fonctionnalité SELECT_BY_TICKET qui existait dans MT4 était "erronée". Même si c'est votre affaire, bien sûr.

Il existe une fonction MT5 dont les codeurs peuvent avoir besoin, mais elle est difficile à mettre en œuvre. Et il y a celle qui est facile à mettre en œuvre mais qui n'est guère nécessaire.

Il est logique de faire quelque chose uniquement dans le premier cas. Par exemple, OrderOpenPriceRequest est un super truc, car il est élémentaire pour calculer le slippage à l'ouverture.

Mais OrderTicketOld est une chose très simple (POSITION_ID) et ne concerne rien. Voici le billet d'entrée - la chose est difficile à mettre en œuvre, c'est pourquoi elle est faite.

 
Ilya Malev:

Dans la partie bibliothèques, vous avez une exigence selon laquelle le conseiller expert doit être écrit "dans le style MT4". Sur la base de cette exigence, il est raisonnable d'implémenter une fonction qui s'inscrit exactement dans ce style, vous permettant d'écrire du code aussi bien que vous pourriez le faire sur MT4.

Vous n'avez pas montré une EA qui ne fonctionnerait pas.

 
Inondation
 
fxsaber:

Une fermeture partielle ne signifie pas nécessairement un remplissage partiel du côté serveur.

Alors comment sélectionner 0,2 lot fermé dans une telle situation dans MT5 ?

Je n'ai aucune idée de ce qu'il en est dans MT5, mais dans MT4, je cherchais une occasion de faire une clôture partielle d'un ordre et de trouver un nouveau ticket, mais sans utiliser le champ OrderComment().

tout fonctionne en général comme dans MT4 :

- sélectionner un ordre dans la liste des ordres de marché et obtenir un ticket

- nous demandons OrderClose() - nous obtenons vrai

- l'ancien ticket est passé dans l'historique des ordres et un nouveau ticket de marché est apparu ; si l'ordre a été fermé complètement (pas partiellement), aucun nouveau ticket n'apparaîtra

Le sujet de la fermeture partielle dans MT4 est assez intéressant, j'ai demandé, mais hélas, tous les gourous ont envoyé chercher le bonheur dans OrderComment() - je ne l'aime pas, mais apparemment les gens ne le sortent pas, un sujet avec la discussion d'un algorithme efficace pour MT4 d'abord, j'aurais participé


SZY : Je ne trouve pas le code source, je n'aime pas l'implémentation - j'ai sauvegardé les tickets d'ordre de bourse dans un tableau et immédiatement après une fermeture partielle, j'ai utilisé ArrayBsearch() pour trouver un ordre manquant dans le tableau, c'est-à-dire un nouveau ticket.

 
Igor Makanu:

HH : Je ne peux pas trouver le code source, et je n'ai pas aimé l'implémentation - je me souvenais des tickets d'ordre de marché dans un tableau et après la fermeture partielle, j'ai immédiatement utilisé ArrayBsearch() pour trouver un ordre qui manquait dans le tableau - c'est-à-dire un nouveau ticket.

En général, nous devrions également vérifier le magicien - il semble que le magicien doit être sauvegardé avec n'importe quel algorithme CE, sinon nous pourrions bien "trouver" une commande erronée...