C++程序化/量化学习视频教程系列 第035节:鼎元C++量化指标封装之“返回指标平均数组形式(Vector,EMA)”【指数移动平均线(EMA)的数组形式均线计算方法及调用方法】【C++量化指标公式开发系列】
- UID
- 2
- 积分
- 2892617
- 威望
- 1396340 布
- 龙e币
- 1496277 刀
- 在线时间
- 13326 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-25
|
C++程序化/量化学习视频教程系列 第035节:鼎元C++量化指标封装之“返回指标平均数组形式(Vector,EMA)”【指数移动平均线(EMA)的数组形式均线计算方法及调用方法】【C++量化指标公式开发系列】
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
- UID
- 2
- 积分
- 2892617
- 威望
- 1396340 布
- 龙e币
- 1496277 刀
- 在线时间
- 13326 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-25
|
一、头文件声明数组- vector<double>ema(vector<double> pc, int num); //ema计算公式(返回数组);
复制代码 二、源文件公式源码区编写ema核心计算公式- //ema1计算公式开始(返回数组)
- /*
- 从map<string,mapK>制式数据中分离需要处理的数据,然后通过这此的ema方式取得这些数据的ema平均,返回值仍然是数组vector
- */
- vector<double> test::ema(vector<double> pc, int num)
- {
- vector<double> ema;
- double emavector = 0;
- int i = 0;
- for (int it = 0; it < pc.size(); ++it)
- {
- if (i < num)
- {
- emavector = (emavector + pc[it]) / (i + 1);
- i++;
- ema.push_back(emavector);
- }
- else
- {
- emavector = (2 * pc[it] + (num - 1) * emavector) / (num + 1);
- ema.push_back(emavector);
- }
- }
- return ema;
- }
复制代码 三、源文件中建立数组数据- RsqBar(sPeriod, sInst);
- map<string, TKVALUE >::iterator it;
- for (it = mapK[sPeriod][sInst].begin(); it != mapK[sPeriod][sInst].end(); ++it)
- {
- pc.push_back(it->second.dClose);
- }
复制代码 四、如何使用:- emashort = ema(pc, 12);
- emalong = ema(pc, 26);
- InsertLog("ema1均线值为: " + to_string(emashort[emashort.size()-1]));
- InsertLog( "dea均线值为: " + to_string(emalong[emalong.size()-1]));
复制代码 |
|
|
|
|
|
|
- UID
- 2
- 积分
- 2892617
- 威望
- 1396340 布
- 龙e币
- 1496277 刀
- 在线时间
- 13326 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-25
|
|
|
|
|
|
|