量化交易系统开发代码部署方案丨合约量化系统开发技术成熟源码流程

简介: 量化交易系统开发代码部署方案丨合约量化系统开发技术成熟源码流程

回调函数其实就是在一个函数里面调用了另一个函数,而调用哪个函数是由调用回调函数的人决定,举个简单例子:

int add(int a,int b)
{

return a+b;

}
int sub(int a,int b)
{

return a-b;

}
typedef int (*pfunc)(int a,int b);
int func_callback(pfunc p,int a,int b)
{

return(*p)(a,b);

}
void main(void)
{

func_callback(add,1,2);//return 3
func_callback(sub,2,1);//return 1

}
复制
这里的func_callback就是回调函数,它的执行结果根据传进来的函数指针p的实际指向函数不同而不同,即传入加法add得到的是加法计算,传入减法sub得到的是减法计算结果。

回调函数的使用使得上层调用时仅需要同一个接口(func_callback)即可,而根据传入的参数不同而调用到不同的底层结果。

例如add和sub是操作系统或BSP提供的一个功能。我们希望上层应用在调用时具有拓展性,即如果底层新增了新的功能例如乘除法(mul,div),我们无需修改上层应用的接口,仅需在传入参数时增加新的参数(mul,div)即可。这样底层提供的API具有了通用性,应用层无需修改调用api的接口即可增加新的使用方式。

回调函数还有一个很好用的功能是和表驱动法结合:

表驱动法
表驱动法顾名思义就是类似数据库查表的方式实现功能,简单地说,将程序中的分支判断变为查表操作,简单例子:

char getCharfromHex(unsigned char ucNum)
{

char ucNumChar = 0;
if(ucNum < 10)
{
    ucNumChar = ucNum + '0';
}
else if(ucNum == 10)
{
    ucNumChar = 'A';
}
else if(ucNum == 11)
{
    ucNumChar = 'B';
}
else if(ucNum == 12)
{
    ucNumChar = 'C';
}
else if(ucNum == 13)
{
    ucNumChar = 'D';
}
else if(ucNum == 14)
{
    ucNumChar = 'E';
}
else if(ucNum == 15)
{
    ucNumChar = 'F';
}
else
{
    return 0;    
}
return ucNumChar;

}
复制
上面的操作是将一个16进制数变为ASCII表示的字符,如果使用表驱动,则可以实现为:

CHAR aNumChars[] = {'0', '1', '2', /3~9/'A', 'B', 'C', 'D', 'E', 'F'};
CHAR ucNumChar = aNumChars[ucNum % sizeof(aNumChars)];
复制
这样一个较多的if else或者switch case语句变为简单的查表操作。

使用表驱动法,则可以将很多功能接口进行排列后按查表方式进行执行,当功能接口较多时能够比switch语句更加简洁。

由表驱动和回调函数组成的通用功能接口
首先将对外的功能进行一个排列,构造一个功能接口表,并对功能接口编码(dispatch.h):

typedef enum {

ChipCheck = 0x41,
DataTrans = 0x01,
/*others*/
DataSave = 0x77,

} FunctionCode_t;
复制
根据功能函数的格式,声明一个函数指针(dispatch.h):

typedef u32 (pFunc)(u8 cmd_in, u8 *cmd_out);
复制
实现功能函数,注意功能函数的接口尽量保持一致,可以通过传入一个通用的结构体或指针数组方式,具体功能处理上的区别接口内部对数据进行细分处理。

头文件(dispatch.h):

u32 func_ChipCheck(u8 cmd_in, u8 cmd_out);
u32 func_DataTrans(u8 cmd_in, u8 cmd_out);
u32 func_DataSave(u8 cmd_in, u8 cmd_out);

相关文章
|
区块链 存储 数据库
量化合约跟单系统开发源码部署|量化交易系统开发(成熟案例)
在去中心化架构下,没有中心化机构的垄断,每个节点都是独立的
合约量化开发源码搭建流程介绍&量化合约成熟系统开发部署方案
合约量化开发源码搭建流程介绍&量化合约成熟系统开发部署方案
117 0
阐述量化合约系统开发技术讲解方案(代码)
阐述量化合约系统开发技术讲解方案(代码)
123 0
|
人工智能
量化合约系统开发(案例项目)丨合约量化系统开发(方案成熟)
 Artificial intelligence(AI)refers to the ability of computer systems to perform tasks similar to human intelligence.It is a complex technology,which constantly adjusts and improves its own algorithm by inputting a large amount of data into the algorithm for learning,so as to continuously optimize i
|
7月前
|
监控 安全 测试技术
|
存储 JSON 机器人
合约量化机器人系统开发技术理念及成熟代码Demo
合约量化机器人系统开发技术理念及成熟代码Demo
141 0
|
算法 搜索推荐 机器人
浅谈量化合约机器人系统开发策略逻辑(成熟源码)部署方案
浅谈量化合约机器人系统开发策略逻辑(成熟源码)部署方案
342 0
|
传感器 存储 安全
what合约量化系统开发源码搭建丨量化合约系统开发技术搭建
what合约量化系统开发源码搭建丨量化合约系统开发技术搭建
127 0
|
机器人
YYDS量化合约系统开发《源码》部署方案
This article is compiled and released by WeChaT: kaifa873, which is only for reference of project development requirements! telegram @ sleu88
95 0
|
机器学习/深度学习 数据采集 监控
合约量化系统开发策略详细丨合约量化系统开发规则指南/成熟技术/案例设计/方案项目/源码功能
合约量化系统的开发策略指的是设计和实现用于执行自动化交易的策略的方法和原则

热门文章

最新文章