鼎元C++量化程式码指标与函数模块系列之【平滑异同移动平均线(Moving Average Convergence Divergence,MACD)计算方法及调用方法】
  
- UID
- 2
- 积分
- 2928754
- 威望
- 1414413 布
- 龙e币
- 1514341 刀
- 在线时间
- 13674 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-4-4

|
鼎元C++量化程式码指标与函数模块系列之【平滑异同移动平均线(Moving Average Convergence Divergence,MACD)计算方法及调用方法】
一、需要用到ema数组形式计算调用:
1、头文件声明数组变量:-
- vector<double>emaarray(vector<double> pc, int num); //ema计算公式(返回数组);
复制代码 2、 主文件公式函数区xaverage/ema程式码- //ema计算公式开始(返回数组)
- vector<double> test::emaarray(vector<double> pc, int num)
- {
- vector<double> r;
- double d = 0;
- for (int i = 0; i < pc.size(); i++)
- {
- if (i == 0)
- {
- d = pc[0];
- r.push_back(d);
- }
- else
- {
- d = (2*pc[i]+(num-1)*d)/(num+1);
- r.push_back(d);
- }
- }
- return r;
- }
复制代码 二、源文件主文件设计MCD指标:
1、头文件声明变量:- vector<double>pc;//进行数组设计时统一的数组变量,方便以后使用中统一口径;
复制代码 2、主程序区策略核心程式码:- //调用bar数据,要包括品种合约,运行周期
- RsqBar(sPeriod, sInst);
-
- //装收盘价装后容器变量PC中
- map<string, TKVALUE>::iterator it;//迭代
- for (it = mapK[sPeriod][sInst].begin(); it != mapK[sPeriod][sInst].end(); it++) //遍历所有K线
- {
- pc.push_back(it->second.dClose);//将收盘价存储到pc容器中,按正序排序
- }
- vector<double> ema12 = emaarray(pc, 12); //获取12周期 ema均线数组形式值
- vector<double> ema26 = emaarray(pc, 26); //获取26周期 ema均线数组形式值
- vector<double> diff;
- for (size_t i = 0; i < ema12.size(); i++)
- {
- diff.push_back(ema12[i] - ema26[i]); //将ema12 - ema26 值赋给diff,以数组形式
- }
- vector<double> dea;
- dea = emaarray(diff, 9); //diff再做9周期ema均线形成dea均线
- vector <double>macd;
- for (size_t i = 0; i < dea.size(); i++)
- {
- macd.push_back((diff[i] - dea[i])*2); //(diff- dea)*2值即是macd值,即经典图表中bar柱状线值
- }
- InsertLog("diff : " + to_string(diff[diff.size()-1])); //将新变量最新值输出到日志
- InsertLog("dea : " + to_string(dea[dea.size()-1])); //将新变量最新值输出到日志
- InsertLog("macd bar: " + to_string(macd[macd.size() - 1]));
复制代码 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
  
- UID
- 2
- 积分
- 2928754
- 威望
- 1414413 布
- 龙e币
- 1514341 刀
- 在线时间
- 13674 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-4-4

|
我通过log面板输出值与文华和东财对比,发现总是有一些的差异。这可能有下面的因素:1,是鼎元的数据与东财和文华细微差异,2,我设计的ema均线的函数跟他们有出入。现在我还在优化最后的这些细节。并随时在这里面更新。 |
|
|
|
|
|
|