Thu thập thống kê
Các phương thức được liệt kê dưới đây được thiết kế để thu thập các thống kê mô tả cho ma trận và vector. Tất cả chúng đều áp dụng cho một vector hoặc ma trận tổng thể, cũng như cho một trục ma trận đã cho (ngang hoặc dọc). Khi được áp dụng hoàn toàn cho một đối tượng, các hàm này trả về một giá trị vô hướng (đơn lẻ). Khi được áp dụng cho một ma trận dọc theo bất kỳ trục nào, một vector sẽ được trả về.
Dạng tổng quát của các nguyên mẫu:
T vector<T>::Method(const vector<T> &v)
T matrix<T>::Method(const matrix<T> &m)
vector<T> matrix<T>::Method(const matrix<T> &m, const int axis)
Danh sách các phương thức:
ArgMax, ArgMin
: tìm chỉ số của giá trị lớn nhất và nhỏ nhấtMax, Min
: tìm giá trị lớn nhất và nhỏ nhấtPtp
: tìm phạm vi giá trịSum, Prod
: tính tổng hoặc tích của các phần tửCumSum, CumProd
: tính tổng hoặc tích lũy của các phần tửMedian, Mean, Average
: tính trung vị, trung bình cộng hoặc trung bình cộng có trọng sốStd, Var
: tính độ lệch chuẩn và phương saiPercentile, Quantile
: tính phân vị và tứ phân vịRegressionMetric
: tính một trong các chỉ số hồi quy được định nghĩa trước, chẳng hạn như sai số lệch khỏi đường hồi quy trên dữ liệu ma trận/vector
Một ví dụ về việc tính toán độ lệch chuẩn và phân vị cho phạm vi thanh (tính bằng điểm) của biểu tượng và khung thời gian hiện tại được đưa ra trong tệp MatrixStdPercentile.mq5
.
cpp
input int BarCount = 1000;
input int BarOffset = 0;
void OnStart()
{
// Lấy báo giá biểu đồ hiện tại
matrix rates;
rates.CopyRates(_Symbol, _Period, COPY_RATES_OPEN | COPY_RATES_CLOSE,
BarOffset, BarCount);
// Tính toán mức tăng giá trên các thanh
vector delta = MathRound((rates.Row(1) - rates.Row(0)) / _Point);
// In debug của các thanh ban đầu
rates.Resize(rates.Rows(), 10);
Normalize(rates);
Print(rates);
// In các chỉ số tăng giá
PRTF((int)delta.Std());
PRTF((int)delta.Percentile(90));
PRTF((int)delta.Percentile(10));
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Nhật ký:
cpp
(EURUSD,H1) [[1.00832,1.00808,1.00901,1.00887,1.00728,1.00577,1.00485,1.00652,1.00538,1.00409]
(EURUSD,H1) [1.00808,1.00901,1.00887,1.00728,1.00577,1.00485,1.00655,1.00537,1.00412,1.00372]]
(EURUSD,H1) (int)delta.Std()=163 / ok
(EURUSD,H1) (int)delta.Percentile(90)=170 / ok
(EURUSD,H1) (int)delta.Percentile(10)=-161 / ok
1
2
3
4
5
2
3
4
5