以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  请教:打开K线图时反复调用 ,不知是什么问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=50939)

--  作者:dnt00193
--  发布时间:2013/4/11 16:10:48
--  请教:打开K线图时反复调用 ,不知是什么问题
 这个是在fmlDLL的范例上直接改的 ,逐K线模式调用

__declspec(dllexport) int WINAPI Mypolyfit(CALCINFO* pCALCINFO)
{
   
    if(pEng==NULL)
    {
        if(!(pEng=engOpen(NULL)))
        {
            MessageBox(NULL,"无法打开引擎","错误!",MB_OK);
            return -1;
        }
        else
        {
            MessageBox(NULL,"成功!","恭喜!",MB_OK);
            ;
        }
    }
    else// if ...  每K只执行一次?
    {
       
        int i;
        static float count[30];
        static float price[30];
       
        for(i=0;i<=29;i++)
        {
            count[i]=pCALCINFO->m_dwBarpos-(29-i);
            price[pCALCINFO->m_nNumData-1-i]=(pCALCINFO->m_pData[pCALCINFO->m_nNumData-1-i].m_fLow+ \\
                pCALCINFO->m_pData[pCALCINFO->m_nNumData-1-i].m_fHigh)/2;
        }
       
        mxArray *p_X=mxCreateDoubleMatrix(30,1,mxREAL);
        mxArray *p_Y=mxCreateDoubleMatrix(30,1,mxREAL);
        mxArray *p;//多项式拟合的结果:多项式的系数矩阵
       
       
        //cout<<"创建矩阵完毕"<<endl;
       
        memcpy((void *)mxGetPr(p_X),(void *)count,30*sizeof(float));
        memcpy((void *)mxGetPr(p_Y),(void *)price,30*sizeof(float));
        engPutVariable(pEng,"p_X",p_X);
        engPutVariable(pEng,"p_Y",p_Y);
        engEvalString(pEng,"p=polyfit(p_X,p_Y,2)");
        p=engGetVariable(pEng,"p");
        engEvalString(pEng,"p_Y=polyval(p,p_X,2)");   
        engEvalString(pEng,"plot(p_X,p_Y)");
        mxDestroyArray(p_X);
        mxDestroyArray(p_Y);
       
       
        //测试用
        /*
        engEvalString(pEng,"x=0:0.001:2*pi;");
        engEvalString(pEng,"y=sin(x);");    
        engEvalString(pEng,"plot(x,y)");
        */
       
        for(i=29;i>5;i--)
        {
            ;
        }
       
        *pCALCINFO->m_pResultBuf=2400;
    }
   
    return 1;
}

公式那边调用是 stockfunc@v();


点击“股指XXX”后,显示的matlab画图会高频不断刷新,不知道是怎么回事?不是一根K线才调用一次本程序吗 ?\\

还有 price[pCALCINFO->m_nNumData-1-i]=(pCALCINFO->m_pData[pCALCINFO->m_nNumData-1-i].m_fLow+ \\
                pCALCINFO->m_pData[pCALCINFO->m_nNumData-1-i].m_fHigh)/2;  似乎调不到K线数据,不知道怎么回事 ??????????

--  作者:rushtaotao
--  发布时间:2013/4/11 16:24:46
--  
稍后待开发回复
--  作者:dnt00193
--  发布时间:2013/4/11 17:16:22
--  
 主要问题是取不到数据
--  作者:王锋
--  发布时间:2013/4/11 18:18:02
--  

DLL公式的逐K线模式有个专门的函数开关,不知道你是否有打开。

此外,你的描述我看不懂,可否把思路想清楚了,文字描述的更清楚一些