送给有需要的朋友
__declspec(dllexport) int WINAPI JLGPS(CALCINFO* pData)
{
if(pData->m_pfParam1 && pData->m_pfParam2 && //参数1,2有效
pData->m_pfParam3 &&
pData->m_nParam1Start>=0 && //参数1为序列数
pData->m_pfParam4==NULL) //有2个参数
{
int i=pData->m_nNumData-1;
int g=(int)*(pData->m_pfParam2);
int tj=(int)pData->m_pfParam1;
if (tj) //tj是选股条件
{
gpjl gpa;
strcpy(gpa.dm,pData->m_strStkLabel);
gpa.sjd=GetTickCount();
int bz=0;//修改标志
vector<gpjl>::iterator it;
if (gpz[g].size()==0)
{gpz[g].push_back(gpa);
bz=1;
}
else
{
for(it=gpz[g].begin();it!=gpz[g].end();)
{
if(strcmp(it->dm,gpa.dm)==0)
{
it->sjd=gpa.sjd;
bz=1;
}
if( gpa.sjd- it->sjd>=(int)*(pData->m_pfParam3)*1000) //8改第2个参数
it=gpz[g].erase(it);
else
++it;
}
}
if(bz==0)
gpz[g].push_back(gpa);
}
if (tj) //tj是第一个参数
pData->m_pResultBuf=1;
else
pData->m_pResultBuf=0;
//gp.nSize();
return i;
}
return -1;
}
__declspec(dllexport) int WINAPI JLGPS_CALC_PREV(CALCINFO* pData)
{
if(pData->m_pfParam2)
{
float f = *pData->m_pfParam2;
return ((int)f) - 1;
}
return 0;
}
__declspec(dllexport) int WINAPI GPS(CALCINFO* pData)
{
if(pData->m_pfParam1 && //参数1,2有效
pData->m_nParam1Start<0 && //参数1为序列数
pData->m_pfParam2==NULL) //有2个参数
{
int i=pData->m_nNumData-1;
int g=(int)*(pData->m_pfParam1);
pData->m_pResultBuf=gpz[g].size();//股票数
return i;
}
return -1;
}
__declspec(dllexport) int WINAPI GPS_CALC_PREV(CALCINFO* pData)
{
if(pData->m_pfParam2)
{
float f = *pData->m_pfParam2;
return ((int)f) - 1;
}
return 0;
}