鼎元C++量化程式码指标与函数模块系列之【highest[N]、lowest[N]及close[N]的计算方法及调用方法】
- UID
- 2
- 积分
- 2890797
- 威望
- 1395430 布
- 龙e币
- 1495367 刀
- 在线时间
- 13298 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-22
|
鼎元C++量化程式码指标与函数模块系列之【highest[N]、lowest[N]及close[N]的计算方法及调用方法】
第一部分、变量声明:- double highestN(string period, string inst, int num, int ref);//计算前REF bar NUM周期最高价格
- double lowestN(string period, string inst, int num, int ref); //计算前ref bar NUM周期最低价格
- double closeN(string period, string inst, int ref);//计算ref前个bar的收盘价格
复制代码 第二部分、公式核心计算公式模块:- //最高价highest[N]计算公式开始
- double test::highestN(string period, string inst, int num, int ref)
- {
- double d = 0;
- int n = 0;
- int r = 0;
- map<string, TKVALUE>::reverse_iterator it;
- for (it = mapK[period][inst].rbegin(); it != mapK[period][inst].rend(); ++it)
- {
- r++;
- if (r <= ref)continue;
- if (d < it->second.dHigh)d = it->second.dHigh;
- n++;
- if (n >= num)break;
- }
- return d;
- }
- //最低价lowest[N]计算公式开始
- double test::lowestN(string period, string inst, int num, int ref)
- {
- double d = 0;
- int n = 0;
- int r = 0;
- map<string, TKVALUE>::reverse_iterator it;
- for (it = mapK[period][inst].rbegin(); it != mapK[period][inst].rend(); ++it)
- {
- r++;
- if (r <= ref)continue;
- if (d == 0)d = it->second.dLow;
- if (d > it->second.dLow)d = it->second.dLow;
- n++;
- if (n >= num)break;
- }
- return d;
- }
- //返回ref个bar前的收盘价
- double test::closeN(string period, string inst, int ref)
- {
- double d = 0;
- int r = 0;
- int n = 0;
- map<string, TKVALUE>::reverse_iterator it;
- for (it = mapK[period][inst].rbegin(); it != mapK[period][inst].rend(); it++)
- {
- r++;
- if (r <= ref)continue; //跳过ref个bar
- d = it->second.dClose; //将ref个bar前一个bar的收盘价赋值给d ;
- break;
- }
- return d;
复制代码 第三部分、如何调用- RsqBar(sPeriod, sInst);
- highestN(sPeriod, sInst, 20, 5);
复制代码 barK线先从最新跳过5个bar,然后计算20个周期最高值,类似multicharts中的highest(high,20)[5]。 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
- UID
- 2
- 积分
- 2890797
- 威望
- 1395430 布
- 龙e币
- 1495367 刀
- 在线时间
- 13298 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-22
|
大家注意一下,这里[N]这个设置是不包括N这个bar的,比方说closeN[1] 是从右边开始数跳过的bar数即跳过1个bar的第二个bar的收盘价。 同理highest[N] 意思是跳过N个bar后从N+1个bar开始向左查询num个周期的最高价。
这里注意混淆,大家注意一下。 |
|
|
|
|
|
|