新手请教各路大侠,刚刚开始用c学习编写dll函数,源代码如下,
函数目的:实现顶底分型输出1,底分型输出-1,其他输出0;
在公式前端调用没有任何输出,请教斑竹和论坛编程高手帮忙分析如何正确显示,不胜感激!
_declspec(dllexport) int WINAPI MYDING(CALCINFO* pData)
{
//运行在逐k线模式下,
float xg,xd,yg,yd,zg,zd;//定义三根k线高低点的变量
int i;
bool top,bot;
if(pData->m_pfParam1 && pData->m_pfParam2==NULL && pData->m_nParam1Start<0)//这里不加这句是否可以,因为函数不需要参数?
{ for ( i =0; i < pData->m_nNumData-1; i++ )
{ if(i<2)
pData->m_pResultBuf[i]=0;
if(i>=2 )
{
xg=pData->m_pData[i-2].m_fHigh;
xd=pData->m_pData[i-2].m_fLow;//逐k模式,每根k线,完全执行一遍程序,并且返回结果在缓冲区。
yg=pData->m_pData[i-1].m_fHigh;
yd=pData->m_pData[i-1].m_fLow;
zg=pData->m_pData[i].m_fHigh;//当下行情价格
zd=pData->m_pData[i].m_fLow;
top= yg>xg && yd>xd && zg<yg && zd<yd;//顶分型满足的条件,中间k线是最高的
bot= xg>yg && xd>yd && zg>yg && zd>yd;//底分型满足的条件,中间k线是最低的
if(top)
pData->m_pResultBuf[i]=1;
if(bot)
pData->m_pResultBuf[i]=-1;
else pData->m_pResultBuf[i]=0;
}
}
}
return -1;
}
是否和变量存储有关?
好的非常感谢,对序列和逐k模式有迷惑,多谢指正!
改完之后在最新的金字塔32位版本上,依然无函数返回值,新手请教什么原因?
_declspec(dllexport) int WINAPI MYDING(CALCINFO* pData)
{
//运行在逐k线模式下,
float xg,xd,yg,yd,zg,zd;//定义三根k线高低点的变量
int i;
bool top,bot;
for ( i =0; i < pData->m_nNumData-1; i++ )
{ if(i<2)
*pData->m_pResultBuf=0;
if(i>=2 )
{
xg=pData->m_pData[i-2].m_fHigh;
xd=pData->m_pData[i-2].m_fLow;//逐k模式,每根k线,完全执行一遍程序,并且返回结果在缓冲区。
yg=pData->m_pData[i-1].m_fHigh;
yd=pData->m_pData[i-1].m_fLow;
zg=pData->m_pData[i].m_fHigh;//当下行情价格
zd=pData->m_pData[i].m_fLow;
top= yg>xg && yd>xd && zg<yg && zd<yd;//顶分型满足的条件,中间k线是最高的
bot= xg>yg && xd>yd && zg>yg && zd>yd;//底分型满足的条件,中间k线是最低的
if(top)
*pData->m_pResultBuf=1;
if(bot)
*pData->m_pResultBuf=-1;
else *pData->m_pResultBuf=0;//逐k模式下的返回值,是单个值存储,而不是序列模式的数组。
}
}
return -1;
}