大智慧DLL资料

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

关于证券软件大智慧的数据输出的一个dll文件,它导出的是二进制文件。我想求助如何改写该dll输出txt供matlab读入,再用dll读入matlab计算后的数据。抑或有达人有matlab直接读入该二进制文件的方案?dll源码以下。头文件如下:#ifndef__FXJFUNC_H_INCLUDE#define__FXJFUNC_H_INCLUDE/*//////////分析家扩展函数规范V3.101.本规范适用于分析家3.10标准版和专业版公式系统.2.扩展函数用于实现系统函数不能实现的特殊算法.3.扩展函数用windows32位动态连接库实现,建议使用MicrosoftVisualC++编程.4.调用时在公式编辑器中写动态库名称@函数名称(参数表)即可,例如下面函数可以写为FXJFUNC@MYCMALOSE(5)5.动态连接库名称和函数名称可以自己定义.6.使用时可以将动态库拷贝到分析家目录下使用.*/#ifdef__cplusplusexternC{#endif//__cplusplus////////////分析周期enumDATA_TYPE{TICK_DATA=2,//分笔成交MIN1_DATA,//1分钟线MIN5_DATA,//5分钟线MIN15_DATA,//15分钟线MIN30_DATA,//30分钟线MIN60_DATA,//60分钟线DAY_DATA,//日线WEEK_DATA,//周线MONTH_DATA,//月线MULTI_DATA//多日线};////////////基本数据typedefstructtagSTKDATA{time_tm_time;//时间,UCTfloatm_fOpen;//开盘floatm_fHigh;//最高floatm_fLow;//最低floatm_fClose;//收盘floatm_fVolume;//成交量floatm_fAmount;//成交额WORDm_wAdvance;//上涨家数(仅大盘有效)WORDm_wDecline;//下跌家数(仅大盘有效)}STKDATA;////////////扩展数据,用于描述分笔成交数据的买卖盘typedefuniontagSTKDATAEx{struct{floatm_fBuyPrice[3];//买1--买3价floatm_fBuyVol[3];//买1--买3量floatm_fSellPrice[3];//卖1--卖3价floatm_fSellVol[3];//卖1--卖3量};floatm_fDataEx[12];//保留}STKDATAEx;///////////*财务数据顺序(m_pfFinData内容)序号内容0总股本(万股),1国家股,2发起人法人股,3法人股,4B股,5H股,6流通A股,7职工股,8A2转配股,9总资产(千元),10流动资产,11固定资产,12无形资产,13长期投资,14流动负债,15长期负债,16资本公积金,17每股公积金,18股东权益,19主营收入,20主营利润,21其他利润,22营业利润,23投资收益,24补贴收入,25营业外收支,26上年损益调整,27利润总额,28税后利润,29净利润,30未分配利润,31每股未分配,32每股收益,33每股净资产,34调整每股净资,35股东权益比,36净资收益率*/////////////函数数据结构typedefstructtagCALCINFO{constDWORDm_dwSize;//结构大小constDWORDm_dwVersion;//调用软件版本(V2.10:0x210)constDWORDm_dwSerial;//调用软件序列号constchar*m_strStkLabel;//股票代码constBOOLm_bIndex;//大盘constintm_nNumData;//数据数量(pData,pDataEx,pResultBuf数据数量)constSTKDATA*m_pData;//常规数据,注意:当m_nNumData==0时可能为NULLconstSTKDATAEx*m_pDataEx;//扩展数据,分笔成交买卖盘,注意:可能为NULLconstintm_nParam1Start;//参数1有效位置constfloat*m_pfParam1;//调用参数1constfloat*m_pfParam2;//调用参数2constfloat*m_pfParam3;//调用参数3constfloat*m_pfParam4;//调用参数3float*m_pResultBuf;//结果缓冲区constDATA_TYPEm_dataType;//数据类型constfloat*m_pfFinData;//财务数据}CALCINFO;/*注:1.函数调用参数由m_pfParam1--m_pfParam4带入,若为NULL则表示该参数无效.2.当一个参数无效时,则其后的所有参数均无效.如:m_pfParam2为NULL,则m_pfParam3,m_pfParam4一定为NULL.3.参数1可以是常数参数或序列数参数,其余参数只能为常数参数.4.若m_nParam1Start0,则参数1为常数参数,参数等于*m_pfParam1;5.若m_nParam1Start=0,则参数1为序列数参数,m_pfParam1指向一个浮点型数组,数组大小为m_nNumData,数据有效范围为m_nParam1Start--m_nNumData.在时间上m_pData[x]与m_pfParam1[x]是一致的*////////////*函数输出__declspec(dllexport)intxxxxxxxx(CALCINFO*pData);----------A__declspec(dllexport)intxxxxxxxxVAR(CALCINDO*pData);----------B1.函数名称需全部大写.2.函数必须以上述A,B两种形式之一声明,请用实际函数名称替代xxxxxxxx;对于C++程序还需包括在externC{}括号中.3.上述形式A用于声明不带参数或全部参数为常数的函数;形式B用于声明参数1为序列数的函数;两种函数的区别在于后者以VAR结尾.4.函数计算结果用pData-m_pResultBuf带回.5.函数返回-1表示错误或全部数据无效,否则返回第一个有效值位置,即:m_pResultBuf[返回值]--m_pResultBuf[m_nNumData-1]间为有效值.6.函数名称长度不能超过15字节,动态连接库文件名不能超过9字节(不包括扩展名),动态库名称不能叫SYSTEM,EXPLORER7.编译时请请选择1字节对齐*///示例函数,使用时用实际名称替换__declspec(dllexport)intWINAPIWRITE(CALCINFO*pData);__declspec(dllexport)intWINAPIREAD(CALCINFO*pData);#ifdef__cplusplus}#endif//__cplusplus#endif//__FXJFUNC_H_INCLUDE===============================//FxjFunc.cpp:DefinestheentrypointfortheDLLapplication.//#includestdafx.h#includeFxjFunc.h#includestringusingnamespacestd;#includefstream#includesstreamBOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){switch(ul_reason_for_call){caseDLL_PROCESS_ATTACH:caseDLL_THREAD_ATTACH:caseDLL_THREAD_DETACH:caseDLL_PROCESS_DETACH:break;}returnTRUE;}stringDzhCode(stringdm,constBOOLbIndex){stringmydm=dm;if(bIndex&&mydm.substr(0,3)==000){mydm=1;mydm=mydm.append(dm);returnmydm;}else{returnmydm;}}stringint2Code(intiCode){charstrvar[20];itoa(iCode,strvar,10);//指标序号,第三个参数10表示十进制stringmydm(strvar);if(iCode1000000)//沪市指数1000001...{returnmydm;}else{//chars[20];//sprintf(s,00000%d,iCode);//returnstring(s);stringzeros=;for(intj=strlen(strvar);j6;j++)zeros.append(0);mydm=zeros.append(mydm);returnmydm;}}stringDzhDataType(DATA_TYPEdatatype){switch(datatype){caseTICK_DATA://分笔成交returnTICK;break;caseMIN1_DATA://1分钟线returnMIN1;break;caseMIN5_DATA://5分钟线returnMIN5;break;caseMIN15_DATA://15分钟线returnMIN15;break;caseMIN30_DATA://30分钟线returnMIN30;break;caseMIN60_DATA://60分钟线returnMIN60;break;caseDAY_DATA://日线returnDAY;break;caseWEEK_DATA://周线returnWEEK;break;caseMONTH_DATA://月线returnMONTH;break;caseMULTI_DATA://多日线returnNDAYS;break;case12:returnYEAR;break;case13:returnQUARTER;break;case14:returnSEMIYEAR;break;case15:return15;break;case1:return1;break;default:returnNA;}}stringfileName(stringdm,constBOOLbIndex,intvarid,DATA_TYPEdatatype){charstrvar[20];itoa(varid,strvar,10);//指标序号,第三个参数10表示十进制stringfilename=FMLDATA\\;filename.append(DzhCode(dm,bIndex));filename.append(.);filename.append(strvar);filename.append(.);filename.append(DzhDataType(datatype));returnfilename;}__declspec(dllexport)intWINAPIWRITE(CALCINFO*pData){floatf;intnVar,nFirst,i;stringcode=;if(pData-m_pfParam1&&pData-m_pfParam2&&//参数1,2有效pData-m_nParam1Start=0&&//参数1为序列数pData-m_pfParam3==NULL)//有2个参数{nFirst=pData-m_nParam1Start;//有效值code.append(pData-m_strStkLabel);f=*pData-m_pfParam2;

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功