Erreurs, bugs, questions - page 2766

 
A100:

via ORDER_TIME_SPECIFIED et MqlTradeRequest::expiration

Vous auriez dû lire la documentation il y a longtemps.

Encore une fois ! Je ne suis pas intéressé par le type ORDER_TIME_SPECIFIED, je suis intéressé par

JOUR_DE_L'HEURE_DE_LA_COMMANDE

La commande sera valable jusqu'à 23:59:59 de la date indiquée. Si cette heure ne tombe pas sur une session commerciale, l'expiration se fera à l'heure commerciale la plus proche.

Si je négocie sur TF W1, je veux fixer l'heure d'expiration au vendredi. Bien sûr, nous pouvons calculer le temps jusqu'à vendredi, je peux non seulement lire, mais aussi compter jusqu'à 1000. Mais ma question est celle qui m'intéresse. Je souhaite également connaître le format pour spécifier le jour. Ou bien il n'est pas important de préciser l'heure exacte de la journée, du moment qu'elle tombe le jour souhaité ? Qu'adviendra-t-il de votre ordre si vous fermez votre transaction le vendredi à 21h00, par exemple, et que l'ordre est ouvert le lundi ? Qui devrait être la première expiration ou activation.

 
A100:

Le temps zéro doit être réglé.

Merci d'avoir supprimé le message auquel j'ai mis si longtemps à répondre.

Vous êtes sûr de ça ? Je le ferais par précaution. Mais j'aimerais en être sûr.

 
Alexey Viktorov:

Merci d'avoir supprimé le message auquel j'ai mis si longtemps à répondre.

Vous êtes sûr de ça ? Je le ferais par précaution, bien sûr. Mais je veux être sûr.

Vous devez placer manuellement un ordre en attente avec une date (sans heure) et lire par programme ses valeurs de type_time et d'expiration.

Je ne l' ai pas inventé moi-même, je l'ai fait comme ça.

 
A100:

Définir manuellement un ordre en attente pour qu'il expire à une date spécifique (sans heure) et lire par programme ses valeurs type_time et expiration.

Ce n'est pas moi qui ai eu cette idée, c'est moi.

Merci pour le conseil. Je n'échange pas du tout les mains et je ne pensais même pas que cela pouvait être vérifié de cette façon. Je l'ai fait d'une manière légèrement différente. Voici le code.

  trade.OrderOpen(_Symbol, ORDER_TYPE_SELL_STOP, 0.1, 0, 1.24000, 0.0, 0.0, ORDER_TIME_SPECIFIED_DAY, D'2020.06.03 23:41:02');

et cet ordre.


Il s'avère que le temps n'est pas pris en compte.

Mais nous avons toujours la deuxième question. Lequel sera exécuté en premier, l'expiration ou l'activation de l'ordre...

La seule chose que je crains est un comportement différent dans le testeur et le réel ou la démo. Et même dans la démo, vous pouvez attendre d'être stupéfait...
 
Alexey Viktorov:

Mais sans clarification, il y a une deuxième question. Qu'est-ce qui va exécuter en premier ou activer l'ordre...

Cela dépend du courtier et du facteur humain - comment ils organisent les choses là-bas. J'ai remarqué que l'ordre du jour du vendredi est resté en attente jusqu'à la séance de négociation du lundi (même pendant la séance de cotation, il était toujours en attente).

Un soir, j'ai appelé la banque dans la salle des marchés et j'ai demandé pourquoi mon ordre n'avait pas été exécuté. Ils ont dit : "Nous ne le voyons pas ! Comment ne le vois-tu pas ? Le voici dans mon MetaTrader - je l'ai placé il y a quelques heures et le prix est déjà là depuis une heure. Nous travaillons avec un autre programme. Le matin, un nouvel employé vient télécharger les données de MetaTrader et nous allons tout voir.

Ainsi, vos ordres en dessous du seuil n'intéressent personne (et au-dessus du seuil, ils se négocient en mode prix à la demande) car ils ne sortent nulle part et le négociant reçoit au mieux une position agrégée

 

Le terminal a été mis à niveau pour construire 2470 dans l'ouvert.

Et pas de problème, le robot a commencé à montrer des résultats moins bons dans le testeur qu'avant la mise à jour.

J'ai commencé à examiner la question et voici ce que j'ai vu.

Lorsque j'ai lancé le robot dans l'historique en mode normal, à la fin, il a appelé un graphique montrant toutes mes transactions et j'ai fait défiler vers le bas et j'ai été surpris de ce qui se passait là.

Comme vous pouvez le voir sur le graphique, dans un compte de compensation, le pétrole à terme ouvre quelques positions, bien que le robot n'ait pas de moyenne, d'échelle, etc. Il n'y a qu'une seule position stop and take, après l'ouverture de la position l'algorithme d'entrée est désactivé.


Mais, j'ai pris et fait le même test, mais seulement sur le test visuel, en faisant le test visuel, tout est bon là-bas.


S'il vous plaît dites-moi si c'est une mise à jour de bug, en général, tout saupoudré après la mise à jour, prendre et arrêter a été précédemment mis sur le prix Ask et bid méthode distincte après le marché apparaîtra position, maintenant ils ont commencé à coller et se déplacer avec les prix, j'ai dû refaire et mettre le prix et l'arrêt sur le prix d'ouverture d'une position et ajouter la propagation à l'indentation.

Que faire ? Où creuser ?

 
Konstantin Seredkin:

Le terminal a été mis à niveau à la construction 2470 dans l'ouvert

Et voilà le problème, le robot a commencé à montrer des résultats moins bons dans le testeur qu'avant la mise à jour.

...

Que faire ?

Dig pour vérifier "Le Conseiller Expert fonctionne-t-il dans le test ?

 
Artyom Trishkin:

Cherchez à vérifier "Est-ce que le bon EA exécute le test ?

C'est le seul dans le terminal, il n'y en a pas d'autres, même ceux qui sont standard ont été retirés.

 
Konstantin Seredkin:

C'est le seul dans le terminal, il n'y en a pas d'autres, même ceux qui sont standard ont été retirés.

A en juger par le comportement que vous avez décrit, il s'agit d'un EA différent avec un algorithme complètement différent.

 
Artyom Trishkin:

A en juger par le comportement que vous avez décrit, il s'agit d'un EA différent avec un algorithme de travail complètement différent.

Nous l'avons tous compris, peut-être est-ce un bug du terminal ou peut-être a-t-il été conçu par les développeurs, mais le fait est que lorsque vous exécutez un test sur l'historique de n'importe quel ensemble, à la fin du test, nous obtenons un graphique, mais tout l'historique pour cette période est automatiquement superposé à l'historique réel.

J'ai comparé les résultats, puis je suis allé dans le journal et j'ai comparé les prix des positions d'ouverture du testeur et d'une transaction réelle, ils coïncident presque tous, il y a une légère différence.

Mais il n'en reste pas moins que des transactions réelles sont superposées sur ce graphique après la fin des tests.

Pour éviter leur superposition, j'ai fait ce qui suit

j'ai juste fait un clic droit dans le journal et désactivé le rafraîchissement automatique, maintenant tous les tests montrent seulement les transactions qui ont été testées dans le testeur dans ce graphique, les transactions réelles n'ont pas été appliquées à celui-ci.

J'ai demandé aux personnes du groupe de faire fonctionner leurs robots de trading pendant une période où ils avaient négocié quelque chose sur un certain symbole, en utilisant des robots, sans faire de différence. Ils ont tous confirmé ce fait, à savoir qu'en plus des transactions dans le testeur, les transactions réelles qui ont été négociées dans le passé sont superposées sur le graphique.


Si vous avez des transactions dans n'importe quel instrument, exécutez n'importe quel robot pour cette période et vous verrez que ces transactions seront appliquées au graphique et si l'autotrading est désactivé, les transactions réelles ne seront pas appliquées.

Je pense que cela vaut la peine d'en parler aux développeurs, j'aime ce bug, maintenant je peux tester le robot pendant une semaine et comparer la différence de transactions sur le graphique, idéalement il devrait être différent de quelques ticks.

Raison: