Avec quoi remplacer OnTradeTransaction() dans mql4 ? - page 7

 
Alexey Viktorov:

Dans ce cas, il serait difficile de vivre sans la bibliothèque d'Artem.

La bibliothèque va-t-elle apprendre par télépathie les informations dont elle a besoin ? Il secouera les commandes 86400 fois tout de même.

 
Igor Makanu:

que faire avec "do not add to array" - je veux dire supprimer les données sur les ordres de marché manquants ?

Mais pour éviter de surcharger le code avec des calculs, nous devrions au moins définir un drapeau d'événementOnTradeTransaction, qui devrait être levé lors du placement ou de la fermeture forcée d'un ordre - vous savez quel type d'opération vous voulez faire, n'est-ce pas ? - Pourquoi ne pas le dire directement à la machine ? Au lieu d'essayer de faire en sorte que la machine exécute toutes les données à chaque tick / ou toutes les 10 ms.


ZS : un autre fil de discussion avec une demande de résolution d'un problème en l'absence de toute base de connaissances, rien de personnel, mais cela devient déjà un événement régulier - peu importe comment vous le regardez, vous avez besoin d'étudier du matériel supplémentaire, discuter du problème avec des personnes partageant les mêmes idées est juste discuter du problème avec des personnes partageant les mêmes idées au même niveau de connaissances ((((

Avec "ne pas ajouter au tableau"... Bien qu'il n'y ait pas de fonction ArrayRemove() dans mql4, son principe est basé sur la copie d'un tableau dans lui-même avec une réduction supplémentaire de la taille par le nombre d'index supprimés. Et à la place de OnTradeTRansaction(), j'ai dit à plusieurs reprises dans ce fil de discussion qu'il n'y a pas d'alternative à la bibliothèque d'Artem et qu'elle n'est pas attendue.
 
Igor Makanu:

Je devrais au moins créer un indicateur de l'événementOnTradeTransaction qui devrait être activé lors du placement ou de la fermeture forcée d'un ordre.

J'y ai pensé, mais les différents EAs ont des fonctions différentes et personne ne les combinera, il est possible d'écrire un fichier drapeau dans sammon, peut-être même, pourquoi ne pas chercher une alternative ?

 
Aleksandr Volotko:

La bibliothèque va-t-elle apprendre par télépathie les informations dont elle a besoin ? Il y aura des ordres 86400 fois, juste comme ça.

Vous pouvez le découvrir dans le fil de discussion de l'article. Et ce n'est pas moi qui vais répondre. J'ai seulement essayé de l'utiliser... Et commencez par relire les posts d'Artem. Prêtez attention à ce message.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Comment remplacer OnTradeTransaction() dans mql4 ?

propriétés des ordres et des positions. Le symbole est codé dans la somme des codes de caractères qui composent son nom. Mais alors seulement un cycle complet. Lorsque la somme de hachage est modifiée - voyez ce qui s'est passé.


 
Aleksandr Volotko:

Oui, j'y ai pensé, mais les différents EA ont des fonctions différentes et personne ne les combinera, vous pouvez écrire un drapeau de fichier dans sammon, je pourrais même le faire, pourquoi ne pas chercher une alternative ?

voici une alternativehttps://www.mql5.com/ru/docs/standardlibrary/datastructures

ou utiliser le matériel des articles d'Artem, qui, cependant, s'appuieront toujours sur les "collections de données" de SB.


Quelle que soit la façon dont vous le regardez, mais le nouveau matériel devra être étudié pour au moins comprendre les capacités de MQL, et simplement s'asseoir dans un tableau vieux de 10 ans et réduire le temps d'analyse OrderTotal() ..... ne résoudra pas le problème actuel et les nouveaux problèmes à venir de toute façon


Si nous parlons de plusieurs EA et de l'échange de données - drapeau de passage d'ordres, etc., alors il n'y a pas de solution universelle - il existe de nombreuses variations sur ce sujet ; en général, c'est un point sensible pour moi, j'ai utilisé beaucoup d'outils prêts à l'emploi mais sans succès, je préférerais utiliser un serveur de BD et échanger des données par son intermédiaire, ce sera certainement fiable et pratique, malheureusement les développeurs de MT ont ignoré ce problème pendant de nombreuses années en se basant sur leur compréhension des fonctionnalités nécessaires aux utilisateurs

 
Alexey Viktorov:

Vous pouvez le découvrir dans le fil de discussion de l'article. Et ce n'est pas moi qui vais répondre. J'ai seulement essayé de l'utiliser... Et commencez par relire les posts d'Artem. Prêtez attention à ce message.

Tout cela conduit à des dépassements de commande, et vous ne voulez pas faire cela 100500 fois par jour. Et cela n'a pas d'importance - je compterai le volume de position agrégé dans une boucle, ou la somme de hachage de la bibliothèque des propriétés de l'ordre.

 
Igor Makanu:

l'alternative esthttps://www.mql5.com/ru/docs/standardlibrary/datastructures

ou utiliser le matériel des articles d'Artem, qui, soit dit en passant, s'appuieront toujours sur les "collectes de données".


Quelle que soit la façon dont vous le regardez, mais le nouveau matériel devra être étudié pour au moins comprendre les capacités de MQL, et simplement s'asseoir dans un tableau vieux de 10 ans et réduire le temps d'analyse OrderTotal() ..... ne résoudra pas le problème actuel et les nouveaux problèmes à venir de toute façon

Ne pensez pas que je suis complètement stupide, c'est juste que parfois vous devez travailler avec ce qui est disponible, et il y a très peu de choses à utiliser.

 
Vitaly Muzichenko:

Comment ça ?

StringToShortArray()
ShortArrayToString()
 
Artyom Trishkin:
StringToShortArray()
ShortArrayToString()

Je suppose que je ne suis pas assez intelligent.)

Comment puis-je l'appliquer ?

static __Total = -1;
int OT=OrdersTotal();
  if(OT!=__Total)
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __Total=OrdersTotal(); // запомним количество
   }

Je n'ai qu'un seul problème et il est très rare, aujourd'hui je l'ai trouvé pour la première fois en deux ans, je l'ai peut-être déjà vu avant, mais je ne l'ai pas remarqué.

Forum pour le trading, les systèmes de trading automatisés et les tests de stratégie

Comment remplacer OnTradeTransaction() dans mql4 ?

Vitaly Muzichenko, 2020.01.27 15:32

Je ne sais pas, mais j'ai remarqué qu' une position se fermait et que l'autre s'ouvrait sur une autre et presque au même moment entre les ticks.

Au final, OrdersTotal() est resté à 8. La logique du conseiller expert s'est embrouillée - il n'a pas recalculé les nouvelles données.


 

C'est ça, la solution est simple : introduire une autre vérification de changement d'historique, de cette façon rien ne sera perdu et ça fonctionnera à 100%.

static __OTotal = -1;
static __HTotal = -1;
int OT=OrdersTotal();
int HT=OrdersHistoryTotal();
  if(OT!=__OTotal || HT!=__HTotal) // если изменилось - выполняем
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __OTotal=OrdersTotal(); // запомним текущее количество
     __HTotal=OrdersHistoryTotal(); // запомним количество в истории
   }
Raison: