MQ 的 OpenD 函数错误 (文华财经wh9)

投资者咨询:MQ 的 OpenD 函数错误 (文华财经wh9)
来源:文华财经  日期:2018-5-18 21:27
 在分钟级别绘图 ,发现OpenD(0) 和 OpenD(1) 全是错误的,根本不是当天的开盘价 和昨天的开盘价 
技术人员回复
日期:2018-5-18 21:38

经核实,之前版本OpenD函数确实存在问题,感谢您的反馈

 

另外,相关同事已修改OpenD自定义函数的源码,下次MQ升级就好用了,目前可以暂时先保存下面的代码再进行调用,

 

Params
Numeric DaysAgo(2); //定义自定义函数参数
Vars
NumericSeries BarCnt; //定义序列变量 开盘第一根K线到当前的K线根数
NumericSeries DayOpen; //定义序列变量 取收盘价
Numeric i; //定义变量 用于for循环
Numeric j; //定义变量 用于for循环
Numeric nIndex(0);
Numeric CBIndex; //定义变量 取全部K线根数
Begin
CBIndex = CurrentBar;//CBlndex等于K线根数

If(CBIndex == 0 || Date <> Ref(Date,1))//历史第一根K线 或每天开盘第一根K线时
{
BarCnt = 1;//BarCnt为1
DayOpen = Open;//DayOpen的值定义为开盘价
}Else //否则
{
BarCnt = BarCnt + 1;//BarCnt的值为前一次计算的BarCnt+1 即开盘第一根K线到当前K线根数
}

If(DaysAgo == 0)//如果参数DaysAgo值为0 即当根K线返回当根K线
{
Return DayOpen;//返回DayClose 即返回当前交易日开盘价
}Else//否则
{
For i = 1 To DaysAgo//for循环从1到daysAgo
{
If( i == 1) //i等于1时
{
j = 0;//j取0
}Else //否则
{
j = j + BarCnt[j];//取累计K线根数 当前交易日K线根数+前一次计算的K线根数
}
If (j > CBIndex ) //当累计K线根数大于全部K线根数时

Return InvalidNumeric;//函数返回空值
nIndex = nIndex + BarCnt[j];

}
Return DayOpen[nIndex];//函数返回值为nlndex个交易日前的开盘价
}
End

     
投资者咨询:MQ 的 OpenD 函数错误 (文华财经wh9)
来源:文华财经  日期:2018-5-18 21:27
 MQ里面很多函数都有问题,希望文华全面检查一遍
技术人员回复
日期:2018-6-19 13:20

这里我们有同事定期检查维护更新的,

 

如果您在使用过程中出现问题,可以发帖与我们联系,感谢您的支持