等级: 专业版
- 注册:
- 2021-5-20
- 曾用名:
- 永杰
|
楼主 |
发表于 2021-7-1 12:59
|
显示全部楼层
老师您好,我测试出来了,代码如下:
__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData)
{
if ( pData->m_pfParam1 && //参数1有效
pData->m_nParam1Start<0 && //参数1为常数
pData->m_pfParam2==NULL ) //仅有一个参数
{
float fParam = *pData->m_pfParam1;
int nPeriod = (int)fParam; //参数1
float *ma1= new float[pData->m_nNumData+1];
float *ma2= new float[pData->m_nNumData+1];
float *ma3= new float[pData->m_nNumData+1];
int m3zds3;
float fTotal, f1Total, f2Total;
int i, j,nPeriodCyc=5,n1PeriodCyc=10,n2PeriodCyc=20;
if(n1PeriodCyc>0)
{
for ( i = nPeriodCyc-1; i < pData->m_nNumData; i++ )//计算nPeriod周期的均线,数据从nPeriod-1开始有效
{
fTotal = 0.0f;
for ( j = 0; j < nPeriodCyc; j++ ) //累加
fTotal += pData->m_pData[i-j].m_fClose;
ma1=fTotal/nPeriodCyc;
//pData->m_pResultBuf = ma1; //平均
}
}
if(n1PeriodCyc>0)
{
for ( i = n1PeriodCyc-1; i < pData->m_nNumData; i++ )//计算nPeriod周期的均线,数据从nPeriod-1开始有效
{
f1Total = 0.0f;
for ( j = 0; j < n1PeriodCyc; j++ ) //累加
f1Total += pData->m_pData[i-j].m_fClose;
ma2=f1Total/n1PeriodCyc;
//pData->m_pResultBuf = ma2; //平均
}
}
if(n2PeriodCyc>0)
{
for ( i = n2PeriodCyc-1; i < pData->m_nNumData; i++ )//计算nPeriod周期的均线,数据从nPeriod-1开始有效
{
f2Total = 0.0f;
for ( j = 0; j < n2PeriodCyc; j++ ) //累加
f2Total += pData->m_pData[i-j].m_fClose;
ma2=f2Total/n2PeriodCyc;
//pData->m_pResultBuf = ma3; //平均
}
for ( i = 0; i < pData->m_nNumData; i++ )
{
if(nPeriod==1)
pData->m_pResultBuf = ma1;
else if(nPeriod==2)
pData->m_pResultBuf = ma2;
else
pData->m_pResultBuf = ma3;
}
delete [] ma1;
delete [] ma2;
delete [] ma3;
return nPeriodCyc-1;
}
}
return -1;
}
调用方法:
ma1:"STOCKFUNC@MYMACLOSE"(1);
ma2:"STOCKFUNC@MYMACLOSE"(3);
ma3:"STOCKFUNC@MYMACLOSE"(3);
问题出在loat *ma1= new float[pData->m_nNumData+1];这个定义上,因为这个定义导致了均线也是不稳定的,不知道老师有没有更好的方法,我看看去掉new,直接定义成loat *ma1t[pData->m_nNumData+1]怎么样吧
补充内容 (2021-7-1 13:08):
老师,好像无法float ma1[pData->m_nNumData+1]这样定义,[]里面也不能定义一个数据=pData->m_nNumData+1,这样编译报错,请老师给予帮助。
补充内容 (2021-7-1 15:11):
网上粘贴, for ( i = 0; i < pData->m_nNumData; i++ )
{
if(nPeriod==1)
pData->m_pResultBuf = ...
补充内容 (2021-7-1 15:11):
网上粘贴没有了,我给老师补上 |
|