鼎元C++量化程式码指标与函数模块系列之【简单移动平均线(average,sma)】
- UID
- 2
- 积分
- 2892307
- 威望
- 1396185 布
- 龙e币
- 1496122 刀
- 在线时间
- 13313 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-25
|
鼎元C++量化程式码指标与函数模块系列之【简单移动平均线(average,sma)】
1、在头文件声明变量:- double average(string period, string inst, int num); //average,ma函数变量
复制代码 2、在源文件设计计算公式函数:- //均线average计算公式开始
- double test::average(string period, string inst, int num)
- {
- int key = 0;
- int sump = 0;
- if (mapK[period][inst].size() < num) return 0;
- map<string, TKVALUE>::reverse_iterator it;
- for (it = mapK[sPeriod][sInst].rbegin(); it != mapK[sPeriod][sInst].rend(); it++)
- {
- sump = sump + it->second.dClose;
- key++;
- if (key >= num)break;
- }
- return sump/num;
- }
复制代码 3、在初始参数区域设计length的参数- //Name 参数名, Value 默认值, Explain 参数说明, tend 表示一个参数结束
- t.Name = "指标周期"; t.Value = "5"; t.Explain = "均线的周期参数"; tend(t);
复制代码 4、在onrun中调用到参数并赋值给一个变量length- //交易系统参数变量传递开始*******************************************************************************************************
- num = 0;
- jg = 5;
- length = atoi(parm["指标周期"].Value.c_str());
- //交易系统参数变量传递结束*******************************************************************************************************
复制代码 5、申请bar数据调用指令(只需要调用一次申请就行)6、调用公式获取变量值- avgprice = average(sPeriod, sInst, length);
复制代码 7、如果想让它在每一个bar开始时都运行一次,就把它加到”OnBarOpen(TKVALUE t)“中。如下:- avgprice = average(sPeriod, sInst, length);
复制代码 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|
- UID
- 2
- 积分
- 2892307
- 威望
- 1396185 布
- 龙e币
- 1496122 刀
- 在线时间
- 13313 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-12-25
|
|
|
|
|
|
|