請仔細(xì)看看自帶的范例,重點(diǎn)看
//DLL公式的運(yùn)行模式,系統(tǒng)系統(tǒng)調(diào)用該DLL時,告知公式系統(tǒng)該DLL公式運(yùn)行在何種模式下
//返回值: 0本DLL運(yùn)行序列模式 1本DLL運(yùn)行逐周期模式
__declspec(dllexport) int WINAPI RUNMODE()
{
//本DLL運(yùn)行序列模式,如果運(yùn)行逐K線模式將此函數(shù)返回1,此時每執(zhí)行一個K線都是調(diào)用本接口一次。
// return 1;
return 0;
}
//////
//計(jì)算均價,2個參數(shù),參數(shù)1為待求均線的數(shù)據(jù),參數(shù)2表示計(jì)算周期
//調(diào)用方法:
// "STOCKFUNC@MYMAVAR"(CLOSE-OPEN,5)
__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData)
{
上面這個范例上帶了序列模式和逐K線模式的2種計(jì)算方法范例
//計(jì)算收盤價的均價,一個常數(shù)參數(shù),表示計(jì)算周期
//調(diào)用方法:
// "STOCKFUNC@MYMACLOSE"(5)
__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData)
{
if ( pData->m_pfParam1 && //參數(shù)1有效
pData->m_nParam1Start<0 && //參數(shù)1為常數(shù)
pData->m_pfParam2==NULL ) //僅有一個參數(shù)
{
float fParam = *pData->m_pfParam1;
int nPeriod = (int)fParam; //參數(shù)1
if(nPeriod>0)
{
float fTotal;
int i, j;
for ( i = nPeriod-1; i < pData->m_nNumData; i++ )//計(jì)算nPeriod周期的均線,數(shù)據(jù)從nPeriod-1開始有效
{
fTotal = 0.0f;
for ( j = 0; j < nPeriod; j++ ) //累加
fTotal += pData->m_pData[i-j].m_fClose;
pData->m_pResultBuf[i] = fTotal/nPeriod; //平均
}
return nPeriod-1;
}
}
return -1;
}
這個不要動,序列和逐K都是用它,是嗎