博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大智慧c语言dll,调用大智慧dll,简单支持大智慧公式dll接口
阅读量:5869 次
发布时间:2019-06-19

本文共 5610 字,大约阅读时间需要 18 分钟。

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

请问类似这样的调用是要写到哪里,自己的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;

}

转载地址:http://hbtnx.baihongyu.com/

你可能感兴趣的文章
test
查看>>
按钮上一个下一个点击-dom对象显示-代码简单-i累加给eq获取
查看>>
网页分享插件
查看>>
让eclipse有jquery自动提示
查看>>
clang 3.9.1 centos 7 编译安装
查看>>
JVM的持久代——何去何从?
查看>>
iOS开发中First Responser,protocol实现的deleagere,通知机制的设计
查看>>
一,撸基础篇系列,JAVA的那些数据结构应用
查看>>
VCRadioButton
查看>>
DSFavIconManager
查看>>
TCTweetComposeViewController
查看>>
eclipse 中修改 M2_REPO的值(转)
查看>>
开源 免费 java CMS - FreeCMS-标签 link
查看>>
FreeCMS视频教程 栏目信息访问权限设置
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
I2C总线传输协议
查看>>
Git的原理简介和常用命令
查看>>
各种距离(Distance)
查看>>
性格影响命运
查看>>
Mysql Explain分析
查看>>