Fonction - Méthode pour trier un tableau de structures. Prix 10$. - page 4

 
Sergey Dzyublik:

Quel est le problème ?

En plus de la fonction elle-même, vous devez effectuer un typage sur celle-ci et créer une variable, juste pour passer la fonction en tant que paramètre, ce qui est ce que vous faites sous la macro lambda.

 
fxsaber:

Je l'ai vérifié, ça marche.

Malheureusement pas (((.


 
Vladimir Pastushak:

Malheureusement non (((.

Vous n'avez pas le triage qui fonctionne dans MT4.
Ainsi, insérez l'appel du tri suggéré pour MT4 dans la compilation conditionnelle et laissez le code MT5 intact.

 
Vladimir Pastushak:

Malheureusement non (((.


Mettez à jour votre MT4.

 

J'ai vérifié le code dans MT4, tout fonctionne.

2020.04.21 23:27:35.728 Script t EURUSD,H1 : supprimé

2020.04.21 23:27:35.726 t EURUSD,H1 : uninit reason 0

2020.04.21 23:27:35.726 t EURUSD,H1 : 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.0868420.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1 :

Triage par temps.

2020.04.21 23:27:35.726 t EURUSD,H1 : 1.08503 1.085061.08411.0842920.04.21 21:00:001.0843 1.085271.084291.0851720.04.21 20:00:001.08535 1.08551.084971.085022020.04.21 22:00:001.08518 1.087021.084561.086842020.04.21 19:00:001.08685 1.087231.085271.08542020.04.21 18:00:00

2020.04.21 23:27:35.726 t EURUSD,H1 :

Triage par valeur élevée.

2020.04.21 23:27:35.726 t EURUSD,H1 : 1.08503 1.085061.08411.0842920.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.086842020.04.21 19:00:00

2020.04.21 23:27:35.726 t EURUSD,H1 :

Triage par prix ouvert.

2020.04.21 23:27:35.726 t EURUSD,H1 : 1.08685 1.087231.085271.08542020.04.21 18:00:001.08518 1.087021.084561.0868420.04.21 19:00:001.0843 1.085271.084291.085172020.04.21 20:00:001.08503 1.085061.08411.084292020.04.21 21:00:001.08535 1.08551.084971.085022020.04.21 22:00:00

2020.04.21 23:27:35.726 t EURUSD,H1 :

Barres sans triage - comme reçues.

2020.04.21 23:27:35.726 t EURUSD,H1 : initialisé

2020.04.21 23:27:34.279 Script t EURUSD,H1 : chargé avec succès

MT4 build 1262

Dézippez-le comme ceci :

string MqlRatesToStr(MqlRates &arr[])
{
   string result = "";
   for(int i = 0; i < ArraySize(arr); ++i)
   {
      result += (string)(arr[i].close) + " " + (string)(arr[i].high) +(string)(arr[i].low) +(string)(arr[i].open) +(string)(arr[i].time);
   }
   return result;
}
 
Vladimir Pastushak:

Dans le code fourni , j'ai oublié de réintégrer la fonction principale ArraySortStruct dans la macro, afin qu'il soit possible de spécifier le champ de tri.
Mais l'auteur du sujet reste obstinément silencieux, apparemment je suis le seul à en avoir besoin...

 

Algorithme :

1. Structure = String. Première boucle.

2. Trier un tableau de chaînes de caractères. Deuxième boucle (complexe, bulle).

3. String = Structure. La troisième boucle.

A peine plus rapide.

Raison :

1. Les structures sont représentées dans le système comme des chaînes de caractères, seul l'alignement doit être pris en compte (octet par octet).

2. La vitesse de traitement des chaînes de caractères est beaucoup plus élevée que celle des autres types de données.

3. Une seule opération de comparaison de deux lignes est effectuée dans une boucle. Les valeurs des champs ne doivent pas être comparées.

J'avais l'habitude de le faire sur Clarion au début des années 90. Ça a marché.

Документация по MQL5: Операции с массивами / ArraySort
Документация по MQL5: Операции с массивами / ArraySort
  • www.mql5.com
//| Получение значений границ для тиковых объемов                    | //| Custom indicator initialization function                         | //| Custom indicator iteration function                              | //
 
Sergey Dzyublik:

Dans le code fourni , j'ai oublié de réintégrer la fonction principale ArraySortStruct dans la macro, afin qu'il soit possible de spécifier le champ de tri.
Mais l'auteur du sujet reste obstinément silencieux, apparemment je suis le seul à en avoir besoin...

Je ne l'ai pas encore regardé. Je ne comprends pas les macros. Je serais reconnaissant pour le code complet.
 
Алексей Тарабанов:

J'ai fait ça au début des années 90 sur un Clarion. Il a volé.

aux larmes ! )))

je me souviens du premier semestre du 1er cours et des premiers cours pratiques d'algorithmes et de programmation..... je ne me souviens même pas de ce qu'on a appris, je crois qu'on a appris pascal au début, mais les cours se faisaient sur les terminaux IBM, je compilais le programme à 15-20 lignes... enfin, les 2-3 premières minutes, puis jusqu'à 20 minutes quand les gens faisaient beaucoup de fautes de frappe et de syntaxe

à partir du second semestre, nous travaillions sur des 486s


il a volé ! ))))


SZS : si je ne me trompe pas, c'est le EC-1035 .... qui a volé !

 
Igor Makanu:

aux larmes ! )))

Je me suis souvenu du premier semestre de la 1ère année et des premières séances de travaux pratiques sur les algorithmes et la programmation..... je ne me souviens même pas de ce que nous étudiions, je pense que c'était du Pascal au début, mais les leçons se faisaient sur des ordinateurs IBM dans les classes terminales, en compilant le programme de 15-20 lignes... enfin, au début nous étudiions pendant 2-3 minutes, puis jusqu'à 20 minutes quand les gens faisaient beaucoup de fautes de frappe et de syntaxe

à partir du second semestre, nous travaillions sur des 486s


Il volait ! ))))


SZY : Si je ne me trompe pas, c'est le EC-1035 .... qu'il a piloté !

J'ai commencé sur le premier ordinateur numérique électronique personnel du monde en 1976. Il a été conçu par l'Institut de cybernétique de Kiev de l'Académie des sciences de la République sociale soviétique d'Ukraine. Puis vint le Minsk-32, et ensuite la CE.