請仔細看看自帶的范例,重點看
//DLL公式的運行模式,系統系統調用該DLL時,告知公式系統該DLL公式運行在何種模式下
//返回值: 0本DLL運行序列模式 1本DLL運行逐周期模式
__declspec(dllexport) int WINAPI RUNMODE()
{
//本DLL運行序列模式,如果運行逐K線模式將此函數返回1,此時每執行一個K線都是調用本接口一次。
// return 1;
return 0;
}
//////
//計算均價,2個參數,參數1為待求均線的數據,參數2表示計算周期
//調用方法:
// "STOCKFUNC@MYMAVAR"(CLOSE-OPEN,5)
__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData)
{
上面這個范例上帶了序列模式和逐K線模式的2種計算方法范例
//計算收盤價的均價,一個常數參數,表示計算周期
//調用方法:
// "STOCKFUNC@MYMACLOSE"(5)
__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
if(nPeriod>0)
{
float fTotal;
int i, j;
for ( i = nPeriod-1; i < pData->m_nNumData; i++ )//計算nPeriod周期的均線,數據從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都是用它,是嗎