一种量化策略的检测方法、装置、设备及存储介质与流程
未命名
09-22
阅读:86
评论:0

1.本技术实施例涉及数据处理技术领域,具体涉及一种量化策略的检测方法、装置、设备及存储介质。
背景技术:
2.对于量化功能而言,用户可以基于客户端提供的图形化控件来设计量化策略,也可以通过在客户端提供的代码编辑器内编写相应的量化策略代码来设计量化策略。
3.考虑到程序人员控件配置和代码编写能力存在差异,使得自定义的量化策略可能存在一些设计错误,而无法保证量化策略的成功运行。所以,为了有效避免量化策略在运行过程中的报错,需要检测量化策略中是否存在控件配置或者代码编写错误。
4.然而,目前的量化策略检测方式通常仅支持检测量化策略是否存在基本的语法错误,而无法实现量化策略的全面错误检测,使得量化策略检测存在一定的局限性。
5.申请内容
6.本技术实施例提供了一种量化策略的检测方法、装置、设备及存储介质,实现任一量化策略在实际运行前的静态语义检测,提升量化策略检测的全面性和及时性,确保量化策略检测的准确性。
7.第一方面,本技术实施例提供了一种量化策略的检测方法,该方法包括:
8.响应于任一量化策略的检测指令,获取所述量化策略对应的量化策略代码和已构建的量化接口配置信息;
9.将所述量化策略代码转化为抽象语法树;
10.利用所述量化接口配置信息对所述抽象语法树进行静态语义检测,得到对应的量化策略报错信息。
11.第二方面,本技术实施例提供了一种量化策略的检测装置,该装置包括:
12.量化策略获取模块,用于响应于任一量化策略的检测指令,获取所述量化策略对应的量化策略代码和已构建的量化接口配置信息;
13.代码转化模块,用于将所述量化策略代码转化为抽象语法树;
14.量化策略检测模块,用于利用所述量化接口配置信息对所述抽象语法树进行静态语义检测,得到对应的量化策略报错信息。
15.第三方面,本技术实施例提供了一种电子设备,该电子设备包括:
16.处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行本技术第一方面中提供的量化策略的检测方法。
17.第四方面,本技术实施例提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行如本技术第一方面中提供的量化策略的检测方法。
18.第五方面,本技术实施例提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如本技术第一方面中提供的量化策略的检测方法。
19.本技术实施例提供的技术方案,对于任一量化策略而言,支持在量化策略实际运
行前对其发起相应检测。那么,在接收到任一量化策略的检测指令后,首先获取该量化策略对应的量化策略代码和已构建的量化接口配置信息,并将量化策略代码转换为抽象语法树。然后,利用量化接口配置信息来对抽象语法树进行静态语义检测,即可得到对应的量化策略报错信息,从而实现量化策略在实际运行前的静态语义检测,有效避免量化策略在运行过程中的报错,提升量化策略检测的全面性和及时性,从而确保量化策略检测的准确性。
附图说明
20.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1为本技术实施例提供的用于构建量化策略的量化功能界面的界面示意图;
22.图2为本技术实施例提供的一种量化策略的检测方法的流程图;
23.图3a为本技术实施例提供的一种量化策略检测过程的原理示意图;
24.图3b为本技术实施例提供的另一种量化策略检测过程的原理示意图;
25.图4为本技术实施例提供的另一种量化策略的检测方法的流程图;
26.图5为本技术实施例提供的一种量化策略的检测装置的原理框图;
27.图6为本技术实施例提供的电子设备的示意性框图。
具体实施方式
28.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
29.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
30.对于各个量化组件的量化功能而言,用户可以基于客户端提供的图形化控件来设计量化策略,也可以通过在客户端提供的代码编辑器内编写相应的量化策略代码来设计量化策略,以此客观分析交易风险和收益。
31.在介绍本技术提供的具体技术方案之前,首先可以对量化策略的实际设计过程进行说明。
32.在业务交易平台内可以配置对应的量化控件,使得用户可以通过触发量化控件来进入到客户端提供的量化功能界面内。如图1所示,该量化功能界面内可以包括但不限于图形化配置窗口、代码配置窗口和检查报错窗口。
33.其中,图形化配置窗口支持用户通过拖拽各个图形化控件,并使用逻辑连线来连接相应的图形化控件,以在各个图形化控件之间构建相应的逻辑路径。而且,对于每个图形化控件,用户可以按照图形化控件的特点为其配置相应的控件参数,从而设计出对应的量化策略。
34.代码配置窗口可以支持用户按照量化逻辑,在其内编写各种自定义代码,来设计对应的量化策略,保证量化策略的设计灵活性。
35.检查报错窗口可以支持量化策略检查后的报错显示,以便用户能够直观产看到所设计的量化策略存在的设计错误,以便及时量化策略进行修正,确保量化策略的成功运行。
36.而且,在设计出量化策略后,考虑到程序人员控件配置和代码编写能力存在差异,使得量化策略可能存在一些设计错误,而无法保证量化策略的成功运行。所以,为了保证量化策略的成功运行和有效避免量化策略在运行过程中的报错,量化功能界面内还可以配置有“运行策略”控件和“检查策略”控件。用户在图形化配置窗口或者代码配置窗口内设计出量化策略后,可以通过触发“运行策略”控件,来运行该量化策略。
37.那么,为了有效避免量化策略在运行过程中的报错,在量化策略运行前,用户可以通过触发“检查策略”控件,来发起该量化策略的检测指令,以在量化策略实际运行前即可执行静态语义检测,从而得到对应的量化策略报错信息。
38.那么,在完成对任一量化策略的检测任务,而得到对应的量化策略报错信息后,可以在检查报错窗口内显示该量化策略报错信息,使得用户及时修正量化策略。
39.目前,量化策略检测方式通常仅支持检测量化策略是否存在基本的语法错误,而无法实现量化策略的全面错误检测,使得量化策略检测存在一定的局限性。所以,为了解决上述技术问题,本技术可以在接收到任一量化策略的检测指令后,可以利用已构建的量化接口配置信息对该量化策略对应的量化策略代码所转换后的抽象语法树进行静态语义检测,来得到对应的量化策略报错信息,从而实现量化策略在实际运行前的静态语义检测,有效避免量化策略在运行过程中的报错。
40.接下来对于本技术提供的具体技术方案进行详细阐述:
41.图2为本技术实施例提供的一种量化策略的检测方法的流程图。该方法可以由本技术提供的量化策略的检测装置来执行。其中,量化策略的检测装置可以通过任意的软件和/或硬件的方式实现。示例性地,该量化策略的检测装置可以应用于任一电子设备中,该电子设备可以包括但不限于平板电脑、手机(如折叠屏手机、大屏手机等)、可穿戴设备、车载设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)、智能电视、智慧屏、高清电视、4k电视、智能投影仪等各类计算设备,本技术对电子设备的具体类型不作任何限制。
42.具体的,如图2所示,该方法可以包括如下步骤:
43.s210,响应于任一量化策略的检测指令,获取量化策略对应的量化策略代码和已构建的量化接口配置信息。
44.在量化策略实际运行前,在客户端提供的量化功能界面内,对于任一量化策略,用户可以通过触发“检查策略”控件,来发起对该量化策略的检测操作,从而生成该量化策略的检测指令。
45.在一些可实现方式中,用户可以在完成任一量化策略的整个设计后,通过触发“检
查策略”控件,来生成对该量化策略的检测指令。那么,在完成该量化策略的检测任务后,即可一次性得到全部的量化策略报错信息,使得用户对量化策略进行一次性修正。
46.在另一些可实现方式中,用户也可以在对任一量化策略进行设计前,通过触发“检查策略”控件,来生成对该量化策略的检测指令。那么,在该量化策略的整个设计过程中,本技术可以对该量化策略进行实时检测,从而得到该量化策略的实时报错信息,使得用户能够对量化策略中实时设计好的局部策略进行修正,确保量化策略的及时修正。
47.对于任一量化策略的检测任务而言,考虑到量化策略可以由用户通过客户端提供的图形化控件或编写代码来设计得到。在接收到任一量化策略的检测指令后,为了保证量化策略的全面检测,本技术首先会基于量化策略的设计方式,来获取该量化策略对应的量化策略代码。
48.可以理解的是,量化策略的设计方式不同,量化策略代码的来源也就不同。本技术中,量化策略代码可以包括但不限于通过图形化控件构建量化策略时生成的脚本代码和通过代码编辑器编写的自定义代码中的至少一种。也就是说,如果用户通过图形化控件来设计量化策略,那么量化策略代码可以为按照各个图形化控件间的逻辑连接关系和配置参数,在后台自动生成的脚本代码。而如果用户通过编写代码来设计量化策略,那么量化策略代码可以为用户通过代码编辑器在代码配置窗口内编写的自定义代码。
49.考虑到量化策略代码中会使用多种代码函数、变量和常量等,而用户代码设计能力差异可能导致量化策略代码中的代码函数、变量、常量等存在不同形式的使用错误。所以,为了实现量化策略的全面纠错,本技术会预先确定量化策略代码中可能经常使用到的一些代码函数,并将各个代码函数封装为相应的量化接口,以便在量化策略代码中实现函数调用。然后,通过分析各个量化接口的函数类型和其内可以使用到的变量和参数等信息的适合类型,作为各个量化接口的业务使用规则。进而,按照各个量化接口的业务使用规则,即可预先构建出本技术中的量化接口配置信息。该量化接口配置信息中可以包括但不限于各个量化接口的函数类型和其内可以使用到的变量和参数等信息的适合类型等。而且,该量化接口配置信息可以按照结构化表格的格式进行预先存储。
50.所以,在接收到任一量化策略的检测指令后,本技术在获取该量化策略对应的量化策略代码时,还会获取预先构建好的量化接口配置信息,以便通过量化接口配置信息来判断量化策略代码中已调用的各个代码函数及其内的变量参数等是否存在使用错误。
51.s220,将量化策略代码转化为抽象语法树。
52.为了保证量化策略的全面检测,需要对量化策略对应的量化策略代码进行全面解析,以在分析量化策略代码中是否存在语法错误的同时,还可以支持识别量化策略代码中是否存在语义错误。所以,为了保证量化策略代码的成功语义检测,本技术首先会对量化策略代码进行字符串解析,从而将量化策略代码转化为便于程序分析的抽象语法树(abstract syntax tree,简称为ast)。
53.其中,该抽象语法树可以为量化策略代码的抽象语法结构的树状表示,树上的每个节点都可以表示量化策略代码中的一种结构。
54.在一些可实现方式中,可以采用astroid库对量化策略代码内的各种语法结构进行解析,而将其转化为抽象语法树。
55.s230,利用量化接口配置信息对抽象语法树进行静态语义检测,得到对应的量化
策略报错信息。
56.其中,静态语义检测是指不运行量化策略代码而实现对量化策略代码的缺陷检测。
57.在一个实施例中,利用量化接口配置信息对抽象语法树进行静态语义检测,具体可以通过对量化策略代码转化后的抽象语法树中各个节点表示的代码结构进行语义解析,无需实际运行量化策略代码,即可推断出量化策略代码中实际使用的调用对象,并识别具体的代码语义内容。然后,利用量化接口配置信息中为各个量化接口设定的业务使用规则,判断抽象语法树中各个节点表示的代码结构是否相应量化接口的业务使用规则,以此对抽象语法树中各个节点表示的代码结构进行相关的语义检测,从而识别出抽象语法树中不符合相应量化接口的业务使用规则的节点。然后,按照抽象语法树中不符合相应量化接口的业务使用规则的节点表示的代码结构,生成对应的量化策略报错信息。
58.其中,量化策略报错信息可以指示量化策略中存在设计错误的具体位置和错误类型,以便用户及时对量化策略进行修正。
59.作为本技术中的一种可选实现方案,业务交易平台可以通过策略检测进程来检测用户在量化功能界面内对于任一量化策略发起的检测指令。
60.其中,如图3a所示,策略检测进程可以由界面响应主线程和策略响应子线程两部分组成。
61.通过界面响应主线程可以检测用户在量化功能界面内对于任一量化策略所执行的各项界面操作指令,包括但不限于用户对于任一量化策略发起的检测指令。
62.然后,为了避免影响到用户在量化功能界面内的其他用户操作,对于任一量化策略的检测指令,界面响应主线程会将该检测指令发送给策略响应子线程,由该策略响应子线程来执行实际的量化策略检测任务,以便界面响应主线程无需负责额外的量化策略检测任务,可以继续响应量化功能界面内的其他用户操作,来异步执行其他的操作任务,并等待该量化策略的检测任务完成即可,从而确保各项界面操作的及时响应。
63.策略响应子线程在接收到任一量化策略的检测指令后,可以通过策略响应子线程收集该量化策略的量化策略代码信息,来创建该量化策略的检测任务。然后,如图3a所示,策略响应子线程可以调用代码分析进程来执行该量化策略的实际检测任务,以得到对应的量化策略报错信息。
64.也就是说,可以通过代码分析进程来实际执行本技术中s210-s230的步骤,得到对应的量化策略报错信息。其中,代码分析进程可以为python脚本进程,该python脚本进程可以通过预先构建的python脚本来执行量化策略的检测任务。
65.作为本技术中的一种可选实现方案,考虑到代码分析进程通过python脚本来完成量化策略的检测任务,那么每次量化策略检测时都需要重新调用代码分析进程,来启动一个新的python脚本执行量化策略检测任务,使得量化策略的检测效率和资源使用均比较低。
66.所以,为了保证量化策略检测的高效性和及时性,本技术会将该代码分析进程在业务交易平台内常驻。那么,对于任一量化策略的检测任务,本技术响应于任一量化策略的检测指令,可以通过常驻的代码分析进程调度执行该量化策略的检测任务,以得到对应的量化策略报错信息。然后,通过常驻的代码分析进程可以将量化策略报错信息反馈给策略
检测进程,以通过策略检测进程,在量化功能界面内显示该量化策略的量化策略报错信息。
67.也就是说,代码分析进程在业务交易平台内常驻后,如图3b所示,策略检测进程在接收到任一量化策略的检测指令后,可以通过将该量化策略的检测任务派发给常驻的代码分析进程内的通信模块。然后,常驻的代码分析进程可以通过该通信模块,将所接收到的各个量化策略的检测任务内部派发给代码分析进程内的任务调度模块。那么,通过代码分析进程内的任务调度模块,即可对各个量化策略的检测任务进行调度执行,以保证各个量化策略的检测任务的协调执行,从而得到各个量化策略的报错信息。
68.进而,代码分析进程在得到对应的量化策略报错信息后,可以通过其内的通信模块,将该量化策略报错信息反馈给策略检测进程内的策略响应子线程。然后,如图3a所示,策略检测进程内的策略响应子线程可以将量化策略报错信息异步通知给策略检测进程内的界面响应主线程,从而通过界面响应主线程将该量化策略报错信息显示在量化功能界面内,实现量化策略的准确检测。
69.本技术实施例提供的技术方案,对于任一量化策略而言,支持在量化策略实际运行前对其发起相应检测。那么,在接收到任一量化策略的检测指令后,首先获取该量化策略对应的量化策略代码和已构建的量化接口配置信息,并将量化策略代码转换为抽象语法树。然后,利用量化接口配置信息来对抽象语法树进行静态语义检测,即可得到对应的量化策略报错信息,从而实现量化策略在实际运行前的静态语义检测,有效避免量化策略在运行过程中的报错,提升量化策略检测的全面性和及时性,从而确保量化策略检测的准确性。
70.作为本技术中的一种可选实现方案,为了保证量化策略的全面检测,对于任一量化策略对应的量化策略代码转化成的抽象语法树来说,本技术可以从代码上下文逻辑和代码业务逻辑这两个维度来对抽象语法树进行静态语义检测,从而提升量化策略检测的全面性和准确性。
71.其中,代码上下文逻辑的检测可以包括但不限于量化接口必传参数是否缺失、入参参数类型是否有误、条件控件返回值检测等。代码业务逻辑的检测可以包括但不限于量化接口是否支持其内的已使用标的、已使用标的是否重名等。
72.下面结合图4,可以对于从代码上下文逻辑和代码业务逻辑这两个维度对抽象语法树进行静态语义检测的具体检测过程进行详细的解释说明。
73.图4为本技术实施例提供的另一种量化策略的检测方法的流程图,该方法具体可以包括如下步骤:
74.s410,响应于任一量化策略的检测指令,获取量化策略对应的量化策略代码和已构建的量化接口配置信息。
75.s420,将量化策略代码转化为抽象语法树。
76.s430,对抽象语法树进行解析,得到量化策略代码调用的目标接口和目标接口中的已使用标的。
77.在将量化策略代码转化为抽象语法树后,本技术可以借助astroid库对抽象语法树进行静态推理和分析,无需实际运行量化策略代码,即可确定出量化策略代码中实际调用的各个代码函数,作为本技术中的目标接口。而且,通过对各个目标接口中定义的成员变量进行分析,可以确定出目标接口中的已使用标的。
78.其中,本技术中的已使用标的可以包括但不限于运行标的、全局标的和固定标的
中的至少一种。
79.运行标的可以为在运行量化策略前指定的该量化策略可应用于的相应交易对象,例如同一量化策略应用于的多个不同股票等。
80.全局标的可以为在构建量化策略时所调用的任一代码函数内指定的可支持中途改变的某一变量。
81.固定标的可以为在构建量化策略时所调用的任一代码函数内指定的固定不可中途改变的某一常量。
82.在一些可实现方式中,对于量化策略代码调用的目标接口和目标接口中的已使用标的,本技术可以对抽象语法树进行解析,得到对应的接口调用节点,以确定量化策略代码调用的目标接口;根据接口调用节点下的标的信息,确定目标接口中的已使用标的。
83.其中,接口调用节点是指抽象语法树的各个节点中用于表示具体代码函数(也就是各个量化接口)的语法结构的部分特定节点。例如,对于全局标的所在的量化接口可以为用于定义全局变量的函数,如global_variables函数,或者,运行标的所在的量化接口可以为用于触发某一代码执行的函数,如trigger_symbols函数,两者均可以在抽象语法树中的functiondef节点下进行定义。也就是说,通过对任一量化策略对应的量化策略代码转化成的抽象语法树中的各个节点进行解析,来判断抽象语法树中各个节点是否表示量化策略代码中调用的具体接口,从而得到抽象语法树中对应的接口调用节点。然后,通过分析各个接口调用节点所表示的具体接口信息,来确定量化策略代码调用的各个目标接口。
84.而且,通过对抽象语法树中各个接口调用节点下的标的信息进行收集,即可确定出各个目标接口中的已使用标的。
85.可以理解的是,不同类型的目标接口可以定义不同的已使用标的。对于目标接口中的已使用标的,通常可以从抽象语法树中接口调用节点下定义的属性信息、命名信息和常量信息这几个变量中解析得到。
86.例如,假设目标接口为trigger_symbols函数时,通过分析trigger_symbols函数中定义的属性信息、命名信息和常量信息这几个成员变量信息,即可确定对应的运行标的。假设目标接口为global_variables函数时,通过分析global_variables函数中定义的属性信息、命名信息和常量信息这几个成员变量信息,即可确定对应的全局标的。
87.s440,利用量化接口配置信息中的接口定义,对目标接口进行上下文逻辑检测,得到对应的第一量化策略报错信息。
88.其中,接口定义是指对于各个量化接口预先定义好的具体代码属性信息,并定义可支持该量化接口被成功调用的函数格式、必要参数和参数类型等具体成员变量的信息;上下文逻辑检测是指对目标接口中各个成员变量的缺失情况、变量类型、条件返回值等在目标接口的整个上下文中的具体使用逻辑进行检测,以判断其是否符合该目标接口的具体定义。
89.在确定出量化策略代码调用的目标接口后,可以从量化接口配置信息中查找出对于该目标接口的接口定义。然后,利用该目标接口的接口定义来对该目标接口在量化策略代码中的具体调用内容进行检测,以判断该目标接口在量化策略代码中是否存在上下文逻辑的使用错误,从而得到对应的第一量化策略报错信息。
90.示例性的,对于目标接口的上下文逻辑检测,可以包括但不限于如下示例:
91.1)对目标接口中是否缺失必要参数(也就是必要的成员变量)进行检测
92.假设目标接口a中缺失某个必要参数a,那么第一量化策略报错信息可以为目标接口a缺少必要参数a。其中,如果存在多个必要参数缺失,那么第一量化策略报错信息中可以通过分隔符将缺失的多个必要参数隔开,而无需显示多条报错信息。
93.2)对目标接口中已定义的成员变量的参数类型进行检测
94.假设目标接口a中已定义的某一成员变量b的参数类型不符合目标接口中对该成员变量的参数定义,那么第一量化策略报错信息可以为目标接口a中的成员变量b的参数类型有误,请修改为正确的类型;例如,目标接口a中对成员变量b的参数类型的定义为浮点型数据,但量化策略代码中成员变量b实际的参数类型为整型数据,则目标接口a中的某一成员变量b不符合目标接口中对该成员变量的参数定义。其中,如果存在多个成员变量的参数类型有误,那么第一量化策略报错信息中可以分多行来分别提示每个成员变量的参数类型有误。
95.s450,利用量化接口配置信息中的标的适用类型,对目标接口中的已使用标的进行业务逻辑检测,得到对应的第二量化策略报错信息。
96.其中,标的适用类型是指在量化接口配置信息内对各个目标接口进行定义时,基于量化策略的业务需求额外配置的每个目标接口支持成功执行各类业务操作的业务数据类型。业务逻辑检测是指判断目标接口中已使用标的对应的业务数据类型是否为该目标接口预先设定的标的适用类型,以此确定该目标接口是否能够成功执行相应业务操作;例如,在量化策略中往往需要使用某一股票市场中某一股票的行情数据,在用于拉取行情数据的量化接口中,该量化接口的已使用标的应为具体的行情市场代码以及股票代码,若已使用标的中股票代码这一成员变量的具体变量值并非股票代码这一类型的数据,可对该成员变量(即已使用标的)进行报错。
97.在确定出各个目标接口中的已使用标的后,可以从量化接口配置信息中查找出对于该目标接口配置的标的适用类型。然后,利用该目标接口的标的适用类型,对该目标接口中的已使用标的进行校验,以判断目标接口中的已使用标的是否存在业务逻辑上的使用错误,从而得到对应的第二量化策略报错信息。具体地,可以先获取目标接口中的已使用标的对应的业务数据类型,进而对比已使用标的对应的业务数据类型与该目标接口配置的标的适用类型所指示的数据类型是否相同;也可以是先获取已使用标的具体的标的值,并获取该目标接口配置的标的适用类型对应的取值范围,进而判断已使用标的对应的标的值是否在标的适用类型对应的取值范围内。
98.以股票场景为例,假设用于拉取行情数据的目标接口a中的入参code中,包括已使用标的a行情市场代码以及已使用标的b股票代码,当已使用标的a或已使用标的b不可识别,即已使用标的a或已使用标的b的业务数据类型与标的适用类型所指示的数据类型不相同,那么第二量化策略报错信息可以为:代码第{}行:目标接口a的入参code有误,请参考股票代码的正确的写法,点击文字链可打开量化接口配置信息弹窗。其中,如果同一行有多个目标接口的code都有问题,分多条报错,例如,第二量化策略报错信息示例如下:"xx.00700"、"us.00700"。
99.或者,假设目标接口a中的入参code中的已使用标的a以及已使用标的b均可识别,但已使用标的b股票代码对应的股票并非已使用标的a行情市场代码对应股票市场下的股
票,那么第二量化策略报错信息可以为:代码第{}行:标的b不适用于目标接口a,请前往量化接口配置信息查看目标接口a的标的适用类型。
100.进一步地,作为本技术中的一种可选实现方案,利用量化接口配置信息对抽象语法树进行静态语义检测,具体还可以包括:对所述抽象语法树进行解析,得到所述量化策略代码调用的目标接口和所述目标接口中的已使用标的;从量化接口配置信息中获取所述目标接口的接口配置信息。进而,通过预设处理规则对已使用标的以及接口配置信息进行处理,以获取已使用标的对应的第一字符串信息以及接口配置信息对应的第二字符串信息,例如,可基于标点符号对已使用标的(或接口配置信息)进行切分,得到已使用标的对应字符串中各个子字符串,将各个子字符串以及各个子字符串的长度确定为已使用标的对应的第一字符串信息(或接口配置信息对应的第二字符串信息),以已使用标的为股票代码“us.00700”为例,可基于标点符号“.”将股票代码划分为“us”以及“00700”两个子字符串,最终得到字符串信息为:“us”、2、“00700”、4;在确定到已使用标的对应的第一字符串信息以及接口配置信息对应的第二字符串信息后,可基于下述公式计算已使用标的和接口配置信息之间的差异度因子为:
[0101][0102]
其中,cha_i表示已使用标的对应的第一字符串信息,cha_j表示接口配置信息对应的第二字符串信息,fac_dif(i,j)表示已使用标的和接口配置信息之间的差异度因子。α、β表示预设的字符串因子,用于分别对第一字符串和第二字符串进行调校,提高差异度因子的计算精度。在计算得到差异度因子之后,若差异度因子大于或者等于设定阈值,则表示已使用标的与接口配置信息不匹配,则确定量化策略代码发生异常。
[0103]
在得到量化策略报错信息,为了保证量化策略的及时修正,可以将第一量化策略报错信息和第二量化策略报错信息及时显示在量化功能界面内,以便用户对已构建的量化策略进行修正。此外,考虑到量化策略代码往往与量化策略对应的图形化控件关联,还可以基于第一量化策略报错信息或第二量化策略报错信息定位对应的图形化控件,以对量化控件进行高亮显示。
[0104]
可以理解的是,本技术按照量化策略的检测需求,可以在量化接口配置信息中为各个量化接口预先配置更多关于量化策略代码的校验规则,以确保量化策略的全面检测。
[0105]
本技术实施例提供的技术方案,对于任一量化策略而言,支持在量化策略实际运行前对其发起相应检测。那么,在接收到任一量化策略的检测指令后,首先获取该量化策略对应的量化策略代码和已构建的量化接口配置信息,并将量化策略代码转换为抽象语法树。然后,利用量化接口配置信息来对抽象语法树进行静态语义检测,即可得到对应的量化策略报错信息,从而实现量化策略在实际运行前的静态语义检测,有效避免量化策略在运行过程中的报错,提升量化策略检测的全面性和及时性,从而确保量化策略检测的准确性。
[0106]
图5为本技术实施例提供的一种量化策略的检测装置的原理框图。如图5所示,该装置500可以包括:
[0107]
量化策略获取模块510,用于响应于任一量化策略的检测指令,获取所述量化策略对应的量化策略代码和已构建的量化接口配置信息;
[0108]
代码转化模块520,用于将所述量化策略代码转化为抽象语法树;
[0109]
量化策略检测模块530,用于利用所述量化接口配置信息对所述抽象语法树进行静态语义检测,得到对应的量化策略报错信息。
[0110]
在一些可实现方式中,量化策略检测模块530,可以包括:
[0111]
语法树解析单元,用于对所述抽象语法树进行解析,得到所述量化策略代码调用的目标接口和所述目标接口中的已使用标的;
[0112]
第一报错单元,用于利用所述量化接口配置信息中的接口定义,对所述目标接口进行上下文逻辑检测,得到对应的第一量化策略报错信息;
[0113]
第一报错单元,用于利用所述量化接口配置信息中的标的适用类型,对所述目标接口中的已使用标的进行业务逻辑检测,得到对应的第二量化策略报错信息。
[0114]
在一些可实现方式中,所述目标接口中的已使用标的包括运行标的、全局标的和固定标的中的至少一种。
[0115]
在一些可实现方式中,语法树解析单元,可以具体用于:
[0116]
对所述抽象语法树进行解析,得到对应的接口调用节点,以确定所述量化策略代码调用的目标接口;
[0117]
根据所述接口调用节点下的标的信息,确定所述目标接口中的已使用标的。
[0118]
在一些可实现方式中,量化策略的检测装置500,还可以包括:
[0119]
报错信息反馈模块,用于通过常驻的代码分析进程将所述量化策略报错信息反馈给策略检测进程,以通过所述策略检测进程,在量化功能界面内显示所述量化策略的量化策略报错信息;
[0120]
其中,所述常驻的代码分析进程用于调度执行所述量化策略的检测任务,以得到对应的量化策略报错信息。
[0121]
在一些可实现方式中,所述量化策略代码包括通过图形化控件构建量化策略时生成的脚本代码和通过代码编辑器编写的自定义代码中的至少一种。
[0122]
在本技术实施例中,对于任一量化策略而言,支持在量化策略实际运行前对其发起相应检测。那么,在接收到任一量化策略的检测指令后,首先获取该量化策略对应的量化策略代码和已构建的量化接口配置信息,并将量化策略代码转换为抽象语法树。然后,利用量化接口配置信息来对抽象语法树进行静态语义检测,即可得到对应的量化策略报错信息,从而实现量化策略在实际运行前的静态语义检测,有效避免量化策略在运行过程中的报错,提升量化策略检测的全面性和及时性,从而确保量化策略检测的准确性。
[0123]
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图5所示的装置500可以执行本技术提供的任一方法实施例,并且装置500中的各个模块的前述和其它操作和/或功能分别为了实现本技术实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
[0124]
上文中结合附图从功能模块的角度描述了本技术实施例的装置500。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本技术实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本技术实施例申请的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦
写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
[0125]
图6为本技术实施例提供的电子设备的示意性框图。
[0126]
如图6所示,该电子设备600可包括:
[0127]
存储器610和处理器620,该存储器610用于存储计算机程序,并将该程序代码传输给该处理器620。换言之,该处理器620可以从存储器610中调用并运行计算机程序,以实现本技术实施例中的方法。
[0128]
例如,该处理器620可用于根据该计算机程序中的指令执行上述方法实施例。
[0129]
在本技术的一些实施例中,该处理器620可以包括但不限于:
[0130]
通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
[0131]
在本技术的一些实施例中,该存储器610包括但不限于:
[0132]
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0133]
在本技术的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器610中,并由该处理器620执行,以完成本技术提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
[0134]
如图6所示,该电子设备还可包括:
[0135]
收发器630,该收发器630可连接至该处理器620或存储器610。
[0136]
其中,处理器620可以控制该收发器630与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器630可以包括发射机和接收机。收发器630还可以进一步包括天线,天线的数量可以为一个或多个。
[0137]
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
[0138]
本技术实施例还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本技术实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
[0139]
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0140]
本领域普通技术人员可以意识到,结合本文中所申请的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0141]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0142]
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
[0143]
以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以该权利要求的保护范围为准。
技术特征:
1.一种量化策略的检测方法,其特征在于,包括:响应于任一量化策略的检测指令,获取所述量化策略对应的量化策略代码和已构建的量化接口配置信息;将所述量化策略代码转化为抽象语法树;利用所述量化接口配置信息对所述抽象语法树进行静态语义检测,得到对应的量化策略报错信息。2.根据权利要求1所述的方法,其特征在于,所述利用所述量化接口配置信息对所述抽象语法树进行静态语义检测,得到对应的量化策略报错信息,包括:对所述抽象语法树进行解析,得到所述量化策略代码调用的目标接口和所述目标接口中的已使用标的;利用所述量化接口配置信息中的接口定义,对所述目标接口进行上下文逻辑检测,得到对应的第一量化策略报错信息;利用所述量化接口配置信息中的标的适用类型,对所述目标接口中的已使用标的进行业务逻辑检测,得到对应的第二量化策略报错信息。3.根据权利要求2所述的方法,其特征在于,所述目标接口中的已使用标的包括运行标的、全局标的和固定标的中的至少一种。4.根据权利要求2所述的方法,其特征在于,所述对所述抽象语法树进行解析,得到所述量化策略代码调用的目标接口和所述目标接口中的已使用标的,包括:对所述抽象语法树进行解析,得到对应的接口调用节点,以确定所述量化策略代码调用的目标接口;根据所述接口调用节点下的标的信息,确定所述目标接口中的已使用标的。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:通过常驻的代码分析进程将所述量化策略报错信息反馈给策略检测进程,以通过所述策略检测进程,在量化功能界面内显示所述量化策略的量化策略报错信息;其中,所述常驻的代码分析进程用于调度执行所述量化策略的检测任务,以得到对应的量化策略报错信息。6.根据权利要求1所述的方法,其特征在于,所述量化策略代码包括通过图形化控件构建量化策略时生成的脚本代码和通过代码编辑器编写的自定义代码中的至少一种。7.一种量化策略的检测装置,其特征在于,包括:量化策略获取模块,用于响应于任一量化策略的检测指令,获取所述量化策略对应的量化策略代码和已构建的量化接口配置信息;代码转化模块,用于将所述量化策略代码转化为抽象语法树;量化策略检测模块,用于利用所述量化接口配置信息对所述抽象语法树进行静态语义检测,得到对应的量化策略报错信息。8.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1-6中任一项所述的量化策略的检测方法。9.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1-6中任一项所述的量化策略的检测方法。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现如权利要求1-6中任一项所述的量化策略的检测方法。
技术总结
本申请实施例提供了一种量化策略的检测方法、装置、设备及存储介质。该方法包括:响应于任一量化策略的检测指令,获取所述量化策略对应的量化策略代码和已构建的量化接口配置信息;将所述量化策略代码转化为抽象语法树;利用所述量化接口配置信息对所述抽象语法树进行静态语义检测,得到对应的量化策略报错信息。本申请实施例提供的技术方案,可以实现量化策略在实际运行前的静态语义检测,有效避免量化策略在运行过程中的报错,提升量化策略检测的全面性和及时性,从而确保量化策略检测的准确性。准确性。准确性。
技术研发人员:冯晓泉 李健 张刘 欧格良 涂诚孟
受保护的技术使用者:富途网络科技(深圳)有限公司
技术研发日:2023.06.16
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:功率模块、电机控制器及车辆的制作方法 下一篇:具有间隔件的固定夹具的制作方法