鼎元C++量化程式码指标与函数模块系列之【市场强度函数(marketstrength)计算方法及调用方法】
- UID
- 2
- 积分
- 2898417
- 威望
- 1399240 布
- 龙e币
- 1499177 刀
- 在线时间
- 13365 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-1-12
|
鼎元C++量化程式码指标与函数模块系列之【市场强度函数(marketstrength)计算方法及调用方法】
第一部分:头文件声明变量- double marketstrength(string period,string inst, int num);//marketstrength函数调用与计算
复制代码- vector<double> pc; //通用收盘价容器变量声明
复制代码 第二部分:源文件函数核心计算程式码- //marketstrength函数调用与计算
- double test::marketstrength(string period, string inst, int num)
- {
- double val1 = 0;
- double val2 = 0;
- double val3 = 0;
- int key = 0;
- double marketstrength = 0;
- map<string, TKVALUE>::reverse_iterator it; //建立逆向迭代
- for (it = mapK[sPeriod][sInst].rbegin(); it != mapK[sPeriod][sInst].rend(); it++) //遍历
- {
- pc.push_back(it->second.dClose); //将收盘价装入pc容器,注意是反向的,越靠前数据越新,比方说pc[0]是最新价格
- if (key > length)break; //截取前0-11个收盘价,一共12个数据
- key++;
- }
- for (int i = 0; i <= num; i++)
- {
- val1 += iff(pc[i] > pc[i + 1], pc[i], -pc[i]);
- val2 += iff(pc[i] > pc[i + 1], pc[i], 0);
- val3 += iff(pc[i] > pc[i + 1], 0, pc[i]);
- }
- if (val1 >= 0)
- {
- marketstrength = 100 * val1 / val2;
- }
- else
- {
- marketstrength = 100 * val1 / val3;
- }
- return marketstrength;
- }
复制代码 第三部分:调用方法- RsqBar(sPeriod, sInst); //申请数据
- marketstrength(sPeriod, sInst, length);
- InsertLog("数据量一共有: " + to_string(length+2) + "marketstrength: " + to_string(marketstrength(sPeriod, sInst, length)));
复制代码 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
- UID
- 2
- 积分
- 2898417
- 威望
- 1399240 布
- 龙e币
- 1499177 刀
- 在线时间
- 13365 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-1-12
|
|
|
|
|
|
|