ArrayCompare 
Hàm trả về kết quả so sánh hai mảng cùng kiểu. Nó có thể được dùng để so sánh các mảng của kiểu đơn giản hoặc cấu trúc tùy chỉnh không chứa đối tượng phức tạp, tức là các cấu trúc tùy chỉnh không chứa chuỗi, mảng động, lớp và các cấu trúc khác có đối tượng phức tạp.
int  ArrayCompare(
   const void&  array1[],            // mảng thứ nhất
   const void&  array2[],            // mảng thứ hai
   int          start1=0,            // độ lệch ban đầu trong mảng thứ nhất
   int          start2=0,            // độ lệch ban đầu trong mảng thứ hai
   int          count=WHOLE_ARRAY    // số lượng phần tử để so sánh
   );2
3
4
5
6
7
Tham số 
array1[]
[in] Mảng thứ nhất.
array2[]
[in] Mảng thứ hai.
start1=0
[in] Chỉ số ban đầu của phần tử trong mảng thứ nhất, từ đó bắt đầu so sánh. Chỉ số bắt đầu mặc định là 0.
start2=0
[in] Chỉ số ban đầu của phần tử trong mảng thứ hai, từ đó bắt đầu so sánh. Chỉ số bắt đầu mặc định là 0.
count=WHOLE_ARRAY
[in] Số lượng phần tử cần so sánh. Mặc định, tất cả phần tử của cả hai mảng tham gia so sánh (count=WHOLE_ARRAY).
Giá trị trả về 
- -1, nếu array1[]nhỏ hơnarray2[]
- 0, nếu array1[]bằngarray2[]
- 1, nếu array1[]lớn hơnarray2[]
- -2, nếu xảy ra lỗi do sự không tương thích của kiểu của các mảng được so sánh hoặc nếu các giá trị start1,start2hoặccountdẫn đến việc vượt ra ngoài mảng.
Ghi chú 
Hàm sẽ không trả về 0 (các mảng sẽ không được coi là bằng nhau) nếu các mảng khác nhau về kích thước và count=WHOLE_ARRAY trong trường hợp một mảng là tập hợp con chính xác của mảng kia. Trong trường hợp này, kết quả so sánh kích thước của các mảng sẽ được trả về: -1, nếu kích thước của array1[] nhỏ hơn kích thước của array2[], ngược lại là 1.
Ví dụ:
//--- biến toàn cục 
double   ExtArrayFirst[];
double   ExtArraySecond[];
 
//+------------------------------------------------------------------+
//| Hàm bắt đầu chương trình script                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- đặt kích thước mảng
   if(ArrayResize(ExtArrayFirst,10)!=10)
     {
      Print("ArrayResize() thất bại cho ExtArrayFirst. Mã lỗi: ",GetLastError());
      return;
     }
   if(ArrayResize(ExtArraySecond,10)!=10)
     {
      Print("ArrayResize() thất bại cho ExtArraySecond. Mã lỗi: ",GetLastError());
      return;
     }
     
//--- điền các mảng với giá trị của chỉ số i và j trong vòng lặp
   int total=ArraySize(ExtArrayFirst);
   for(int i=0, j=total-1; i<total; i++,j--)
     {
//--- điền mảng ExtArrayFirst từ trái sang phải
//--- điền mảng ExtArraySecond từ phải sang trái
      ExtArrayFirst[i]=i;
      ExtArraySecond[i]=j;
     }
//--- so sánh các mảng và in kết quả vào log
   ArrayComparePrint(ExtArrayFirst,ExtArraySecond);
   /*
   Kết quả:
   ExtArrayFirst:
   0.00000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000
   ExtArraySecond:
   9.00000 8.00000 7.00000 6.00000 5.00000 4.00000 3.00000 2.00000 1.00000 0.00000
   Kết quả ArrayCompare(): ExtArrayFirst nhỏ hơn ExtArraySecond (kết quả = -1)
   */
   
//--- bây giờ hãy đảo ngược các mảng
//--- điền các mảng với giá trị của chỉ số i và j trong vòng lặp
   for(int i=0, j=total-1; i<total; i++,j--)
     {
//--- điền mảng ExtArrayFirst từ phải sang trái
//--- điền mảng ExtArraySecond từ trái sang phải
      ExtArrayFirst[i]=j;
      ExtArraySecond[i]=i;
     }
//--- so sánh các mảng và in kết quả vào log
   ArrayComparePrint(ExtArrayFirst,ExtArraySecond);
   /*
   Kết quả:
   ExtArrayFirst:
   9.00000 8.00000 7.00000 6.00000 5.00000 4.00000 3.00000 2.00000 1.00000 0.00000
   ExtArraySecond:
   0.00000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000
   Kết quả ArrayCompare(): ExtArrayFirst lớn hơn ExtArraySecond (kết quả = 1)
   */
   
//--- bây giờ hãy điền các mảng theo một hướng
//--- điền các mảng với giá trị của chỉ số i trong vòng lặp
   for(int i=0; i<total; i++)
     {
//--- điền cả hai mảng từ trái sang phải
      ExtArrayFirst[i]=i;
      ExtArraySecond[i]=i;
     }
//--- so sánh các mảng và in kết quả vào log
   ArrayComparePrint(ExtArrayFirst,ExtArraySecond);
   /*
   Kết quả:
   ExtArrayFirst:
   0.00000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000
   ExtArraySecond:
   0.00000 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 9.00000
   Kết quả ArrayCompare(): ExtArrayFirst và ExtArraySecond bằng nhau (kết quả = 0)
   */
  }
//+------------------------------------------------------------------+
//| So sánh và hiển thị kết quả                                      |
//+------------------------------------------------------------------+
void ArrayComparePrint(const double &array1[], const double &array2[])
  {
//--- in tiêu đề và nội dung của các mảng
   Print("ExtArrayFirst:");
   ArrayPrint(array1);
   Print("ExtArraySecond:");
   ArrayPrint(array2);
//--- so sánh các mảng và in kết quả so sánh
   int    res=ArrayCompare(array1,array2);
   string res_str=(res>0 ? "ExtArrayFirst lớn hơn ExtArraySecond" : res<0 ? "ExtArrayFirst nhỏ hơn ExtArraySecond" : "ExtArrayFirst và ExtArraySecond bằng nhau");
   PrintFormat("Kết quả ArrayCompare(): %s (kết quả = %d)\n",res_str,res);
  }
//+------------------------------------------------------------------+2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
