交易者必懂的统计学基础
从概率到MQL5统计函数实战解析
什么是统计学及其对交易的价值
统计学是对数据的采集、组织、分析、解释和表达进行的研究。对于现代交易者而言,我们接收到的行情和经纪商数据已经过衡量和组织,最有用的是数据分析部分。技术分析本质上就是统计学的应用:价格走势图本身就是资产在时间维度上的统计分布。理解统计学基本原则,能帮助交易者看清指标背后的决策机制,而不是盲目跟随信号。
很多新手把指标当作黑箱,其实移动平均线就是样本平均值,MACD源于均值与方差逻辑。如果不懂统计,就无法判断参数优化的过拟合,也无法正确评估策略的历史表现是否可信。本文从最基础的层次梳理,帮助读者建立正确的量化直觉。
概率论与统计学的必然联系
任何统计都是对象状态改变的结果。以EURUSD小时图为例,对象是两种货币关系,统计是每时刻价格。为什么当前价格跌而非涨?答案是概率:对象在每个时刻可能取不同值。我们用掷硬币实验说明。公平硬币正反面概率各0.5,但掷10次可能得8正2反;掷100次可能53正47反。次数越多,频率越接近真实概率。
反过来,若不知硬币是否公平,可用统计反推概率:10次实验算得0.8与0.2,难下结论;100次得0.53与0.47,可较准确判定为公平硬币。由此得出核心结论:实验次数越多,统计越准确反映对象特性。统计学与概率交缠——统计是实验结果,取决于状态概率;也可用统计估计概率。
交易者主要挑战正在于:拥有某段交易数据(统计),预测后续价格行为(概率),并做出买卖决策。因此理解二者关系及风险评估知识至关重要。需注意原文评论指出,真实金融序列常非平稳,基础统计直接套用有保留,但入门仍须从这些概念起。
六大基本统计参数详解
假定10人身高样本(cm):173,162,194,181,186,159,173,178,168,171。样本大小n=10。以下参数均为样本参数,由样本数据算出,非随机变量参数。
1. 样本平均值:所有值求和除以数量,公式 M = Σa[i]/n,本例得174.5cm。它类似均线,反映中心位置。
2. 样本方差:描述偏离均值的程度。计算:求均值;各元素减均值平方;求和;除以n-1。公式 D = Σ(a[i]-M)^2/(n-1),本例113.611,值大说明分布广。
3. 样本偏度:不对称度,近0越对称。需均值、方差,求差立方和,除方差的3/2次幂,乘n/((n-1)(n-2))。本例0.373,小因发散互补;不对称数据可达1.38。
4. 样本峰度:峭度。用四次方和除方差平方,乘n(n+1)/((n-1)(n-2)(n-3)),减3(n-1)^2/((n-1)(n-2))。本例-0.144,尖锐峰值可得10.5。
5. 样本协方差:两样本线性依存,独立时为0。加体重样本后,算两均值,求(a[i]-M1)(b[i]-M2)和除n-1,本例91.28,图显示身高增体重常降。
6. 样本相关系数:值域[-1,1]。协方差除两方差积平方根,本例0.579,表明中等正相关。比协方差更易跨样本比较。
- 平均值:中心趋势
- 方差:离散程度
- 偏度:分布偏斜
- 峰度:分布尖平
- 协方差:两序列共变
- 相关系数:标准化依存
统计参数在交易中的实际应用
最简单例子是移动平均线MA:MA = ΣP[i]/n,与样本平均值完全类似。它是指数移动平均EMA基础,也是MACD核心。MACD利用均值差与信号线方差逻辑判断趋势强度方向。理解这些,就不会误以为指标神奇,而能理性配置参数。
进一步,协方差与相关系数可用于多资产配对交易:计算两币种收益率相关,构建对冲组合。峰度偏度可辅助识别行情分布异常,如黑天鹅前尖峰。但务必记住,历史统计不等于未来概率,需结合样本外检验。
MQL5统计函数库与代码实现
MQL5在statistics.mqh中实现了上述方法。函数包括:Average(样本)算均值;Variance(样本,均值)算方差;Asymmetry(样本,均值,方差)算偏度;Excess(样本,均值,方差)算峰度;Cov(样本1,样本2,均值1,均值2)算协方差;Corr(协方差,方差1,方差2)算相关系数。库说明见代码库 https://www.mql5.com/zh/code/866 。
下面脚本输入身高体重样本,调用库函数并打印结果。执行后客户端日志输出 mx、dx、as、exc、cov、corr 值,验证手算逻辑。注意数组须预先填充,函数多为double类型,避免整数除法错误。
#include <Statistics.mqh>
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- specify two data samples.
double arrX[10]={173,162,194,181,186,159,173,178,168,171};
double arrY[10]={65,70,83,60,105,58,69,90,78,65};
//--- calculate the mean
double mx=Average(arrX);
double my=Average(arrY);
//--- to calculate the variance, use the mean value
double dx=Variance(arrX,mx);
double dy=Variance(arrY,my);
//--- skewness and kurtosis values
double as=Asymmetry(arrX,mx,dx);
double exc=Excess(arrX,mx,dx);
//--- covariance and correlation values
double cov=Cov(arrX,arrY,mx,my);
double corr=Corr(cov,dx,dy);
//--- print results in the log file
PrintFormat("mx=%.6e",mx);
PrintFormat("dx=%.6e",dx);
PrintFormat("as=%.6e",as);
PrintFormat("exc=%.6e",exc);
PrintFormat("cov=%.6e",cov);
PrintFormat("corr=%.6e",corr);
}
常见误区与进阶提醒
评论区有读者指出:原文偏度公式分散度应为3/2次幂而非2/3,已核实库函数使用正确次幂。另外,基础统计假设平稳,真实序列如外汇常是非平稳,直接套用均值回归可能失效。还有人认为应学计量经济学处理预测与非平稳,本文仅打基础。
另一误区是以为样本越大统计越准可无视顺序。若以混乱间隔取样,整体统计如同噪声。交易者应保证样本同分布、时间连续。随机序列虽不可预测,但可借概率不对称获正期望,这超出本文范围。
总结与学习路径
统计学与概率不可分割,六大参数构成分析骨架。交易者从均线理解到自写统计函数,能脱胎换骨。建议下一步学平稳性检验、假设检验及MQL5自定义指标封装。本文译自俄文原址 https://www.mql5.com/ru/articles/387 ,代码库 https://www.mql5.com/zh/code/866 。
夯实基础后,可阅读MQL5编程基础系列,将统计用于实盘信号过滤与风险管理。记住:所有模型都是错的,但有些有用——清晰统计认知让你知道哪部分有用。