初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1198

 
Vitaly Muzichenko:

論理的には、まず配列にすべての行を収集 する必要があります、私は二次元 配列、または配列構造を作るだろう最初の次元で第二に、作成の時間を追加する - 行の名前

1つの実行のためのループでは、配列を充填した後、ループの外側には、最初の次元、つまり、時間によって並べ替えられます。

その結果は2番目のループで印刷されます。

その結果、2つのサイクルとその間のソートを実現しました。

私が問題を正しく理解していれば、以上です :)

それは、配列の仕組みとはちょっと違う。文字列の配列もソートされないようです、必要ないので試してませんが。

 
Vitaly Muzichenko:

論理的には、まず配列にすべての行を集める必要があります。私は2次元配列、または配列構造を作り、1次元目に作成時間、2次元目に行の名前を追加します。

1つの実行のためのループでは、配列を充填した後、ループの外側には、最初の次元、つまり、時間によって並べ替えられます。

その結果は2番目のループで印刷されます。

その結果、2つのサイクルとその間のソートを実現しました。

すべて、私が問題を正しく理解していればの話ですが :)

質問 - この2次元配列はどのような型であるべきでしょうか?)))

 
Alexey Viktorov:

それは、配列の仕組みとはちょっと違う。文字列の配列もソートされないようです、必要ないので試していません。

なぜ?以下は

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

なぜ?こちら

しかし、構造の配列についてはどこにも書いていない。念のため確認しておく。でも、今すぐには無理です。

 
Alexey Viktorov:

しかし、構造の配列についてはどこにも書いていない。念のため確認しておく。でも、今すぐには無理です。

配列についてお答えしましたが、構造体の場合は別のソートがありますが、今回のタスクではそれほど重要ではありません。

 
Vitaly Muzichenko:

配列について回答しましたが、構造によってソートが異なりますが、今回の課題ではそれほど重要ではありません。

なんか遅くなっちゃった...。

   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}};
      
   }

そのようにコンパイルできないのですが...。

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

何か足手まといだなぁ...。

そのようにコンパイルできないのですが...。

   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:

ありがとうございます。寝る時間だ )))

 

謎のシンプルさ...。

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);

初めて実行 したときは、配列が表示され、すべてうまくいきました。

これを追加 しました - と言っても、何が何だか全く分かりませんが...。やっぱり寝る時間なんだろうな...。

(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"
 
Сергей Таболин:

謎のシンプルさ...。

初めて実行 したときは、配列が表示され、すべてうまくいきました。

これを追加 しました - と言っても、何が何だか全く分かりませんが...。やっぱり寝る時間なんですね...。

何か理解できないかもしれませんが、ここではlong tml = (long)ObjectGetInteger(ChartID(),vlines_name[i],OBJPROP_TIME); index ではなく line name を代入して ください。

理由: