以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助]c++实现wma算法的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=148661)

--  作者:lksj
--  发布时间:2017/3/6 11:05:50
--  [求助]c++实现wma算法的问题
实在没找到哪里有错误,但是实际计算出来的画的线与公式里写WMA(H,50)不一致,请问算法哪里有错?应如何修改?
以下内容为程序代码:

1 __declspec(dllexport) int WINAPI MYYGDC1(CALCINFO* pData)
2 {
3     if (CONFIRMLOCKINFO() == 0) //加密狗检测不合法
4         return 0;
5     if (pData->m_pfParam1 &&     //参数1有效
6         pData->m_nParam1Start >= 0                    //参数1为序列数
7         )
8     {
9         const float* pValue = pData->m_pfParam1;    //参数1
10         int nFirst = pData->m_nParam1Start;            //有效值起始位
11         float fParam = 50;            //参数2
12         int nPeriod = (int)fParam;
13         if (nFirst >= 0 && nPeriod > 0)
14         {
15             float fTotal;
16             int i, j;
17             for (i = nFirst + nPeriod - 1; i < pData->m_nNumData; i++)
18             {
19                 fTotal = 0.0f;
20                 float fSum = 0.0f;
21                 for (j = 0; j < nPeriod; j++) //累加
22                     fTotal += (pValue[i - j] * (j + 1));
23                 for (j = 1; j <= nPeriod; j++)
24                     fSum += j;
25
26                 pData->m_pResultBuf[i] = fTotal / fSum;//平均
27             }
28             return nFirst + nPeriod - 1;
29         }
30     }
31 }

[此贴子已经被作者于2017-3-6 11:06:11编辑过]

--  作者:lksj
--  发布时间:2017/3/6 14:24:30
--  
已解决问题