鼎元C++期货量化/程序化教程如何使用容器(vector)对bar数据进行高级处理【vector容器使用范例:正迭代计算length周期最高价与最低价】
  
- UID
- 2
- 积分
- 2929494
- 威望
- 1414783 布
- 龙e币
- 1514711 刀
- 在线时间
- 13682 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-4-5

|
鼎元C++期货量化/程序化教程如何使用容器(vector)对bar数据进行高级处理【vector容器使用范例:正迭代计算length周期最高价与最低价】
第一部分:头文件声明变量- private:
- //软件界面策略参数设置相关的变量设计(开始)*******************************
- vector<double>highp, lowp;
- int length; //length:均线类的参数周期统一使用变量,方便后面使用中统一口径;
- //软件界面策略参数设置相关的变量设计(结束)*******************************
复制代码 第二部分:源文件主程序码:- //调用bar数据,要包括品种合约,运行周期
- RsqBar(sPeriod, sInst);
-
- //装收盘价装后容器变量PC中
- map<string, TKVALUE>::iterator it;//迭代
- for (it = mapK[sPeriod][sInst].begin(); it != mapK[sPeriod][sInst].end(); it++) //遍历所有K线
- {
- highp.push_back(it->second.dHigh);//将最高价存储到highp容器中,按正序排序
- lowp.push_back(it->second.dLow); //将最低价存储到lowp容器中,按正序排序
- }
- vector<double> highestp,lowestp;
- for (size_t i = 0; i < highp.size(); i++)
- {
- if (i == 0) //如何循环是第一次则将上面highp[0]和lowp[0]值赋给highestp[0]和lowestp[0]
- {
- highestp.push_back(highp[i]);
- lowestp.push_back(lowp[i]);
- }
- else if(i < length) //如果循环是大于0而又小于length设置的周期时
- {
- highestp.push_back(max2(highestp[i - 1], highp[i]));//依次将highestp前一个值与highp当根bar值比较,将最大的者存储入highestp[i]中
- lowestp.push_back(min2(lowestp[i - 1], lowp[i])); //取最小值类似
- }
- else
- {
- double d =-9999;//声明一个用来存储length周期内最大值的变量
- double e = 9999;
- for (size_t j = 0; j < length; j++) //若是容器中数量大于等于length个时
- {
- d = max2(d, highp[i - j]);//采取从右往左循环将d值与highp[i-j]进行比较,取最大值赋给最新的d
- e = min2(e, lowp[i - j]);
- }
- highestp.push_back(d);// 将length周期内highp最大值赋给lowestp
- lowestp.push_back(e); //将length周期内lowp最小值赋给lowestp;
- }
- }
- InsertLog("周期 " + to_string(length) + " 内最大值为: " + to_string(highestp[highestp.size()-1])); //将length周期内最高值输出
- InsertLog("周期 " + to_string(length) + " 内最小值为: " + to_string(lowestp[lowestp.size() - 1])); //将length周期内最低值输出
- InsertLog("用调用计算的最高价: " + to_string(highest(sPeriod,sInst,length)));
- InsertLog("用调用计算的最低价: " + to_string(lowest(sPeriod, sInst, length)));
复制代码 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
  
- UID
- 2
- 积分
- 2929494
- 威望
- 1414783 布
- 龙e币
- 1514711 刀
- 在线时间
- 13682 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-4-5

|
- highest(sPeriod,sInst,length)
- lowest(sPeriod, sInst, length)
复制代码 这是用调用法或者说逆迭代计算的值,通过比较可以知道,我们正迭代写的方法是正确的。 |
|
|
|
|
|
|