Statistics.mqh 函数 - MetaTrader 5程序库
- 显示:
- 2782
- 等级:
- 已发布:
- 2014.01.28 06:50
- 已更新:
- 2016.11.22 07:33
- 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
该库包含一组用户进行数据处理时必要基本统计函数。
该库首次发表在 MQL4 代码库 - Statistica.mqh 函数库。在移植到 MQL5 时, 有些错别字已被检测并校正。代码变得更加直观清晰。许多函数的编程算法, 来自 S. Bulashov 的书 "Statistics for traders (交易者统计)"。
库函数如下:
函数 | 描述 |
---|---|
Mediana | 中位数计算 |
Mediana50 | 50%四分位范围的中位数计算 |
Average | 样本算术平均值计算 |
Average50 | 50%四分位范围的样本算术平均值计算 |
SweepCenter | 中置计算 |
AverageOfEvaluations | 计算五个上部评估的平均值 |
Variance | 样本方差计算 |
ThirdCentralMoment | 三阶中心矩计算 |
FourthCentralMoment | 四阶中心矩计算 |
Asymmetry | 样本非对称计算 |
Excess | 样本超额计算 |
Excess2 | 另一种样本超额计算方法 |
Gamma | Euler 的伽玛函数计算, x>0. |
GammaStirling | Euler 的伽玛函数值计算, 对于 x>33 (Stirling 的近似) |
VarianceOfSampleVariance | 计算样本方差的方差 |
VarianceOfStandartDeviation | 计算标准方差的方差 |
VarianceOfAsymmetry | 非对称样本方差计算 |
VarianceOfExcess | 样本超额方差计算 |
VarianceOfAverage | 样本均值方差计算 |
Log | 对数计算 |
CensorCoeff | 终检率计算 |
HistogramLength | 计算直方图柱线的优化值 |
Resize | 计算直方图的数组元素的优化值 |
Histogram | 创建直方图至 *.csv 文件 |
Cov | 样本协方差计算 |
Corr | 样本相关计算 |
VarianceOfCorr | 相关样本方差计算 |
AutoCorr | 自相关计算 |
AutoCorrFunc | 自相关函数的计算 |
aCoeff | 计算线性回归方程 a 的解 (y=a*x+b) |
bCoeff | 计算线性回归方程 b 的解 (y=a*x+b) |
LineRegresErrors | 计算线性回归误差 |
eVariance | 计算线性回归误差方差 |
aVariance | 计算线性回归 a 参数的方差 |
bVariance | 计算线性回归 b 参数的方差 |
DeterminationCoeff | 确定解计算 |
ArraySeparate | 切分 arr[n][2] 数组至两个数组 |
ArrayUnion | 合并两个数组至 arr[n][2] 类型 |
WriteArray | 写一维数组至 *.csv 文件 |
WriteArray2 | 写二维数组至 *.csv 文件 |
该文件可以包含在要求随机抽样参数处理的项目, 它的参数评估, 直方图等。
让我们来看看一些函数的调用:
//+------------------------------------------------------------------+ //| test.mq5 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #include <Statistics.mqh> //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- 指定两个样本值. double arrX[10]={3,4,5,2,3,4,5,6,4,7}; double arrY[10]={7,4,1,2,1,6,9,2,1,5}; //--- 计算平均值 double mx=Average(arrX); double my=Average(arrY); //--- 使用平均值计算方差 double dx = Variance(arrX,mx); double dy = Variance(arrY,my); //--- 非对称值和超额 double as=Asymmetry(arrX,mx,dx); double exc=Excess(arrX,mx,dx); //--- 协方差和相关值 double cov=Cov(arrX,arrY,mx,my); double corr=Corr(cov,dx,dy); //--- 在日志文件中输出值 PrintFormat("mx=%.6e",mx); PrintFormat("my=%.6e",my); PrintFormat("dx=%.6e",dx); PrintFormat("dy=%.6e",dy); PrintFormat("As=%.6e",as); PrintFormat("exc=%.6e",exc); PrintFormat("cov=%.6e",cov); PrintFormat("corr=%.6e",corr); }
正如你所看到的, 大部分功能需要的值 (作为输入参数) 可以由其它功能计算得出。
例如:
double dx = Variance(arrX,mx);
为了计算方差, 我们不得不首先计算平均值。这提供了有关计算优化的确定优势。在必须多次计算方差的情况下, 最好是一次找到平均值来代替函数内的多次计算。这将节省时间。
此特性适用于库中的大部分函数。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/866