网上看到一个分享贴,说可以调用大智慧公式,只是我没有看懂要如何使用。

请问类似这样的调用是要写到哪里,自己的dll里面还是大智慧里面?

XDll_Free(Dll相对路径文件名);//释放动态链接库

XDll_Load(Dll相对路径文件名);//加载动态链接库

次源自客户定制需要,考虑再三,决定支持大智慧公式dll接口

大智慧公式dll语言规约和分析家一样.

算是给大家的节礼物

调用大智慧/分析家公式dll接口函数

在调用函数之前要创建缓冲区,并从对应历史数据接口填充k线数据

这个与历史数据接口对应的缓冲区,数据长度固定为480,配有10个输入输出缓冲区,

用作调用dll具体公式函数是时输入输出缓冲区

XDll_Free(Dll相对路径文件名);//释放动态链接库

XDll_Load(Dll相对路径文件名);//加载动态链接库

功能:释放或加载动态链接库

参数:Dll相对路径文件名

例如:XDll_Load("autop\qml\xxxxx.dll");

XDll_Exec(Dll相对路径文件名,

函数名,K线缓冲区序号,输出缓冲区序号,

参数1有效位置,参数1,参数2,参数3,参数4);//调用库函数

功能:调用库函数

参数:

1.Dll相对路径文件名

2.函数名(dll完全出口函数名,例如在大智慧中是macd,一般完全函数名是_macd)

3.K线缓冲区序号 指的是与历史数据库接口相对应k线数据缓冲区的序号0,1,2

4.输出缓冲区序号(可省) 指定调用库函数的输出缓冲区的序号,为0--9(可以是10个输入输出缓冲区中的任何一个)

默认为0

5.参数1有效位置(可省) 当有参数1时设定参数1的性质,<0时指定参数1是常数输入,这时参数1就是输入数据

当其>=0时,参数1就是选定做输入缓冲区的输入输出缓冲区序号,在库函数调用前一定要设置好预定数据

本参数值指定该系列输入数据的有效起始位置

6.参数1  输入参数,当其明确输入时,与上一参数配合,省略时,库函数调用输入参数为空

6.参数2,参数3,参数4 输入参数,当其明确输入时,将作为库函数调用参数,省略时,库函数对应调用参数为空

例如:XDll_Exec("autop\qml\xxxxx.dll","_kxian",0,0);//调用库函数

XDll_DBufDelete();//删除历史数据接口对应k线数据缓冲区

XDll_DBufCreate(开始位置,结束位置);//创建历史数据接口对应k线数据缓冲区,并调入数据

XDll_GetKXData(数据索引,k线数据编号0.t.1.o.2.h.3.l.4.c.5.v);//获取历史数据接口对应k线数据缓冲区数据

XDll_GetIOData(输入输出数据缓冲区号0..9,数据索引);//获取历史数据接口对应数据缓冲区数据

XDll_SetIOData(输入输出数据缓冲区号0..9,数据索引,数据);//设置历史数据接口对应数据缓冲区数据

XDll_CopyIOData(源缓冲区号,目的缓冲区号);//拷贝历史数据接口对应数据缓冲区数据

XDll_ClearIOData(缓冲区号);//清除历史数据接口对应数据缓冲区数据

功能:历史数据接口对应k线数据缓冲区操作,具体功能看上面标示

参数:

1.开始位置 对应历史数据接口中的数据开始位置

2.结束位置 对应历史数据接口中的数据结束位置,-1时将直接取值为最后位置

当开始与结束位置的k线根数大于480时,系统会自动将开始位置裁剪为结束位置-450

3 数据索引 等同历史数据库接口索引

4.其他参数同表面意思

注意:

XDll_DBufCreate函数可以连续调入,并填入数据,其返回值为新的数据根数

在程序中可用

if(XDll_DBufCreate(0,-1))

{

XDll_Exec("autop\qml\xxxxx.dll","_kxian",0,0);//调用库函数 //

.....

}

简单测试代码为:

OpenLsLib("m1005",64,4,0);

XDll_DBufCreate(0,-1);//创建历史数据接口对应k线数据缓冲区,并调入数据

XDll_Load("autop\qml\xxxxx.dll");//加载动态链接库

XDll_Exec("autop\qml\xxxxx.dll","_kxian",0,0);//调用库函数

......................

int m_daya=XDll_GetIOData(0,m_dsp_dir);

#ifndef __DzhFUNC_H_INCLUDE

#define __DzhFUNC_H_INCLUDE

#ifdef __cplusplus

extern "C"

{

#endif //__cplusplus

///

//分析周期

enum DATA_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 //多日线

};

///

//基本数据

typedef struct tagSTKDATA

{

time_t m_time; //时间,UCT

float m_fOpen; //开盘

float m_fHigh; //最高

float m_fLow; //最低

float m_fClose; //收盘

float m_fVolume; //成交量

float m_fAmount; //成交额

WORD m_wAdvance; //上涨家数(仅大盘有效)

WORD m_wDecline; //下跌家数(仅大盘有效)

} STKDATA;

//扩展数据,用于描述分笔成交数据的买卖盘

typedef union tagSTKDATAEx

{

struct

{

float m_fBuyPrice[3]; //买1--买3价

float m_fBuyVol[3]; //买1--买3量

float m_fSellPrice[3]; //卖1--卖3价

float m_fSellVol[3]; //卖1--卖3量

};

float m_fDataEx[12]; //保留

} STKDATAEx;

/

/

//函数数据结构

typedef struct tagCALCINFO

{

const DWORD m_dwSize; //结构大小

const DWORD m_dwVersion; //调用软件版本(V2.10 : 0x210)

const DWORD m_dwSerial; //调用软件序列号

const char* m_strStkLabel; //股票代码

const BOOL m_bIndex; //大盘

const int m_nNumData; //数据数量(pData,pDataEx,pResultBuf数据数量)

const STKDATA* m_pData; //常规数据,注意:当m_nNumData==0时可能为 NULL

const STKDATAEx* m_pDataEx; //扩展数据,分笔成交买卖盘,注意:可能为 NULL

const int m_nParam1Start; //参数1有效位置

const float* m_pfParam1; //调用参数1

const float* m_pfParam2; //调用参数2

const float* m_pfParam3; //调用参数3

const float* m_pfParam4; //调用参数3

float* m_pResultBuf; //结果缓冲区

const DATA_TYPE m_dataType; //数据类型

const float* m_pfFinData; //财务数据

} CALCINFO;

///

//示例函数,使用时用实际名称替换

__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData);

__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData);

__declspec(dllexport) int WINAPI MYMACLOSE_CALC_PREV(CALCINFO* pData);

__declspec(dllexport) int WINAPI MYMAVAR_CALC_PREV(CALCINFO* pData);

#ifdef __cplusplus

}

#endif //__cplusplus

#endif //__DZHFUNC_H_INCLUDE

// FxjFunc.cpp : Defines the entry point for the DLL application.

//

#include "stdafx.h"

#include "FxjFunc.h"

BOOL APIENTRY DllMain( HANDLE hModule,

DWORD ul_reason_for_call,

LPVOID lpReserved

)

{

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

case DLL_THREAD_ATTACH:

case DLL_THREAD_DETACH:

case DLL_PROCESS_DETACH:

break;

}

return TRUE;

}

//计算收盘价的均价,一个常数参数,表示计算周期

//调用方法:

// MYMACLOSE(5)

__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData)

{

float f,fTotal;

int nPeriod,i,j;

if(pData->m_pfParam1 && //参数1有效

pData->m_nParam1Start<0 && //参数1为常数

pData->m_pfParam2==NULL) //仅有一个参数

{

f = *pData->m_pfParam1;

nPeriod = (int)f; //参数1

if(nPeriod>0)

{

for(i=nPeriod-1;im_nNumData;i++) //计算nPeriod周期的均线,数据从nPeriod-1开始有效

{

fTotal = 0.0f;

for(j=0;j

fTotal += pData->m_pData[i-j].m_fClose;

pData->m_pResultBuf[i] = fTotal/nPeriod; //平均

}

return nPeriod-1;

}

}

return -1;

}

__declspec(dllexport) int WINAPI MYMACLOSE_CALC_PREV(CALCINFO* pData)

{

if(pData->m_pfParam1 && pData->m_nParam1Start<0)

{

float f = *pData->m_pfParam1;

return ((int)f) - 1;

}

return 0;

}

//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期

//调用方法:

// MYMAVAR(CLOSE-OPEN,5)

__declspec(dllexport) int WINAPI MYMAVAR(CALCINFO* pData)

{

float f,fTotal;

const float* pValue;

int nPeriod,nFirst,i,j;

if(pData->m_pfParam1 && pData->m_pfParam2 && //参数1,2有效

pData->m_nParam1Start>=0 && //参数1为序列数

pData->m_pfParam3==NULL) //有2个参数

{

pValue = pData->m_pfParam1; //参数1

nFirst = pData->m_nParam1Start; //有效值

f = *pData->m_pfParam2;

nPeriod = (int)f; //参数2

if(nFirst>=0 && nPeriod>0)

{

for(i=nFirst+nPeriod-1;im_nNumData;i++)

{

fTotal = 0.0f;

for(j=0;j

fTotal += pData->m_pData[i-j].m_fClose;

pData->m_pResultBuf[i] = fTotal/nPeriod; //平均

}

return nFirst+nPeriod-1;

}

}

return -1;

}

__declspec(dllexport) int WINAPI MYMAVAR_CALC_PREV(CALCINFO* pData)

{

if(pData->m_pfParam2)

{

float f = *pData->m_pfParam2;

return ((int)f) - 1;

}

return 0;

}

大智慧c语言dll,调用大智慧dll,简单支持大智慧公式dll接口相关推荐

  1. 易语言如何调用c dll文件,易语言调用C++写的DLL

    直接调用会弹出堆栈错误的信息,原因是VS默认是__cdcel方式,而易语言是__stdcall,所以调用约定不一致导致堆栈错误. 解决方案很简单,易语言声明DLL函数时"在库中对应命令名&q ...

  2. ATL--创建简单的ATL之dll工程,添加类和类的接口并在MFC中调用

    资源打包 开发环境 Windows Server 2012 VS2010 Sp1 番茄助手 创建ATL简单dll工程 1.打开VS2010,新建ATL COM 项目,步骤:"文件" ...

  3. 易语言c调用,易语言调用C++编写的DLL

    511遇见网站最近在录制一套易语言编写DLL及调用和Hook,今天记录一下使用VS2015编写一个C++的Dll,易语言来调用. 步骤: 1.启动VS2015 2.创建工程 3.Visual C++ ...

  4. C语言游戏外挂:C++简单 DLL 注入超级玛丽!

    通过C语言编写一个DLL文件和一个EXE文件,其中DLL包含作弊功能,运行EXE后将DLL注入游戏,使得游戏仅靠自身进程便可以实现作弊功能. 下面是小编整理好的一套C/C++资料,加小编C/C++编程 ...

  5. c语言怎么调用dll文件

    from:http://zhidao.baidu.com/question/479621352.html dll调用: (1)一般动态链接库有头文件声明h文件,lib,dll:这三个文件都用:使用的时 ...

  6. 在C#调用C++的DLL简析(二)—— 生成托管dll

    写操作之前,还是扼要的说一下托管与非托管C++的区别好了,其实我也并没有深入了解过托管C++的特点所在,其最大的特征就是可以由系统来调试回收相关的代码资源,跟C#的特性一样,只是编程风格跟C++类似而 ...

  7. 使用Jna调用dll函数库(java使用jna对接硬件接口)

    记录一次项目经历,新公司开发过程中遇到了硬件对接的需求,没有接触过这方面的我一想到这些就很头大,花了几天时间来专门研究一下这个.一般硬件购买后厂家都会附赠一些开发文档,有各种语言的demo,里面其实重 ...

  8. 如何查看exe或dll调用了什么dll

    [转载]如何查看exe或dll调用了什么dll呢 已有 19410 次阅读 2014-4-17 21:08|系统分类:科研笔记|文章来源:转载 Dependency Walker使用说明 在Windo ...

  9. iSpy结合yolo复杂环境下DLL调用路径攻略

    前阵子接手了一个项目,客户是一个工厂,比较重视安全生产,整个厂区和车间安装了200多个摄像头,用的是海康的网络摄像头+硬盘存储服务器.目的是为了监控在生产车间生产人员是否正确配戴安全帽,是否有人吸烟, ...

  10. [转]使用C#调用金诚信71x系列读卡器的DLL

    本文转自:http://blog.csdn.net/cnhyong/archive/2008/01/24/2064167.aspx 原文如下:   由于项目需要,我必须使用C#来操作读卡器,读卡器只提 ...

最新文章

  1. rodbc 连接oracle,在R中加密密码 – 使用RODBC连接到Oracle DB
  2. [BUUCTF-pwn]——jarvisoj_test_your_memory
  3. 工业级光电转换器产品介绍
  4. 基于matlab的大米,大米颗数计算MATLAB软件
  5. 网络层核心:路由和路由生成算法
  6. 02-Http请求与响应全解
  7. sendrequest ajax数据返回,jquery ajax 还没有调用send()方法 返回的状态码XMLHttpRequest.status 是0 ,怎么解决?...
  8. 如何营造游戏的打击感(一)
  9. 如何用亿图软件绘制甘特图
  10. 什么是X86和X86-64
  11. 数学建模比赛经验总结
  12. 世界科学、技术、工业革命趋势分析
  13. Python绘制太阳花(初学者)
  14. java公路车的气嘴_自行车气嘴的分类、特性和打气的方法
  15. 基于html5的音乐网站开题,开题报告基于HTML5的音乐网站.doc
  16. minio对象存储单机部署并设置开机自启动及集成spring boot进行(创建删除桶)(上传下载删除文件)
  17. Spring Boot 启动 出现异常The bean xxx could not be injected as a xx.xxxx because it is a JDK dynami
  18. 网易教育论坛:“状元”在美读大学:中国孩子都被教傻了
  19. Unity 一键给所有按钮添加按钮音效
  20. 分享 最全的拉丁语系名字列表,详细到了字根出处,男孩们以后别再起什么Kevin, Mike, Jack了

热门文章

  1. 【学生考勤管理系统】 学生考勤打卡系统 学生打卡学生考试系统 学生OA系统
  2. 用matlab画相频曲线_用MATLAB进行系统频率特性曲线绘制
  3. 三、用python实现平稳时间序列的建模
  4. 探讨基于球谐函数的全局光照
  5. http keepalive原理
  6. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(十一)——带隙基准
  7. 没有电脑基础能学计算机专业吗,没有绘画基础想学电脑绘画该怎么学?
  8. 商品库存管理系统(c语言)
  9. java 映射类的方法_java什么是映射
  10. Win7安装msu文件失败引发的一系列问题