首页 > > 详细

代做公式选股、股票选股公式代写、代做公式选股、金字塔C接口用逐K模式-金字塔模型

咨询内容:
//计算收盘价的均价,一个常数参数,表示计算周期
//调用方法:
// "STOCKFUNC@MYMACLOSE"(5)
__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData)
{
if ( pData->m_pfParam1 //参数1有效
pData->m_nParam1Startm_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 m_nNumData;
i++ )//计算nPeriod周期的均线,数据从nPeriod-1开始有效
{
fTotal = 0.0f;
for ( j = 0;
j m_pData[i-j].m_fClose;
pData->m_pResultBuf[i] = fTotal/nPeriod;
//平均
}
return nPeriod-1;
}
}
return -1;
}
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期
//调用方法:
// "STOCKFUNC@MYMAVAR"(CLOSE-OPEN,5)
__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData)
{
if(pData->m_pfParam1 pData->m_pfParam2 //参数1,2有效
pData->m_nParam1Start>=0 //参数1为序列数
pData->m_pfParam3==NULL) //有2个参数
{
const float*pValue = pData->m_pfParam1;
//参数1
int nFirst = pData->m_nParam1Start;
//有效值起始位
float fParam = *pData->m_pfParam2;
//参数2
int nPeriod = (int)fParam;


if( nFirst >= 0 nPeriod > 0 )
{
float fTotal;
int i, j;
for ( i = nFirst+nPeriod-1;
i m_nNumData;
i++ )
{
fTotal = 0.0f;
for ( j=0;
j m_pResultBuf[i] = fTotal/nPeriod;
//平均
}
return nFirst+nPeriod-1;
}
}
return -1;
/*对于逐K线模式,的处理方式的示范代码
if(pData->m_pfParam1 pData->m_pfParam2)
{
//对于逐K线模式,由于传递数据都是数值,因此需要一个数组用来保存传递过来的参数,用来计算.
//本例只是简单演示这个用法,如果用户在公式多次调用了接口,则会出现重复使用该变量导致计算出错
//因此要根据情况做几个这种全局静态变量用于保存各种数据。
static std::vector arMaData;

//第一个周期初始化数据
if(pData->m_dwBarpos == 0)
{
arMaData.clear();
}

double dbData = *pData->m_pfParam1;
//防止使用仅刷最后K线的反复刷新问题
if(arMaData.size() >= pData->m_nNumData)
arMaData[arMaData.size()-1] = dbData;
//仅仅更新最后一个数据
else
arMaData.push_back(dbData);
DWORD dwCyc = (DWORD) *pData->m_pfParam2;

if(pData->m_dwBarpos m_dwBarpos-(dwCyc-1);
i m_dwBarpos;
i++)
{
fAdd += arMaData[i];
}
*pData->m_pResultBuf = fAdd / dwCyc;
}
return 1;
*/
}
//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数
/*
调用方法:
MA1:=MA(CLOSE,3);
MA2:=MA(CLOSE,6);
MA3:=MA(CLOSE,12);
MA4:=MA(CLOSE,24);
MYBBI: "STOCKFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
*/
__declspec(dllexport) int WINAPI MYBBI(CALCINFO* pData)
{
if ( pData->m_pCalcParam[0].m_nParamStart >= 0
pData->m_pCalcParam[1].m_nParamStart >= 0
pData->m_pCalcParam[2].m_nParamStart >= 0
pData->m_pCalcParam[3].m_nParamStart >= 0 ) //4个序列都含有效数值
{
//计算返回的序列的第一个有效值位置
int nFirst = pData->m_pCalcParam[3].m_nParamStart;
//已知返回的序列的第一个有效值位置与第4个序列一致QQ
//若不知,则
/*
int nFirst = pData->m_pCalcParam[0].m_nParamStart;
if ( nFirst m_pCalcParam[1].m_nParamStart )
nFirst = pData->m_pCalcParam[1].m_nParamStart;
if ( nFirst m_pCalcParam[2].m_nParamStart )
nFirst = pData->m_pCalcParam[2].m_nParamStart;
if ( nFirst m_pCalcParam[3].m_nParamStart )
nFirst = pData->m_pCalcParam[3].m_nParamStart;
*/
const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;
const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;
const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;
const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;
int nNum = (int)(pData->m_pCalcParam[4].m_fParam);
//实际上该例中已知nNum=4,在此用于说明数值参数的用法
for( int i = nFirst;
i m_nNumData;
i++ )
{
pData->m_pResultBuf[i] =
(pValue1[i] + pValue2[i] + pValue3[i] + pValue4[i])/nNum;
}
return nFirst;
}
return -1;
}




 

联系我们 - QQ: 88652583
© 2014 www.93stock.com
代写选股公式网!
声明:警惕假冒分子冒充本站提供证券咨询服务,选股公式网为非证券咨询机构,本站不提供有关股评、投资分析报告、股市预测,证券咨询等服务。本站仅提供股票、期货、黄金、外汇的软件技术交流与分享。本站文章为互联网文章,其仅供参考,并不构成投资建议。