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

 
Vitaly Muzichenko:

Logiquement, vous devriez d'abord rassembler toutes les lignes dans un tableau, je fer ais un tableau à deux dimensions, ou une structure de tableau, dans la première dimension nous ajoutons le temps de création, dans la seconde - le nom de la ligne.

Dans la boucle pour une exécution, remplir le tableau, en dehors de la boucle après avoir rempli le tableau est trié par la première dimension, c'est-à-dire, le temps.

Le résultat est imprimé dans la deuxième boucle.

Par conséquent, nous avons 2 cycles et un tri entre eux.

C'est tout, si j'ai bien compris le problème :)

Ce n'est pas exactement comme ça qu'un tableau fonctionne. Un tableau de chaînes de caractères ne semble pas pouvoir être trié non plus, je n'ai pas essayé parce que je n'en ai pas besoin.

 
Vitaly Muzichenko:

Logiquement, vous devriez d'abord rassembler toutes les lignes dans un tableau, je ferais un tableau à deux dimensions, ou une structure de tableau, dans la première dimension nous ajoutons le temps de création, dans la seconde - le nom de la ligne.

Dans la boucle pour une exécution, remplir le tableau, en dehors de la boucle après avoir rempli le tableau est trié par la première dimension, c'est-à-dire, le temps.

Le résultat est imprimé dans la deuxième boucle.

Par conséquent, nous avons 2 cycles et un tri entre eux.

Tout, si j'ai bien compris le problème :)

Question - quel doit être le type de ce tableau à deux dimensions ? )))

 
Alexey Viktorov:

Ce n'est pas exactement comme ça qu'un tableau fonctionne. Un tableau de chaînes de caractères ne semble pas pouvoir être trié non plus, je n'ai pas essayé parce que je n'en ai pas besoin.

Pourquoi ? Voici

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

Pourquoi ? Ici

Mais il ne mentionne nulle part un réseau de structures. Je vais devoir le vérifier pour être sûr. Mais pas maintenant.

 
Alexey Viktorov:

Mais il ne mentionne nulle part un réseau de structures. Je vais devoir le vérifier pour être sûr. Mais pas maintenant.

J'ai répondu concernant un tableau, il y a un tri différent pour une structure, mais ce n'est pas si important pour la tâche à accomplir.

 
Vitaly Muzichenko:

J'ai répondu concernant le tableau, il y a un tri différent pour la structure, mais ce n'est pas si important pour la tâche à accomplir.

Je suis en train de ralentir quelque chose....

   long     vlines_arr[][1];

   vlines = ObjectsTotal(ChartID(),0,OBJ_VLINE);
   ArrayResize(vlines_arr,vlines);
   
   for(int i = 0; i < vlines; i++)
   {
      long tml = (long)ObjectGetInteger(ChartID(),vlines_name[i],OBJPROP_TIME);
      vlines_arr[i][0]  = {{tml}, {i}};
      
   }

Ça ne se compile pas comme ça...

 
Сергей Таболин:

Quelque chose me ralentit....

Ça ne se compile pas comme ça...

   long vlines_arr[][2];

   vlines = ObjectsTotal(ChartID(),0,OBJ_VLINE);
   ArrayResize(vlines_arr,vlines);
   
   for(int i = 0; i < vlines; i++)
   {
      long tml = (long)ObjectGetInteger(ChartID(),vlines_name[i],OBJPROP_TIME);
      vlines_arr[i][0] = tml;
      vlines_arr[i][1] = i;
      
   }
 
Vitaly Muzichenko:

Merci. C'est l'heure d'aller au lit.)

 

Mystère simple....

void OnStart()
{
int      vlines            = 0;
string   vlines_name[];
string   vlines_name_sort[];
datetime tm[];
long     vlines_arr[][2];

   vlines = ObjectsTotal(ChartID(),0,OBJ_VLINE);
   if(vlines < 20 * 2)
   {
      Print("вертикальных линий меньше необходимиого. (",vlines," < ",20 * 2,")");
      return;
   }
   ArrayResize(vlines_arr,vlines);
   ArrayResize(vlines_name,vlines);
   ArrayResize(vlines_name_sort,vlines);
   
   for(int i = 0; i < vlines; i++)
   {
      long tml = (long)ObjectGetInteger(ChartID(),vlines_name[i],OBJPROP_TIME);
      vlines_arr[i][0]  = tml;
      vlines_arr[i][1]  = (long)i;
   }
   ArrayPrint(vlines_arr);
   ArraySort(vlines_arr);
   Print("-------------");
   ArrayPrint(vlines_arr);
   
   for(int i = 0; i < vlines; i++)
   {
      vlines_name_sort[i]  = ObjectName(ChartID(),(int)vlines_arr[i][1],0,OBJ_VLINE);
   }
   ArrayPrint(vlines_name_sort);

J'aifait ça la première fois - ça a imprimé un tableau, tout va bien.

J'ai ajouté ceci - et je ne sais pas du tout ce qui se passe... Ce doit être l'heure du coucher après tout....

(GBPUSD,H6)          [,0][,1]
(GBPUSD,H6)     [ 0,]   0   0
(GBPUSD,H6)     [ 1,]   0   1
(GBPUSD,H6)     [ 2,]   0   2
(GBPUSD,H6)     [ 3,]   0   3
(GBPUSD,H6)     [ 4,]   0   4
(GBPUSD,H6)     [ 5,]   0   5
(GBPUSD,H6)     [ 6,]   0   6
(GBPUSD,H6)     [ 7,]   0   7
(GBPUSD,H6)     [ 8,]   0   8
(GBPUSD,H6)     [ 9,]   0   9
(GBPUSD,H6)     [10,]   0  10
(GBPUSD,H6)     [11,]   0  11
(GBPUSD,H6)     [12,]   0  12
(GBPUSD,H6)     [13,]   0  13
(GBPUSD,H6)     [14,]   0  14
(GBPUSD,H6)     [15,]   0  15
(GBPUSD,H6)     [16,]   0  16
(GBPUSD,H6)     [17,]   0  17
(GBPUSD,H6)     [18,]   0  18
(GBPUSD,H6)     [19,]   0  19
(GBPUSD,H6)     [20,]   0  20
(GBPUSD,H6)     [21,]   0  21
(GBPUSD,H6)     [22,]   0  22
(GBPUSD,H6)     [23,]   0  23
(GBPUSD,H6)     [24,]   0  24
(GBPUSD,H6)     [25,]   0  25
(GBPUSD,H6)     [26,]   0  26
(GBPUSD,H6)     [27,]   0  27
(GBPUSD,H6)     [28,]   0  28
(GBPUSD,H6)     [29,]   0  29
(GBPUSD,H6)     [30,]   0  30
(GBPUSD,H6)     [31,]   0  31
(GBPUSD,H6)     [32,]   0  32
(GBPUSD,H6)     [33,]   0  33
(GBPUSD,H6)     [34,]   0  34
(GBPUSD,H6)     [35,]   0  35
(GBPUSD,H6)     [36,]   0  36
(GBPUSD,H6)     [37,]   0  37
(GBPUSD,H6)     [38,]   0  38
(GBPUSD,H6)     [39,]   0  39
(GBPUSD,H6)     [40,]   0  40
(GBPUSD,H6)     [41,]   0  41
(GBPUSD,H6)     [42,]   0  42
(GBPUSD,H6)     [43,]   0  43
(GBPUSD,H6)     [44,]   0  44
(GBPUSD,H6)     [45,]   0  45
(GBPUSD,H6)     [46,]   0  46
(GBPUSD,H6)     [47,]   0  47
(GBPUSD,H6)     [48,]   0  48
(GBPUSD,H6)     [49,]   0  49
(GBPUSD,H6)     -------------
(GBPUSD,H6)          [,0][,1]
(GBPUSD,H6)     [ 0,]   0   0
(GBPUSD,H6)     [ 1,]   0   1
(GBPUSD,H6)     [ 2,]   0   2
(GBPUSD,H6)     [ 3,]   0   3
(GBPUSD,H6)     [ 4,]   0   4
(GBPUSD,H6)     [ 5,]   0   5
(GBPUSD,H6)     [ 6,]   0   6
(GBPUSD,H6)     [ 7,]   0   7
(GBPUSD,H6)     [ 8,]   0   8
(GBPUSD,H6)     [ 9,]   0   9
(GBPUSD,H6)     [10,]   0  10
(GBPUSD,H6)     [11,]   0  11
(GBPUSD,H6)     [12,]   0  12
(GBPUSD,H6)     [13,]   0  13
(GBPUSD,H6)     [14,]   0  14
(GBPUSD,H6)     [15,]   0  15
(GBPUSD,H6)     [16,]   0  16
(GBPUSD,H6)     [17,]   0  17
(GBPUSD,H6)     [18,]   0  18
(GBPUSD,H6)     [19,]   0  19
(GBPUSD,H6)     [20,]   0  20
(GBPUSD,H6)     [21,]   0  21
(GBPUSD,H6)     [22,]   0  22
(GBPUSD,H6)     [23,]   0  23
(GBPUSD,H6)     [24,]   0  24
(GBPUSD,H6)     [25,]   0  25
(GBPUSD,H6)     [26,]   0  26
(GBPUSD,H6)     [27,]   0  27
(GBPUSD,H6)     [28,]   0  28
(GBPUSD,H6)     [29,]   0  29
(GBPUSD,H6)     [30,]   0  30
(GBPUSD,H6)     [31,]   0  31
(GBPUSD,H6)     [32,]   0  32
(GBPUSD,H6)     [33,]   0  33
(GBPUSD,H6)     [34,]   0  34
(GBPUSD,H6)     [35,]   0  35
(GBPUSD,H6)     [36,]   0  36
(GBPUSD,H6)     [37,]   0  37
(GBPUSD,H6)     [38,]   0  38
(GBPUSD,H6)     [39,]   0  39
(GBPUSD,H6)     [40,]   0  40
(GBPUSD,H6)     [41,]   0  41
(GBPUSD,H6)     [42,]   0  42
(GBPUSD,H6)     [43,]   0  43
(GBPUSD,H6)     [44,]   0  44
(GBPUSD,H6)     [45,]   0  45
(GBPUSD,H6)     [46,]   0  46
(GBPUSD,H6)     [47,]   0  47
(GBPUSD,H6)     [48,]   0  48
(GBPUSD,H6)     [49,]   0  49
(GBPUSD,H6)     [ 0] "H6 Vertical Line 10771" "H6 Vertical Line 10884" "H6 Vertical Line 12743" "H6 Vertical Line 1371"  "H6 Vertical Line 14306"
(GBPUSD,H6)     [ 5] "H6 Vertical Line 16501" "H6 Vertical Line 17907" "H6 Vertical Line 20277" "H6 Vertical Line 23365" "H6 Vertical Line 28358"
 
Сергей Таболин:

Mystère simple....

J'aifait ça la première fois - ça a imprimé un tableau, tout va bien.

J'ai ajouté ceci - et je ne sais pas du tout ce qui se passe... Je suppose qu'il est temps d'aller dormir après tout.....

Peut-être que je ne comprends pas quelque chose, mais icilong tml = (long)ObjectGetInteger(ChartID(),vlines_name[i],OBJPROP_TIME) ; substituez le nom de la ligne, pas l'index, sinon vous n'obtiendrez pas de résultat.

Raison: