以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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线模式有个专门的函数开关,不知道你是否有打开。 此外,你的描述我看不懂,可否把思路想清楚了,文字描述的更清楚一些 |