Questions des débutants MQL5 MT5 MetaTrader 5 - page 643

 
Alexey Viktorov:

Pas le dernier sur la liste, mais le plus "jeune" dans le temps.

Bien que je sois tout aussi inconsidéré. La question porte sur la modification, et je suis en train d'écrire près... Et si vous le modifiez simplement, il n'y aura pas de trous dans la liste des commandes... Il se peut que vous deviez ajouter des variables et leur attribuer des valeurs, et que vous deviez vérifier les paramètres pour éviter l'erreur n° 1. Eh bien, Mila peut le faire elle-même.

Artyom Trishkin:

Comment pouvez-vous être sûr qu'il n'y aura pas de dépendance de tri, et que vous ne manquerez pas du tout le mauvais ordre ?

Encore une fois, pour trouver de manière fiable la dernière commande, il faut l'identifier par son heure d'ouverture, et non par sa position dans la liste.

Pour autant que je sache, les ordres dans la liste sont classés simplement du plus ancien (OrdersTotal()-1) au plus récent (0). Si ce n'est pas le cas (la liste n'est pas triée par heure) et que vous avez des preuves, veuillez les fournir.

Si vous voulez dire qu'au moment où l'historique a été demandé à l'aide de la fonction OrdersTotal(), un autre EA a passé un ordre, alors soit il serait ignoré (dans tous les cas, il n'aurait pas le temps d'être dans l'historique des ordres), soit il serait aussi le dernier dans la liste des ordres.

Bien sûr, nous pouvons nous réassurer fortement et comparer le temps d'ouverture de tous les ordres de total-1 à 0, mais ce ne serait guère une solution optimale lorsque nous avons un grand nombre d'ordres et de symboles échangés.

 
Alexey Kozitsyn:

Pour autant que je sache, les commandes de la liste sont triées uniquement de la plus ancienne (OrdersTotal()-1) à la plus récente (0). Si ce n'est pas le cas (la liste n'est pas triée par heure) et que vous avez des preuves, veuillez les fournir.

Si vous dites qu'au moment où l'historique a été demandé à l'aide de la fonction OrdersTotal(), un autre EA a passé un ordre, alors soit il serait ignoré (de toute façon, parce qu'il n'a pas eu le temps d'être dans l'historique des ordres), soit il deviendrait aussi le dernier dans la liste des ordres.

Bien sûr, nous pouvons nous réassurer fortement et comparer le temps d'ouverture de tous les ordres de total-1 à 0, mais ce ne serait guère une solution optimale lorsque nous avons un grand nombre d'ordres et de symboles échangés.

Jésus... Preuves à l'appui...

Je suppose que vous ne vous souvenez pas que de telles situations ont été discutées sur mql4.com il y a longtemps. C'est alors que nous sommes arrivés à la conclusion qu'il serait préférable de rechercher un ordre par heure pour déterminer sans ambiguïté son heure d'ouverture/de fermeture. Je suis déjà fatigué de répéter qu'il y avait une dépendance au tri. Puis nous avons fait en sorte qu'il cesse d'être dépendant du tri. Les gens se sont détendus et ont commencé à faire ce que vous suggérez. Et puis bam... et il y avait à nouveau une dépendance au tri. Les gens ont hurlé - les robots sont devenus fous. Et puis la dépendance au triage a de nouveau disparu.

Si vous souhaitez que l'optimalité supposée tombe à nouveau sous le couperet un jour, alors faites-le comme vous le faites. Mais ne suggérez pas de telles solutions à d'autres personnes. Ou, lorsque vous leur proposez, prévenez-les de la possibilité de perdre de l'argent en raison de l'échec de la recherche de l'ordre nécessaire, qui (la recherche) dépend du tri des symboles dans la liste, qui, à son tour, ne dépend pas de vous et de votre algorithme. Au contraire - votre algorithme dépend de quelqu'un d'autre...

Ne leur dites pas que le concessionnaire peut tricher avec l'heure d'ouverture/de fermeture, c'est une autre question.

Bonne chance.

 
Artyom Trishkin:

Jésus... Les preuves qu'ils veulent...

Apparemment, vous ne vous souvenez pas que de telles situations ont été discutées sur mql4.com il y a longtemps. C'est alors que vous êtes arrivé à la conclusion qu'il est toujours préférable de rechercher un ordre par heure pour déterminer sans ambiguïté son heure d'ouverture/de fermeture. Je suis déjà fatigué de répéter qu'il y avait une dépendance au tri. Puis nous avons fait en sorte qu'il cesse d'être dépendant du tri. Les gens se sont détendus et ont commencé à faire ce que vous suggérez. Et puis bam... et il y avait à nouveau une dépendance au tri. Les gens ont hurlé - les robots sont devenus fous. Et puis la dépendance au triage a de nouveau disparu.

Si vous souhaitez que l'optimalité supposée tombe à nouveau sous le coup de l'écrasement un jour, alors faites-le comme vous le faites. Mais ne suggérez pas de telles solutions à d'autres personnes. Ou, lorsque vous leur proposez, prévenez-les de la possibilité de perdre de l'argent en raison de l'échec de la recherche de l'ordre nécessaire, qui (la recherche) dépend du tri des symboles dans la liste, qui, à son tour, ne dépend pas de vous et de votre algorithme. Au contraire - votre algorithme dépend de quelqu'un d'autre...

Ne me dites pas que le concessionnaire peut tricher avec le temps d'ouverture/fermeture - c'est un autre problème.

Bonne chance.

Ouais, je ne me souviens pas de discussions de ce genre, je ne lis pas souvent le forum foursome. Peut-être qu'il y avait autrefois quelque chose comme ça. Mais si vous vous appuyez sur tout ce qui était "il était une fois", aucune ressource ne suffira.

Si vous avez le désir, au nom d'une prétendue optimalité, de tomber à nouveau dans le collimateur un jour, alors faites ce que vous faites. Mais ne suggérez pas de telles solutions à d'autres personnes. Ou, lorsque vous leur proposez, prévenez-les de la possibilité de perdre de l'argent en raison de l'échec de la recherche de l'ordre nécessaire, qui (la recherche) dépend du tri des symboles dans la liste, qui à son tour ne dépend pas de vous et de votre algorithme. Au contraire - votre algorithme dépend entièrement de quelqu'un d'autre...

Comme vous le dites, il est possible d'être "pris dans la ligne de mire" de plusieurs autres façons. Si vous devez déterminer rapidement la dernière commande, il n'est pas rationnel de les parcourir toutes en même temps.

Chacun doit décider lui-même s'il accepte ou non ma méthode. La meilleure solution est d'ouvrir plusieurs commandes et de voir comment le tri fonctionne MAINTENANT.

Bonne chance à vous aussi.

 
Artyom Trishkin:

Êtes-vous sûr d'avoir montré un moyen fiable de manquer la dernière position dans la liste ?

Si vous faites du commerce de manière réaliste, ne craignez-vous pas que le triage ne devienne soudainement une dépendance ?

Pourtant, IMHO, nous avons besoin de deux cycles ici - dans le premier, nous cherchons la position la plus fraîche à l'heure d'ouverture, dans le second, nous modifions tout sauf celui dont le ticket a été trouvé dans le premier cycle.

Non, pas sûr, mais logiquement correct.

J'ai lu plus bas ce qui concerne le caractère insidieux des QM - l'inquiétude est née. Merci de m'avoir prévenu.

 
Alexey Kozitsyn:

Lorsque vous devez identifier rapidement la dernière commande, ce n'est pas une bonne idée de les parcourir toutes en même temps, et j'ai déjà dit pourquoi.

Pourquoi devrions-nous les passer en revue à chaque fois ? C'est exactement l'irrationalité.

Nous pouvons rechercher une fois par tick les positions de marché et les ordres fermés et remplir tous les champs de la structure avec toutes les données nécessaires des deux derniers ordres - ouverts et fermés.

Et utilisez les données obtenues lors de ce coche. Après les avoir modifiés sur ce tick, vous obtiendrez de nouvelles données et de nouveaux champs des deux structures sur le tick suivant. Il me semble que c'est un équilibre normal entre la fiabilité et la rapidité. C'est l'essence même de l'optimalité. Et ce que vous appelez optimalité, IMHO, est un travail de hache ;)

 
Artyom Trishkin:

Pourquoi revenir dessus à chaque fois ? C'est exactement le point où il n'est pas rationnel.

Vous pouvez rechercher une fois par tick les positions de marché et les ordres fermés, et remplir tous les champs de la structure avec toutes les données nécessaires des deux derniers ordres - ouverts et fermés.

Et utiliser les données de cette coche. Après les avoir modifiés sur ce tick, vous obtiendrez de nouvelles données et de nouveaux champs de deux structures sur le tick suivant. Il me semble que c'est un équilibre normal entre la fiabilité et la rapidité. C'est l'essence même de l'optimalité. Et ce que vous appelez optimalité, IMHO, est un travail de hache ;)

Vous entrez dans les détails, personne n'a parlé de chaque fois. Je suis, comme vous, en faveur de la rationalité, nous avons simplement des points de vue différents sur celle-ci.

 
Alexey Kozitsyn:

Vous entrez dans les nuances, personne n'a parlé de tout le temps du tout. Je suis, comme vous, en faveur de la rationalité, c'est juste que vous et moi en avons une vision différente.

Vos propres mots :

Partout où vous avez besoin de déterminer rapidement la dernière commande, il n'est pas rationnel de les parcourir toutes à temps, imho...

"Partout" n'est pas synonyme de "à chaque fois" dans ce contexte ?

C'est pourquoi j'ai dit "passez par là une fois par tick", remplissez les champs de la structure avec les bonnes données et utilisez-la partout où vous avez besoin d'obtenir des données sur la dernière commande, au lieu de passer par là à chaque fois.

Peut-être que je t'ai mal compris ? Mais l'expression que vous citez, IMHO, exclut toute ambiguïté de compréhension.

 
Artyom Trishkin:

Vos propres mots :

"Partout" n'est pas synonyme de "à chaque fois" dans ce contexte ?

C'est pourquoi j'ai répondu - il s'agit de passer une fois par coche, de remplir les champs de la structure avec les bonnes données et de les utiliser partout où vous avez besoin d'obtenir les données de la dernière commande, et non de les passer en revue à chaque fois.

Peut-être ai-je mal compris ? Mais l'expression que vous citez, IMHO, exclut toute ambiguïté de compréhension.

Vous ne tenez pas compte du fait qu'il peut y avoir des pauses ou de longs calculs dans le programme, après lesquels l'environnement commercial doit être mis à jour. Faire glisser un tableau de commandes n'est pas toujours pratique, et un tableau global n'est pas toujours une bonne solution.

Quoi qu'il en soit, comme je l'ai dit, personne ne vous décourage, mais il y a des cas où votre option sera moins préférable (systèmes multi-devises/multi-commandes). Et être rassuré que MQ changera à nouveau l'ordre de tri (étant donné qu'il est le même dans mql4, et dans mql5), je pense, n'est pas nécessaire.

 
Alexey Kozitsyn:

Vous ne tenez pas compte du fait qu'il peut y avoir des pauses/de longs calculs dans le programme après lesquels vous devez mettre à jour l'environnement de négociation. Glisser un tableau de commandes derrière soi n'est pas toujours pratique, et un tableau global n'est pas toujours une bonne solution.

Quoi qu'il en soit, comme je l'ai dit, personne ne vous décourage, mais il y a des cas où votre option sera moins préférable (systèmes multi-devises/multi-commandes). Et pour être réassuré que MQ changera à nouveau l'ordre de tri (étant donné que c'est le cas dans mql4, et dans mql5), je pense que ce n'est pas nécessaire.

Une classe qui vous permet d'avoir facilement et sans effort des données pour tous les personnages et tous les magiciens a été créée il y a longtemps. Et il n'est pas nécessaire de transporter quoi que ce soit, notamment tout le tableau, mais seulement DEUX ordres - le dernier ouvert et le dernier fermé. Chaque fois, après de longs calculs ou une longue attente, vous devez remplir à nouveau des champs de structure, ce que vous devez d'ailleurs faire, ou vous ne mettez pas à jour votre environnement ?

OK. Ce n'est pas un gros problème... Faites-le à votre façon. Ne vous souciez pas de la fiabilité - oubliez-la...

 
Artyom Trishkin:

Il existe depuis longtemps une classe qui vous permet d'avoir facilement et sans effort des données sur tous les symboles et tous les magiciens. Et il n'est pas nécessaire de faire glisser quoi que ce soit, notamment tout le tableau, mais seulement DEUX ordres - le dernier ouvert et le dernier fermé. Chaque fois, après de longs calculs ou une longue attente, vous devez remplir à nouveau des champs de structure, ce que vous devez d'ailleurs faire, ou vous ne mettez pas à jour l'environnement ?

OK. Ce n'est pas un gros problème... Faites-le à votre façon. Ne vous souciez pas de la fiabilité - oubliez-la...

Et je mets à jour l'environnement, c'est juste que votre méthode de recherche prendra beaucoup plus de temps, c'est tout, et au sujet de la fiabilité, c'est discutable.
Raison: