加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

通达信DLL插件开发

(2016-07-15 10:51:37)
标签:

通达信开发

通达信dll开发

股票自定义公式

分类: 股市生涯

   炒股多年,亏钱多年,基本退出股市.但最近还是很为难的帮一个股市分析师做了一个项目,那分析师大体是需要保护他写的一些公式,据他说他那公式可值钱了,很准,哈哈...

   他用通达信软件,这个软件可以自己编写公式,另还支持用户自定义的DLL的功能,我觉得非常不错,今天我们就来讨论一下,这个自定义的DLL能做什么呢?
   我个人觉得功能有保密功能,公式扩展功能,控制功能.
   来把通达信的DEMO程序学习一下吧,先上它的代码,主要是它的两个重要的头文件及实现文件,顺便把几个重要的地方注释一下.
//PluginTCalcFunc.h
#ifndef __PLUGIN_TCALC_FUNC
#define __PLUGIN_TCALC_FUNC
#pragma pack(push,1) 
//函数(数据个数,输出,输入a,输入b,输入c)
//这是通达信调用函数的标准要求,如果我们要自定义,一定要按此函数标准来写.
typedef
void(*pPluginFUNC)(int,float*,float*,float*,float*);
//返回给通达信调用我们函数的封装类.这个类可以记录我们所有定义过的函数
typedef struct tagPluginTCalcFuncInfo
{
unsigned short nFuncMark;//函数编号
pPluginFUNC pCallFunc;//函数地址
}PluginTCalcFuncInfo;
typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);
 
#pragma pack(pop)
#endif
//PluginTCalcFunc.cpp
#include "stdafx.h"
#include "TCalcFuncSets.h"
//生成的dll及相关依赖dll请拷贝到通达信安装目录的T0002/dlls/下面,再在公式管理器进行绑定
//我们定义的函数必须要符合typedef
void(*pPluginFUNC)(int,float*,float*,float*,float*);函数要求
//不符合的话,通达信是不能正常调用的
void TestPlugin1(int DataLen,float* pfOUT,float* pfINa,float*
pfINb,float* pfINc)
{
   
 //我们可以在这里实现各种我们需要的逻辑,把需要返回的结果返回给通达信
for(int i=0;i
pfOUT[i]=i;
}
//我们定义的函数必须要符合typedef
void(*pPluginFUNC)(int,float*,float*,float*,float*);函数要求
//不符合的话,通达信是不能正常调用的
void TestPlugin2(int DataLen,float* pfOUT,float* pfINa,float*
pfINb,float* pfINc)
{
   
 //我们可以在这里实现各种我们需要的逻辑,把需要返回的结果返回给通达信
for(int i=0;i
{
pfOUT[i]=pfINa[i] pfINb[i] pfINc[i];
pfOUT[i]=pfOUT[i]/3;
}
}
//加载的函数
PluginTCalcFuncInfo g_CalcFuncSets[] = 
{
{1,(pPluginFUNC)&TestPlugin1},
{2,(pPluginFUNC)&TestPlugin2},
     
 //在这里我们可以增加更多的函数.
{0,NULL},
};
//导出给TCalc的注册函数
//
BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun)
{
if(*pFun==NULL)
{
(*pFun)=g_CalcFuncSets;
return TRUE;
}
return FALSE;
}
   
 其实这种设计非常好,简单易用,大概思路就是使用者如果要开发自己的公式或者其它功能,写的函数就必须要符合指定的要求(制定标准).
   
开发的时候拿着它的框架只需要做两步,一是写一个符合它要求的函数,typedef
void(*pPluginFUNC)(int,float*,float*,float*,float*);
第二是在g_CalcFuncSets里增加我们新定义的函数,照着来写就行了.具体功能细节就不多说了,有一些是商业机密.如果有遇到有什么问题可以留言或者联系扣扣:1171776409

遇到DLL方面的开发可以参考 通达信DLL遇到问题之解决办法

另外想学习完整教程请前往腾讯课堂:通达信DLL编写入门到精通教程
   

0

阅读 收藏 喜欢 打印举报/Report
前一篇:感激
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有