量化交易策略的运行方法、装置、设备及介质
文献发布时间:2024-01-17 01:27:33
技术领域
本申请实施例涉及软件技术领域,尤其涉及一种量化交易策略的运行方法、装置、设备及介质。
背景技术
由于技术指标(又称为指标)是对历史市场数据(如价格、成交量等)进行数学计算和统计分析,从而得出可能的市场趋势、交易信号等,可以帮助投资用户捕捉市场波动中的一些模式,为投资用户的投资决策提供参考。所以,投资用户可以基于指标生成量化交易策略,并利用量化交易策略进行金融市场的产品交易。但因为传统指标在交易环境下的有效性较差,难以满足量化交易策略多样性需求。所以,用户需要自定义一些指标来满足量化交易策略的多样性需求。
用户自定义指标时,通过使用易用性较强的技术指标语言比如麦语言,来编写自定义指标。因为麦语言在编写量化交易策略方面存在瓶颈,通常用户编写量化交易策略使用的编程语言为Python语言。并且,基于Python语言编写量化交易策略时,需要Python解析器来解释执行编写的量化交易策略脚本,以便产生正常的运行结果。但因为量化交易策略中用户自定义的指标是基于麦语言编写的,使得Python解析器无法解析麦语言编写的自定义指标脚本,导致编写的量化交易策略运行失败或运行出错。
发明内容
本申请提供一种量化交易策略的生成方法、装置、设备及介质,使得Python解析器在运行Python语言编写的量化交易策略时,能够正确解析麦语言编写的自定义指标脚本,使得用户编写量化交易策略更加灵活和多样化,满足用户的更多需求。
第一方面,本申请提供了一种量化交易策略的运行方法,应用于终端设备,所述终端设备包括策略运行组件和量化组件,所述方法包括:
所述策略运行组件获取并运行量化交易策略脚本,所述量化交易策略脚本包括用户设置的自定义指标脚本;
所述策略运行组件在运行所述量化交易策略脚本过程中,若检测到自定义指标脚本,则根据所述自定义指标脚本调用自定义指标接口从所述量化组件获取所述自定义指标脚本的指标数值;
所述策略运行组件根据所述指标数值,获取所述量化交易策略脚本的运行结果。
第二方面,本申请提供了一种量化交易策略的运行装置,配置于终端设备,所述终端设备包括策略运行组件和量化组件,所述装置包括:
策略控制模块,用于控制所述策略运行组件获取并运行量化交易策略脚本,所述量化交易策略脚本包括用户设置的自定义指标脚本;
数值获取模块,用于控制所述策略运行组件在运行所述量化交易策略脚本过程中,若检测到自定义指标脚本,则根据所述自定义指标脚本调用自定义指标接口从所述量化组件获取所述自定义指标脚本的指标数值;
结果获取模块,用于控制所述策略运行组件根据所述指标数值,获取所述量化交易策略脚本的运行结果。
第三方面,本申请实施例提供了一种电子设备,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行如第一方面实施例所述的量化交易策略的运行方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行如第一方面实施例所述的量化交易策略的运行方法。
本申请实施例公开的技术方案,至少具有如下有益效果:
通过终端设备中策略运行组件获取包括有用户设置的自定义指标脚本的量化交易策略脚本,之后策略运行组件运行量化交易策略脚本,当策略运行组件在运行量化交易策略脚本过程中,如果检测到自定义指标脚本,则根据自定义指标脚本调用自定义指标接口从量化组件获取自定义指标脚本的指标数值,然后策略运行组件根据指标数值,获取量化交易策略脚本的运行结果。本申请中通过利用量化组件获取量化交易策略脚本中自定义指标脚本的指标结果,并将指标结果返回给策略运行组件,从而可以将麦语言编写的自定义指标和Python语言编写的量化交易策略结合起来,实现在一个量化交易策略内兼容两种不同编程语言,使得Python解析器在运行Python语言编写的量化交易策略时,能够正确解析麦语言编写的自定义指标脚本,使得用户编写量化交易策略更加灵活和多样化,满足用户的更多需求。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种量化交易策略的运行方法的流程示意图;
图2A是本申请实施例提供的一种量化交易策略配置界面的示意图;
图2B是本申请实施例提供的一种自定义指标配置界面的示意图;
图3是本申请实施例提供的另一种量化交易策略的运行方法的流程示意图;
图4是本申请实施例提供的再一种量化交易策略的运行方法的流程示意图;
图5是本申请实施例提供的一种量化交易策略的运行装置的示意性框图;
图6是本申请实施例提供的一种电子设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明,本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或方案不应被解释为比其它实施例或方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
考虑到用户在量化交易策略中设置自定义指标时,使用的编程语言为麦语言,而量化交易策略使用的编程语言为Python语言,所以当Python解析器来解释执行编写的包括有自定义指标的量化交易策略代码时,因Python解析器无法解析麦语言编写的自定义指标脚本,导致编写的量化交易策略运行失败或运行出错。因此,本申请设计了一种针对设置有自定义指标的量化交易策略的运行方案,以通过该方案使得Python解析器在运行Python语言编写的量化交易策略时,能够正确解析麦语言编写的自定义指标脚本,使得用户编写量化交易策略更加灵活和多样化,满足用户的更多需求。
下面结合附图,对本申请实施例提供的一种量化交易策略的运行方法、装置、设备和介质进行具体说明。
图1是本申请实施例提供的一种量化交易策略的运行方法的流程示意图。本申请实施例可适用于在终端设备上运行用户编写的包括有自定义指标的量化交易策略场景。该量化交易策略的运行方法可由量化交易策略的运行装置来执行。其中,该量化交易策略的运行装置可由硬件和/或软件组成,并可集成于电子设备中。可选的,本申请电子设备可以是各类终端设备,比如智能手机(如Android手机,IOS手机,WindowsPhone手机等)、平板电脑、掌上电脑、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、可穿戴设备等,本申请对电子设备类型不做具体限制。其中,终端设备也可以称为用户设备(User Equipment,UE)、终端或用户装置等,此处不做任何限制。
如图1所示,该方法可以包括如下步骤:
S101,策略运行组件获取并运行量化交易策略脚本,量化交易策略脚本包括用户设置的自定义指标脚本。
在本申请中,策略运行组件可理解为终端设备运行过程中的进程。示例性的,策略运行组件可选为任意能够解释执行量化交易策略脚本的进程。考虑到量化交易策略是使用Python语言编写的,所以本申请可选的策略运行组件也可为Python解析器,此处对策略运行组件不做任何限制。
应理解的是,量化交易策略是指利用计算机程序进行投资交易的方法。
可选的,在执行步骤S101之前,本申请可首先根据用户触发的策略配置操作,在终端设备上配置包括自定义指标的量化交易策略。之后,再基于用户配置的上述量化交易策略进行运行操作,以得到运行结果。其中,量化交易策略的运行结果也可以理解为量化交易策略的量化交易结果,本申请对此不做任何限制。
在一些可选实现方式中,上述根据用户触发的策略配置操作,在终端设备上配置包括自定义指标的量化交易策略,可选的包括:显示策略配置界面,策略配置界面包括自定义指标控件和策略配置控件,其中自定义指标控件和策略配置控件均为可视化控件;响应于针对策略配置界面中自定义指标控件的触发操作,量化组件获取自定义指标控件对应的指标参数,并根据指标参数生成自定义指标脚本;响应于针对策略配置界面中策略配置控件的触发操作,量化组件基于自定义指标脚本生成量化交易策略脚本。
应理解的是,本申请量化组件可以为终端设备运行过程中的进程。其中该进程可选为能够实现自动量化交易的进程,比如量化交易进程等,本申请对其不做任何限制。
可选的,用户在配置包括自定义指标的量化交易策略时,可向终端设备发送量化交易策略配置指令,使得终端设备中的量化组件可对用户触发的量化交易策略配置指令进行响应,显示量化交易策略配置界面。从而,用户可基于终端设备显示的量化交易策略配置界面配置包括自定义指标脚本的量化交易策略脚本。
其中,该量化交易策略配置界面包括可视化自定义指标控件和可视化策略配置控件。示例性的,如图2A所示,用户可点击选中终端设备显示界面中的量化控件,以使终端设备根据接收到的量化控件触发操作,向用户显示用户生成量化交易策略脚本的图像化界面,具体为量化交易策略配置界面。其中,量化交易策略配置界面可包括控件栏210、策略画布区域220和属性栏230。该策略画布区域220的空白区域设置有策略配置控件。当然,策略配置控件也可以显示在其他不遮挡任何信息的区域,此处对其不做任何限制。
在图2A中控件栏210用于显示多个可视化控件,例如条件控件和事件控件。条件控件对应的条件控件库用于存放判断条件,事件控件对应的事件控件库用于存放执行操作的事件。其中,事件控件可包括但不限于:下单、撤单、清仓、退出策略程序以及赋值运算等事件控件。应理解的是,一个或多个条件可对应一个条件控件,一个事件可以对应一个事件控件,本申请对此不做任何限制。
图2A中条件控件可包括下述至少一种控件:信号控件、账户控件和组合控件。其中,信号是跟市场有关的客观数据。账户条件是跟个人交易业务账户有关,是个性化的。示例性的,可以根据用户常用的账号状态,将账号条件控件分为最大可买可卖、持仓、订单和成交等几类。组合条件则是将多个条件,通过且、或以及()等逻辑关系打包成一个条件,并且一个组合条件可以对应一个组合条件控件。
对于信号条件控件,可根据用户常用的交易依据将该信号条件控件分为技术面、资金面和基本面等几种。其中,技术面用于存放各种指标控件(又称为条件控件),其中指标控件可包括至少一个传统指标控件和自定义指标控件(具体为图2A中的更多指标控件)。参见图2A,传统指标控件可选的包括但不限于如下:移动平移指标线指标(Moving average,MA)、指数平滑移动平均线指标(Moving Average Convergence and Divergence,MACD)、相对强弱指标(Research System Inc,RSI)、布林线指标(Bolinger Bands,BOLL)、随机指标(KDJ指标)、均幅指标(Average true range,ATR)以及其他指标等。资金面可以包括资金流向、资金分布、筹码分布等条件控件。基本面可以包括市盈率(Price to Earning Ratio,PE)、资产收益率(Return on Assets,ROA)、净资产收益率(Rate of Return on Commonstockholder’Equity,ROE)、每股收益(Earnings PerShare,EPS)等条件控件。
进一步的,用户可通过触发量化交易策略配置界面中的自定义指标控件,使得量化组件获取该自定义指标控件对应的指标参数,并根据获取到的指标参数生成自定义指标脚本。之后,用户可通过触发量化交易策略配置界面中的策略配置控件,使得量化组件将上述生成的自定义指标脚本写入当前配置的量化交易策略脚本对应的脚本文件中,以实现在当前配置的量化交易策略中添加自定义指标。
考虑到量化组件自身具有脚本生成功能,所以本申请量化组件响应针对策略配置控件的选中操作,生成量化交易策略脚本,具体为可通过量化组件利用自身脚本生成功能,基于选中的策略配置控件生成Python语言量化交易策略脚本。
相应的,本申请中量化交易策略脚本对应的脚本文件为Python文件。
在本申请中,在当前配置的量化交易策略中添加自定义指标的数量为至少一个,即自定义指标的数量为大于或等于1。并且,每个自定义指标可以相同也可以不同,此处对其不做任何限制。
在一些可实现方式中,量化组件获取自定义指标控件对应的指标参数,并根据指标参数生成自定义指标脚本的实现过程,可如下步骤:
步骤一,量化组件响应于针对自定义指标控件的选中操作,显示自定义指标配置界面,自定义指标配置界面包括至少两个自定义参数栏。
可选的,用户可以触发比如点击选中量化交易配置界面中的自定义指标控件,使得量化组件响应自定义指标控件的点击选中操作,在量化交易策略配置界面中显示自定义指标配置界面,其中自定义指标配置界面可包括至少两个自定义参数栏。
其中,自定义参数栏用于提供不同的指标参数选项,用户基于自定义参数栏可设置自定义指标对应的计算方式。示例性的,如图2B所示,自定义指标配置界面中至少两个自定义参数栏可选为:运算符参数栏和预设指标库。其中,运算符可包括:加(+)、减(-)、乘(*)、除(/)、括号()、大于(>)以及小于(<)等。预设指标库用于存放多个可被用户编辑使用的指标,示例性的如图2B所示,预设指标库可至少包括:趋势指标、超买超卖指标、能量指标、成交量指标、量价指标、压力支撑指标和摆动指标中的其中一种。
应理解的是,运算符栏上设置有下拉菜单,通过下拉菜单可选择不同的运算符,以满足各种自定义指标的生成需求。
可选的,上述自定义指标配置界面除了包括自定义参数栏之外,还可包括:自定义指标公式属性栏。该自定义指标公式属性栏可包括:自定义指标的缩写栏,自定义指标的全称栏以及说明栏等。示例性的,假设用户在自定义指标公式编辑界面创建的自定义指标为成交量加权平均价格,自定义指标公式属性栏中自定义指标的缩写栏可输入自定义指标的名称标识,如:VWAP(Volume-Weighted Average Price);自定义指标的全名栏中可输入自定义指标的名称全名,如:成交量加权平均价格指标,以及说明栏中可输入自定义指标的说明、备注等内容,如:VWAP为成交量加权平均价格指标,它基于交易量和交个给出了全天交易的证券的平均价格。
步骤二,量化组件响应于针对自定义参数栏的输入操作,获取自定义参数栏中的指标参数,根据指标参数生成参数列表。
步骤三,量化组件基于参数列表以及自定义指标控件对应的指标脚本代码生成自定义指标脚本。
可选的,用户可以点击选中任意自定义参数栏,并在该自定义参数栏中输入指标参数。进而,量化组件获取到针对自定义参数栏的输入操作时进行响应,以在自定义参数栏中显示用户输入的指标参数。同时,量化组件获取在自定义指标配置界面中自定义参数栏中输入的指标参数,并基于获取到的指标参数生成自定义指标脚本。
继续以上述图2B为例进行说明,用户可通过点击运算符参数栏,选择目标运算符,以及点击预设指标库并选择任意指标,以实现在自定义参数栏的输入操作。进而,量化组件通过获取用户在自定义参数栏中输入的指标参数,以根据指标参数生成参数列表。然后,量化组件根据参数列表以及自定义指标控件关联的指标脚本代码,自动编写对应的麦语言自定义指标脚本。其中,自定义指标脚本可显示在图2B中的自定义指标编译区域。由此,使得用户通过简单的点击选择完成自定义指标的生成操作,使得用户可以不需要编写程序代码的能力,即可在生成自定义指标脚本。
上述量化组件根据指标参数生成的参数列表,具体为自定义指标中的指标相关字段。
通过上述方式在量化交易策略脚本中设置麦语言自定义指标脚本,并将自定义指标的相关信息(比如麦语言脚本代码等)会写入到量化交易策略脚本Python文件,不仅可以保证量化交易策略在运行过程中,即使用户修改了自定义指标脚本,也不会影响正在运行的量化交易策略逻辑。并且,在后续支持自编代码策略时,可以让用户明确看到自定义指标的实现方式。此外,还支持将Python文件复制到其他终端设备中使用,无论其他终端设备中指标管理组件中是否保存该自定义指标均可满足其他终端设备的使用。其中,指标管理组件可理解为终端设备运行过程中管理自定义指标的进程,并且用户可以在该指标管理组件中对自定义指标进行修改、增加和删除等操作。
在一些可实现方式中,生成量化交易策略脚本之后,本申请策略运行组件可从量化组件中获取该量化交易策略脚本,并运行该量化交易策略脚本。
在一些可实现方式中,考虑到写入量化交易策略脚本对应脚本文件中的自定义指标脚本,可能随时被用户修改或者删除等调整操作,使得后续运行该量化交易策略脚本时,导致该量化交易策略脚本的运行逻辑出现错误或者无法运行的情况发生。为此,本申请将自定义指标脚本写入至量化交易策略脚本对应的脚本文件之外,还额外对上述自定义指标脚本进行备份保存,以避免量化交易策略脚本在运行过程中,用户对自定义指标脚本进行修改或者删除等操作,导致量化交易策略脚本运行出错或无法运行的情况发生。在一些可选的实现方式中,由于用户在配置量化交易策略时,指标管理组件中的自定义指标可能会被其他用户修改或删除等,但指标管理组件并不会通知量化组件,所以量化组件根据策略配置界面中的自定义指标控件,在量化交易策略中设置自定义指标时需要实时从指标管理组件中获取自定义指标的相关指标参数。
然而,上述实时从指标管理组件中拉取指标参数可能会有较大的性能损耗。因此,本申请可选的在量化组件和指标管理组件之间增设一个数据缓存层,并在数据缓存层中缓存量化组件最近一段时间生成的自定义指标脚本,其中自定义指标脚本中包括有指标参数。即,量化组件可将生成的自定义指标脚本保存至数据缓存层中。从而,当量化组件根据用户的自定义指标设置操作从指标管理组件中拉取指标参数时,首先确定量化组件上次拉取操作距离此次拉取操作的时间间隔。如果时间间隔小于预设时间间隔,则从数据缓存层中获取自定义指标的相关指标参数,以避免从指标管理组件中频繁获取自定义指标的相关指标参数,以降低性能损耗。如果时间间隔大于或等于预设时间间隔,则从指标管理组件中获取自定义指标的相关指标参数。其中,预设时间间隔可根据量化交易策略的配置性能进行灵活设置,比如2秒或者3秒等,此处不做任何限制。
在本申请实施例中,数据缓存层中缓存最近一段时间生成的自定义指标脚本,可以理解为被其他用户修改或删除之后的最新自定义指标脚本。
并且,最近一段时间可根据性能损耗需求进行灵活设置,此处对其不做具体限制。例如,数据缓存层中缓存最近2小时生成的自定义指标脚本,或者数据缓存层中缓存最近一天生成的自定义指标脚本等,本申请对其不做具体限制。
S102,策略运行组件在运行量化交易策略脚本过程中,若检测到自定义指标脚本,则根据自定义指标脚本调用自定义指标接口从量化组件获取自定义指标脚本的指标数值。
由于量化交易策略脚本中设置有至少一个自定义指标脚本,所以策略运行组件在运行量化交易策略脚本过程中,可能需要使用设置的自定义指标脚本。但考虑到自定义指标脚本是利用麦语言编写的,运行Python脚本的策略运行组件可能无法正确解析麦语言自定义指标脚本,而量化组件具有编写以及解析麦语言自定义指标脚本的能力。
所以,本申请可以在策略运行组件运行量化交易策略脚本过程中,如果检测到自定义指标脚本,即需要使用自定义指标时,可借助量化组件来解析量化交易策略脚本需要调用的自定义指标脚本,以获取自定义指标脚本的指标数值(指标结果),以使策略运行组件能够实现解析麦语言自定义指标,从而正常运行量化交易策略。
在一些可实现方式中,借助量化组件获取自定义指标脚本的指标数值,具体如下:策略运行组件首先从量化交易策略脚本中获取待使用的自定义指标脚本。之后,根据自定义指标脚本调用自定义指标接口生成指标数值获取请求,并将指标数据获取请求发送给量化组件,以使量化组件基于该指标数值获取请求,确定自定义指标的指标数值。
其中,从量化交易策略脚本中获取待使用的自定义指标脚本,可理解为从量化交易策略脚本中提取待使用的自定义指标脚本。
考虑到量化交易策略脚本中可能存在一个以上的自定义指标脚本,所以策略运行组件在运行量化交易策略脚本过程中,每检测到一次自定义指标脚本就向量化组件发送一次指标数值获取请求。从而,通过从量化组件侧直接获取自定义指标脚本的指标数值,以确保量化交易策略能够正常运行。
本申请中,自定义指标接口可选的包括:K线相关字段和指标相关字段。
其中,K线相关字段可选包括:股票代码code;K线周期ktype,可包括:1分钟、1小时或日K等;复权类型autype,可包括:不复权、前复权或后复权。
示例性的,ktype=KLType.K_DAY,autype=AuType.QFQ。
指标相关字段可选的包括:自定义指标的麦语言脚本代码script、参数列表params、自定义指标的指标名称line_name。
示例性的,自定义指标的指标名称line_name可以为MADC对应的DIFF、DEA以及其他等,此处对其不做任何限制。
应理解的是,上述K线相关字段和指标相关字段均属于自定义指标接口的入参。
S103,策略运行组件根据指标数值,获取量化交易策略脚本的运行结果。
可选的,从量化组件侧获取到自定义指标脚本的指标数值后,策略运行组件通过使用该指标数值,继续运行量化交易策略脚本,以得到量化交易策略的运行结果。
本申请提供的一种量化交易策略的运行方法,通过终端设备中策略运行组件获取包括有用户设置的自定义指标脚本的量化交易策略脚本,之后策略运行组件运行量化交易策略脚本,当策略运行组件在运行量化交易策略脚本过程中,如果检测到自定义指标脚本,则根据自定义指标脚本调用自定义指标接口从量化组件获取自定义指标脚本的指标数值,然后策略运行组件根据指标数值,获取量化交易策略脚本的运行结果。本申请中通过利用量化组件获取量化交易策略脚本中自定义指标脚本的指标结果,并将指标结果返回给策略运行组件,从而可以将麦语言编写的自定义指标和Python语言编写的量化交易策略结合起来,实现在一个量化交易策略内兼容两种不同编程语言,使得Python解析器在运行Python语言编写的量化交易策略时,能够正确解析麦语言编写的自定义指标脚本,使得用户编写量化交易策略更加灵活和多样化,满足用户的更多需求。
在前述实施例的基础上,对本申请策略运行组件根据自定义指标脚本调用自定义指标接口从量化组件获取自定义指标脚本的指标数值进行进一步的解释说明,具体参见图3。
如图3所示,该方法可以包括如下步骤:
S201,策略运行组件获取并运行量化交易策略脚本,量化交易策略脚本包括用户设置的自定义指标脚本。
S202,策略运行组件在运行量化交易策略脚本过程中,若检测到自定义指标脚本,则根据自定义指标脚本,获取指标信息。
其中,指标信息包括:指标脚本代码和参数列表。上述指标脚本代码为自定义指标脚本代码。参数列表为自定义指标脚本中所使用到的变量参数,例如指标相关字段中的参数。
考虑到量化交易策略脚本Python文件中,存储有自定义指标脚本对应的指标信息。所以,本申请策略运行组件可从量化交易策略脚本Python文件中获取自定义指标脚本对应的指标信息。
可选的,策略运行组件可根据自定义指标脚本的指标标识,在量化交易策略脚本Python文件中查找对应的指标信息;或者,也可以遍历量化交易策略脚本Python文件来查找指标信息,本申请不做任何限制。为了提高查询速度,优选根据自定义指标脚本的指标标识,在量化交易策略脚本Python文件中查找对应的指标信息。
其中,指标标识是指能够唯一确定指标身份的信息,比如指标名称或者指标编号等,此处对其不做任何限制。
S203,策略运行组件将指标信息写入自定义指标接口,通过自定义指标接口生成并发送第一指标数值获取请求至量化组件。
可选的,获取到待使用自定义指标脚本的指标信息后,策略运行组件可按照指标信息的名称等标识,将指标信息写入至自定义指标接口中的对应参数位置生成第一指标数值获取请求。然后,将该第一指标数值获取请求通过传输协议发送给量化组件,以使量化组件基于该第一指标数值确定待使用自定义指标脚本的指标数值。其中传输协议可选为任意能够实现数据传输的协议,此处对其不做任何限制。
在本申请中,指标信息标识除了可以为指标信息的名称之外,还可以是指标信息的编号等,此处对其不做任何限制。
在一些可实现方式中,考虑数据序列化协议方便数据传输,能够将待传输的数据转换为可传输的字节序列,所以本申请优选采用数据序列化协议,将第一指标数值获取请求发送给量化组件。
在本申请实施例中,数据序列化协议可选为protobuf协议,或者也可以采用JSON、XML或者Thrift等协议,此处对其不做任何限制。
应理解的是,protobuf协议是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。主要适用于做数据存储或RPC数据交换格式。换言之,Protobuf协议的功能类似于XML,即负责把某种数据结构的信息,以某种格式保存起来。主要用于数据存储、传输协议等使用场景。
也就是说,策略运行组件可通过数据序列化协议将第一指标数值获取请求高效的传输给量化组件,以提高第一指标数据获取请求的发送效果。
S204,量化组件响应于第一指标数值获取请求,根据第一指标数值获取请求中的指标信息,确定指标计算公式,并基于指标计算公式计算自定义指标脚本的指标数值。
可选的,在量化组件获取到策略运行组件发送的第一指标数值获取请求之后,可通过解析该第一指标数值获取请求,来获取第一指标数值获取请求携带的指标信息,具体为指标脚本代码和参数列表。之后,利用自身中的指标解析器解析指标脚本代码和参数列表,以确定该自定义指标脚本对应的指标计算公式。
量化组件确定出指标计算公式之后,还可以接收自定义指标接口传输的行情数据,其中,行情数据具体包括K线相关数据。进而,量化组件在K线相关字段中查找参数列表中各个参数对应的目标参数数据;或者,基于K线相关字段计算参数列表中各个参数对应的目标参数数据。然后,根据目标参数数据以及指标计算公式,计算自定义指标脚本的指标数值。其中,计算自定义指标脚本的指标数值的过程可选为将目标参数数据输入至指标计算公式中,以计算出自定义指标脚本的指标数值。
可选的,量化组件确定出自定义指标脚本的指标数值之后,可通过传输协议将指标数值发送给策略运行组件,以使策略运行组件可以基于指标数值能够正常运行量化交易策略。
考虑到量化组件获取到的第一指标数值获取请求中包括有自定义指标脚本的所有信息。即,量化组件首次获取到该第一指标数值请求时,除了确定与自定义指标脚本的指标数值之外,量化组件还可以生成指标键值。之后,将指标键值和指标数值一起发送给策略运行组件,以使策略运行组件可以建立并保存自定义指标脚本和指标键值的关联关系,为后续再一次调用该自定义指标脚本快速获取指标数值提供有利条件。
其中,量化组件生成指标键值的具体实现过程,可包括如下步骤:
第一步,量化组件获取到策略运行组件发送的第一指标数值获取请求时,通过解析该第一指标数值获取请求,获取该第一指标数值获取请求携带的信息。
第二步,如果量化组件确定该第一指标数值获取请求携带的信息包括指标脚本代码和参数列表,则量化组件确定自身是第一次获取到该自定义指标脚本的指标数值获取请求。此时,量化组件缓存该指标数值获取请求中的是指标信息。之后,量化组件根据该自定义指标脚本的指标信息,确定自定义指标脚本的指标数值。其中,指标信息包括:指标脚本代码和参数列表。
上述量化组件确定自定义指标脚本的指标数值的具体实现过程可参见上述步骤204部分,此处对其不做过多赘述。
第三步,确定出指标数值之后,量化组件还可生成指标键值,并对指标键值与指标计算公式进行保存。此外,量化组件还将指标数值和指标键值发送给策略运行组件。
其中,生成指标键值时包括但不限于如下两种情况:
第一种情况,量化组件根据指标数值生成指标键值。具体地,在第一次计算得到自定义指标的指标数值后,可基于指标数值通过预设的算法,如哈希算法,计算自定义指标的指标键值。
第二种情况,量化组件根据指标信息生成指标键值。具体地,在获取到自定义指标的指标信息后,可以直接为该指标信息分配一随机值作为自定义指标的指标键值,或者,也可以基于指标信息通过预设的算法,如哈希算法,确定自定义指标的指标键值。
其中,量化组件可采用哈希算法基于指标数值或指标信息计算得到指标键值,当然也可以通过其他算法生成指标键值,本申请不做任何限制。
第四步,策略运行组件根据量化组件发送的指标键值,建立自定义指标脚本和指标键值的关联关系。
S205,策略运行组件根据指标数值,获取量化交易策略脚本的运行结果。
其中,策略运行组件根据获取到量化组件返回的指标数值后,继续运行量化交策略脚本。如果运行量化交易策略脚本过程中,再次检测到自定义指标脚本,则返回执行步骤S202,直至获取到量化交易策略的运行结果为止。
本申请提供的一种量化交易策略的运行方法,通过终端设备中策略运行组件获取包括有用户设置的自定义指标脚本的量化交易策略脚本,之后策略运行组件运行量化交易策略脚本,当策略运行组件在运行量化交易策略脚本过程中,如果检测到自定义指标脚本,则根据自定义指标脚本调用自定义指标接口从量化组件获取自定义指标脚本的指标数值,然后策略运行组件根据指标数值,获取量化交易策略脚本的运行结果。本申请中通过利用量化组件获取量化交易策略脚本中自定义指标脚本的指标结果,并将指标结果返回给策略运行组件,从而可以将麦语言编写的自定义指标和Python语言编写的量化交易策略结合起来,实现在一个量化交易策略内兼容两种不同编程语言,使得Python解析器在运行Python语言编写的量化交易策略时,能够正确解析麦语言编写的自定义指标脚本,使得用户编写量化交易策略更加灵活和多样化,满足用户的更多需求。此外,本申请通过使用数据序列化协议进行数据传输,能够将待传输的数据转换为可传输的字节序列,从而可以提高数据传输效率。
下面结合图4,对上述实施例中的根据所述自定义指标脚本调用自定义指标接口从所述量化组件获取所述自定义指标脚本的指标数值进行进一步的优化。如图4所示,该方法可以包括如下步骤:
S301,策略运行组件获取并运行量化交易策略脚本,量化交易策略脚本包括用户设置的自定义指标脚本。
S302,策略运行组件在运行量化交易策略脚本过程中,若检测到自定义指标脚本,则确定是否缓存有自定义指标脚本关联的指标键值,如果没有,则执行S303,否则执行S306。
其中,指标键值可选的设置为indicatorKey。
考虑到量化交易策略脚本中设置的自定义指标脚本可能会很复杂,比如包括几十甚至上百行代码。所以,如果策略运行组件每次均把自定义指标脚本的所有信息通过指标数值获取请求发送给量化组件,则因为数据量过大,导致传输效率低下。
在一个实施例中,在获取到自定义指标脚本,可从该自定义指标脚本中获取对应自定义指标的指标信息,进而基于该自定义指标的指标信息,通过下述公式匹配已缓存自定义指标脚本的指标键值;
其中,IndexA表示当前所检测到的自定义指标,IndexB表示已缓存自定义指标脚本对应的自定义指标;parmA表示自定义指标IndexA的指标参数,parmB表示自定义指标IndexB的指标参数;cos(IndexA,IndexB)表示自定义指标IndexA与自定义指标IndexB间的匹配度,可以理解的是,当cos(IndexA,IndexB)等于1时,表示自定义指标IndexA与自定义指标IndexB间完全匹配相等,即自定义指标IndexA与自定义指标IndexB为同一个自定义指标,当cos(IndexA,IndexB)不等于1时,表示自定义指标IndexA与自定义指标IndexB间不相等,即自定义指标IndexA与自定义指标IndexB为不同的自定义指标。通过确定当前所检测到的自定义指标的指标参数与已缓存自定义指标脚本的指标参数间的距离值,快速从已缓存自定义指标脚本的指标键值中,匹配当前所检测到的自定义指标的指标键值,降低通信数据量,提高自定义指标的指标数值的效率。
进一步地,还可以在策略运行组件侧设置一关系列表,并在该关系列表中存储自定义指标脚本和指标键值的关联关系。从而,当策略运行组件需要使用任一自定义指标时,首先在自身管理的关系列表中查找是否存在与待使用自定义指标脚本关联的指标键值。如果不存在指标键值,则说明待使用自定指标脚本是第一次被使用。此时,策略运行组件需要基于待使用自定义指标脚本调用自定义指标接口生成第一指标数值获取请求,并将第一指标数值获取请求发送给量化组件,以使量化组件基于携带有所有指标信息的待使用自定义指标脚本确定指标数值,具体实现过程参见下述步骤S303至步骤S305部分。如果存在指标键值,则说明待使用自定义指标脚本并非是第一次被使用。此时,策略运行组件可基于指标键值调用自定义指标接口生成第二指标数值获取请求,并将第二指标数值获取请求发送给量化组件,以使量化组件可以基于第二指标数值获取请求携带的指标键值,从自身缓存的数据中获取与指标键值对应的指标计算公式。然后,基于指标计算公式确定指标数值,具体实现过程参见下述步骤S306至步骤S308部分。
作为一种可选的实现方式,策略运行组件中存储的与自定义指标脚本关联的指标键值,是量化组件侧生成的,具体生成过程可参见前述实施例中的步骤S204部分中的量化组件生成指标键值的具体实现过程,此处对其不做过多赘述。
S303,策略运行组件如果确定未缓存自定义指标脚本关联的指标键值,则根据自定义指标脚本,获取指标信息。
S304,策略运行组件将指标信息写入自定义指标接口,通过自定义指标接口生成并发送第一指标数值获取请求至量化组件。
S305,量化组件响应于第一指标数值获取请求,根据第一指标数值获取请求中指标信息的指标脚本代码和参数列表,确定指标计算公式,并跳转至执行S309。
在一些可实现方式中,量化组件可通过对接收到的第一指标数值获取请求进行解析,以获取第一指标数值获取请求携带的指标脚本代码和参数列表。进而,量化组件利用自身中的指标解析器解析指标脚本代码和参数列表,确定自定义指标脚本对应的指标计算公式。
S306,策略运行组件如果确定缓存有自定义指标脚本关联的指标键值,则根据自定义指标脚本,获取自定义指标脚本关联的指标键值。
可选的,当策略运行组件从自身的关系列表中查找到自定义指标脚本关联有指标数值时,策略运行组件可根据自定义指标脚本从关系列表中获取对应的指标键值。
作为一种可选的实现方式,本申请根据自定义指标脚本从关系列表中获取对应的指标键值,可以是基于自定义指标脚本遍历关系列表,来获取与该自定义指标脚本关联的指标数值;或者,当自定义指标脚本存在对应的名称等身份信息时,也可以基于自定义指标脚本的名称等身份信息,在关系列表中查找与自定义指标脚本关联的指标数值等,此处对获取指标数值的实现方式不做任何限制。
S307,策略运行组件将指标键值写入自定义指标接口,通过自定义指标接口生成并发送第二指标数值获取请求至量化组件。
当策略运行组件从关系列表中获取到待使用自定义指标脚本关联的指标键值时,策略运行组件可将指标键值写入自定义指标接口中的对应位置,来生成第二指标数值获取请求。然后,将该第二指标数值获取请求通过传输协议发送给量化组件,以使量化组件基于该第二指标数值确定待使用自定义指标脚本的指标数值。其中传输协议可选为任意能够实现数据传输的协议,此处对其不做任何限制。
在一些可选的实现方式中,本申请可选的采用数据序列化协议,将第二指标数值获取请求发送给量化组件。在本申请实施例中,数据序列化协议可选为protobuf协议,或者也可以采用JSON、XML或者Thrift等协议,此处对其不做任何限制。
S308,量化组件响应于第二指标数值获取请求,从缓存中获取与第二指标数值获取请求中指标键值对应的指标计算公式,并跳转至执行S309。
可选的,在量化组件获取到策略运行组件发送的第二指标数值获取请求之后,可通过解析第二指标数值获取请求来获取第二指标数值获取请求携带的指标键值。
考虑到当指标数值获取请求携带的信息为指标键值时,说明策略运行组件并非第一次使用与指标键值对应的自定义指标脚本。相应的,量化组件侧已经缓存有与该指标键值对应的指标计算公式。因此,量化组件可根据获取到的指标键值,从缓存中获取与指标键值对应的指标计算公式。
S309,量化组件获取行情数据,并在行情数据中查找指标计算公式中各个参数的目标参数数据,根据目标参数数据以及指标计算公式,计算自定义指标脚本的指标数值。
考虑到自定义指标接口还包括:K线相关字段。本申请中K线相关字段可理解为行情数据。因此,量化组件确定出指标计算公式之后,还可以接收自定义指标接口传输的K线相关字段。进而,量化组件在K线相关字段中查找指标计算公式中各个参数对应的目标参数数据;或者,基于K线相关字段计算指标计算公式中各个参数对应的目标参数数据。然后,根据目标参数数据以及指标计算公式,计算自定义指标脚本的指标数值。其中,计算自定义指标脚本的指标数值的过程可选为将目标参数数据输入至指标计算公式中,以计算出自定义指标脚本的指标数值。
其中,上述根据目标参数数据以及指标计算公式,计算自定义指标脚本的指标数值,为本领域的常规技术,此处对其不做过多赘述。
量化组件在确定出自定义指标脚本的指标数值之后,可通过传输协议将指标数值发送给策略运行组件,以使策略运行组件可以基于指标数值能够正常运行量化交易策略。
需要说明的时,当本申请中传输协议为Protobuf协议时,该Protobuf协议内容可选的包括:K线相关字段、指标相关字段和指标键值字段。
示例性的,指标键值字段可选为indicatorKey=8,当然也可以是其他形式,本申请对此不做任何限制。
S310,策略运行组件根据指标数值,获取量化交易策略脚本的运行结果。
其中,策略运行组件根据获取到量化组件返回的指标数值后,继续运行量化交策略脚本。如果运行量化交易策略脚本过程中,再次检测到自定义指标脚本,则返回执行步骤S303至S305,或者步骤S306至S308,直至获取到量化交易策略的运行结果为止。
本申请提供的一种量化交易策略的运行方法,通过终端设备中策略运行组件获取包括有用户设置的自定义指标脚本的量化交易策略脚本,之后策略运行组件运行量化交易策略脚本,当策略运行组件在运行量化交易策略脚本过程中,如果检测到自定义指标脚本,则根据自定义指标脚本调用自定义指标接口从量化组件获取自定义指标脚本的指标数值,然后策略运行组件根据指标数值,获取量化交易策略脚本的运行结果。本申请中通过利用量化组件获取量化交易策略脚本中自定义指标脚本的指标结果,并将指标结果返回给策略运行组件,从而可以将麦语言编写的自定义指标和Python语言编写的量化交易策略结合起来,实现在一个量化交易策略内兼容两种不同编程语言,使得Python解析器在运行Python语言编写的量化交易策略时,能够正确解析麦语言编写的自定义指标脚本,使得用户编写量化交易策略更加灵活和多样化,满足用户的更多需求。此外,策略运行组件确定非首次获取任意自定义指标脚本时,通过向量化组件仅传输指标键值,可以提高自定义指标脚本在不同组件之间的传输效率。
下面参照图5,对本申请实施例提出的一种量化交易策略的运行装置进行描述。图5是本申请实施例提供的一种量化交易策略的运行装置的示意性框图。
本申请中,量化交易策略的运行装置配置于终端设备,且该终端设备包括策略运行组件和量化组件。如图5所示,该量化交易策略的运行装置400包括:策略控制模块410,数值获取模块420和结果获取模块430。
其中,策略控制模块410,用于控制所述策略运行组件获取并运行量化交易策略脚本,所述量化交易策略脚本包括用户设置的自定义指标脚本;
数值获取模块420,用于控制所述策略运行组件在运行所述量化交易策略脚本过程中,若检测到自定义指标脚本,则根据所述自定义指标脚本调用自定义指标接口从所述量化组件获取所述自定义指标脚本的指标数值;
结果获取模块430,用于控制所述策略运行组件根据所述指标数值,获取所述量化交易策略脚本的运行结果。
本申请实施例的一种可选实现方式,数值获取模块420,包括:
第一获取单元,用于控制所述策略运行组件根据所述自定义指标脚本,获取指标信息;
第一发送单元,用于控制所述策略运行组件将所述指标信息写入所述自定义指标接口,通过所述自定义指标接口生成并发送第一指标数值获取请求至所述量化组件;
第一计算单元,用于控制所述量化组件响应于所述第一指标数值获取请求,根据所述第一指标数值获取请求中的所述指标信息,确定指标计算公式,并基于所述指标计算公式计算所述自定义指标脚本的指标数值。
本申请实施例的一种可选实现方式,所述指标信息包括:所述指标脚本代码和参数列表;
相应的,所述第一计算单元,具体用于:
控制所述量化组件根据所述指标脚本代码和所述参数列表,确定指标计算公式;
控制所述量化组件获取行情数据,并在所述行情数据中查找所述参数列表中各个参数对应的目标参数数据,根据所述目标参数数据以及所述指标计算公式,计算所述自定义指标脚本的指标数值。
本申请实施例的一种可选实现方式,量化交易策略的运行装置400,还包括:
键值生成模块,用于控制所述量化组件响应于所述第一指标数值获取请求,生成指标键值,并对所述指标键值与指标计算公式进行保存;
键值发送模块,用于控制所述量化组件将所述指标数值和所述指标键值发送给所述策略运行组件;
关系建立模块,用于控制所述策略运行组件根据所述量化组件发送的所述指标键值,建立所述自定义指标脚本和所述指标键值的关联关系。
本申请实施例的一种可选实现方式,数值获取模块420,还包括:
第二获取单元,用于控制所述策略运行组件根据所述自定义指标脚本,获取所述自定义指标脚本关联的指标键值;
第二发送单元,用于控制所述策略运行组件将所述指标键值写入所述自定义指标接口,通过所述自定义指标接口生成并发送第二指标数值获取请求至所述量化组件;
第三获取单元,用于控制所述量化组件响应于所述第二指标数值获取请求,从缓存中获取与所述第二指标数值获取请求中所述指标键值对应的指标计算公式;
第二计算单元,用于控制所述量化组件获取行情数据,并在所述行情数据中查找所述指标计算公式中各个参数的目标参数数据,根据所述目标参数数据以及所述指标计算公式,计算所述自定义指标脚本的指标数值。
本申请实施例的一种可选实现方式,量化交易策略的运行装置400,还包括:
界面显示模块,用于显示策略配置界面,所述策略配置界面包括自定义指标控件和策略配置控件,其中所述自定义指标控件和所述策略配置控件均为可视化控件;
指标生成模块,用于响应于针对策略配置界面中所述自定义指标控件的触发操作,所述量化组件获取所述自定义指标控件对应的指标参数,并根据所述指标参数生成自定义指标脚本;
策略生成模块,用于响应于针对策略配置界面中所述策略配置控件的触发操作,所述量化组件基于所述自定义指标脚本生成量化交易策略脚本。
本申请实施例的一种可选实现方式,指标生成模块,包括:
界面显示单元,用于控制所述量化组件响应于针对所述自定义指标控件的选中操作,显示自定义指标配置界面,所述自定义指标配置界面包括至少两个自定义参数栏;
列表生成单元,用于控制所述量化组件响应于针对所述自定义参数栏的输入操作,获取所述自定义参数栏中的指标参数,根据所述指标参数生成参数列表;
指标生成单元,用于控制所述量化组件基于所述参数列表以及所述自定义指标控件对应的所述指标脚本代码生成自定义指标脚本。
本申请实施例的一种可选实现方式,量化交易策略的运行装置400,还包括:
指标缓存模块,用于控制所述量化组件将所述自定义指标脚本保存至数据缓存层中。
本申请提供的一种量化交易策略的运行装置,通过终端设备中策略运行组件获取包括有用户设置的自定义指标脚本的量化交易策略脚本,之后策略运行组件运行量化交易策略脚本,当策略运行组件在运行量化交易策略脚本过程中,如果检测到自定义指标脚本,则根据自定义指标脚本调用自定义指标接口从量化组件获取自定义指标脚本的指标数值,然后策略运行组件根据指标数值,获取量化交易策略脚本的运行结果。本申请中通过利用量化组件获取量化交易策略脚本中自定义指标脚本的指标结果,并将指标结果返回给策略运行组件,从而可以将麦语言编写的自定义指标和Python语言编写的量化交易策略结合起来,实现在一个量化交易策略内兼容两种不同编程语言,使得Python解析器在运行Python语言编写的量化交易策略时,能够正确解析麦语言编写的自定义指标脚本,使得用户编写量化交易策略更加灵活和多样化,满足用户的更多需求。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图5所示的装置400可以执行图1对应的方法实施例,并且装置400中的各个模块的前述和其它操作和/或功能分别为了实现图1中的各个方法中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的装置400。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的资讯,结合其硬件完成上述方法实施例中的步骤。
图6是本申请实施例提供的一种电子设备的示意性框图。
如图6所示,该电子设备500可包括:
存储器510和处理器520,该存储器510用于存储计算机程序,并将该程序代码传输给该处理器520。换言之,该处理器520可以从存储器510中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器520可用于根据该计算机程序中的指令执行上述方法实施例。
可选的,一种量化交易策略的运行方法,应用于终端设备,所述终端设备包括策略运行组件和量化组件,所述方法包括:
所述策略运行组件获取并运行量化交易策略脚本,所述量化交易策略脚本包括用户设置的自定义指标脚本;
所述策略运行组件在运行所述量化交易策略脚本过程中,若检测到自定义指标脚本,则根据所述自定义指标脚本调用自定义指标接口从所述量化组件获取所述自定义指标脚本的指标数值;
所述策略运行组件根据所述指标数值,获取所述量化交易策略脚本的运行结果。
可选的,所述根据所述自定义指标脚本调用自定义指标接口从所述量化组件获取所述自定义指标脚本的指标数值,包括:
所述策略运行组件根据所述自定义指标脚本,获取指标信息;
所述策略运行组件将所述指标信息写入所述自定义指标接口,通过所述自定义指标接口生成并发送第一指标数值获取请求至所述量化组件;
所述量化组件响应于所述第一指标数值获取请求,根据所述第一指标数值获取请求中的所述指标信息,确定指标计算公式,并基于所述指标计算公式计算所述自定义指标脚本的指标数值。
可选的,所述指标信息包括:所述指标脚本代码和参数列表;
相应的,所述根据第一指标数值获取请求中的所述指标信息,确定指标计算公式,并基于所述指标计算公式计算所述自定义指标脚本的指标数值,包括:
所述量化组件根据所述指标脚本代码和所述参数列表,确定指标计算公式;
所述量化组件获取行情数据,并在所述行情数据中查找所述参数列表中各个参数对应的目标参数数据,根据所述目标参数数据以及所述指标计算公式,计算所述自定义指标脚本的指标数值。
可选的,所述方法还包括:
所述量化组件响应于所述第一指标数值获取请求,生成指标键值,并对所述指标键值与指标计算公式进行保存;
所述量化组件将所述指标数值和所述指标键值发送给所述策略运行组件;
所述策略运行组件根据所述量化组件发送的所述指标键值,建立所述自定义指标脚本和所述指标键值的关联关系。
可选的,所述根据所述自定义指标脚本调用自定义指标接口从所述量化组件获取所述自定义指标脚本的指标数值,包括:
所述策略运行组件根据所述自定义指标脚本,获取所述自定义指标脚本关联的指标键值;
所述策略运行组件将所述指标键值写入所述自定义指标接口,通过所述自定义指标接口生成并发送第二指标数值获取请求至所述量化组件;
所述量化组件响应于所述第二指标数值获取请求,从缓存中获取与所述第二指标数值获取请求中所述指标键值对应的指标计算公式;
所述量化组件获取行情数据,并在所述行情数据中查找所述指标计算公式中各个参数的目标参数数据,根据所述目标参数数据以及所述指标计算公式,计算所述自定义指标脚本的指标数值。
可选的,所述策略运行组件获取并运行量化交易策略脚本之前,还包括:
显示策略配置界面,所述策略配置界面包括自定义指标控件和策略配置控件,其中所述自定义指标控件和所述策略配置控件均为可视化控件;
响应于针对策略配置界面中所述自定义指标控件的触发操作,所述量化组件获取所述自定义指标控件对应的指标参数,并根据所述指标参数生成自定义指标脚本;
响应于针对策略配置界面中所述策略配置控件的触发操作,所述量化组件基于所述自定义指标脚本生成量化交易策略脚本。
可选的,所述响应于针对策略配置界面中所述自定义指标控件的触发操作,所述量化组件获取所述自定义指标控件对应的指标参数,并根据所述指标参数生成自定义指标脚本,包括:
所述量化组件响应于针对所述自定义指标控件的选中操作,显示自定义指标配置界面,所述自定义指标配置界面包括至少两个自定义参数栏;
所述量化组件响应于针对所述自定义参数栏的输入操作,获取所述自定义参数栏中的指标参数,根据所述指标参数生成参数列表;
所述量化组件基于所述参数列表以及所述自定义指标控件对应的所述指标脚本代码生成自定义指标脚本。
可选的,所述根据所述指标参数生成自定义指标脚本之后,还包括:
所述量化组件将所述自定义指标脚本保存至数据缓存层中。
在本申请的一些实施例中,该处理器520可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器510包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(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 DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器510中,并由该处理器520执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
如图6所示,该电子设备还可包括:
收发器530,该收发器530可连接至该处理器520或存储器510。
其中,处理器520可以控制该收发器530与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器530可以包括发射机和接收机。收发器530还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。
本申请实施例还提供一种包含指令的计算机程序产品,当所述程序指令在电子设备上运行时,使得所述电子设备执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。
可以理解的是,在本申请的具体实施方式中,涉及到针对量化交易策略的运行所使用的相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可、同意或者授权,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
- 分布式供能运行策略的确定方法、装置、设备和存储介质
- 脚本运行方法、装置、电子设备及存储介质
- 飞机运行安全风险评价方法、装置、电子设备及存储介质
- 一种流程活动异步运行方法、装置、设备及存储介质
- 一种应用程序的运行控制方法、装置、设备及存储介质
- 量化交易策略生成方法与装置、设备及存储介质
- 基于多目标优化的量化交易策略生成方法及装置、设备和存储介质