鼎元C++期货量化/程序化教程【布林带(bollingerbands,BOLL)计算方法及调用方法】
- UID
- 2
- 积分
- 2892487
- 威望
- 1396275 布
- 龙e币
- 1496212 刀
- 在线时间
- 13313 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-25
|
鼎元C++期货量化/程序化教程【布林带(bollingerbands,BOLL)计算方法及调用方法】
一、先在C++头文件声明公式变量:- double bollingerbands(string period, string inst, int num,int ref);//BOLL计算公式;
复制代码 二、在test.cpp源文件中增加BOLL公式模块:- //布林带(bollingerbands)开始
- double test::bollingerbands(string period, string inst, int num, int ref)
- {
- double avg1 = avg(sPeriod, sInst,num);//中间均线
- int n = 0;
- double sumdev = 0;
- double madev = 0;
- if (mapK[period][inst].size() < num) return 0;
- map<string, TKVALUE>::reverse_iterator it;
- for (it = mapK[period][inst].rbegin(); it != mapK[period][inst].rend(); ++it)
- {
- sumdev += pow(it->second.dClose - avg1,2); //diff平方加总
- n++;
- if (n >= num)break;
- }
- madev = sqrt(sumdev / num); //得到方差后再取标准差
-
- return avg1 + ref*madev;
- }
- //布林带(bollingerbands)结束
复制代码 三、如何调用:- RsqBar(sPeriod, sInst);
- indvalue = bollingerbands(sPeriod, sInst, length,2); //指标BOLL的上沿;
- indvalue1 = bollingerbands(sPeriod, sInst, length,-2); //指标BOLL的下沿;
复制代码 其中: indvalue是在头文件中需要声明的变量,length是BOLL的周期参数,类型是double类型,BOLL的经典参数为(26,26,2)。即中间带是26周期均线,标准差周期为26,标准差为2倍。 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
- UID
- 2
- 积分
- 2892487
- 威望
- 1396275 布
- 龙e币
- 1496212 刀
- 在线时间
- 13313 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-25
|
布林带指标编写思路:
1、确定周期(26,26,2);
2、求26周期简单平均线。
3、求26周期内收盘价与平均线的差的平方,并加总。
4、将加总的方差平方除以26周期。得到方差,然后开方得到标准差。
5、均线+2倍标准差为上沿,均线-2倍标准差为下沿。 |
|
|
|
|
|
|
- UID
- 2
- 积分
- 2892487
- 威望
- 1396275 布
- 龙e币
- 1496212 刀
- 在线时间
- 13313 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-25
|
因为K线bar是按时间先后顺序排列的,时间越早的越靠前,所以我们求boll线时需要从最新的数据bar开始,所以要将mapk的序列倒转一下。
需要- map<string, TKVALUE>::reverse_iterator it;
- for (it = mapK[period][inst].rbegin(); it != mapK[period][inst].rend(); ++it)
复制代码 先倒序一下数据,然后遍历。这是本策略编写的关键之处。 |
|
|
|
|
|
|