后台程序化交易
后台程序化交易的机理

除了图表程序化交易,易得还提供了功能更为强大、运行更为高效的后台程序化交易功能。后台程序化不同于图表程序化运行于可视化的K线图上,而是默默运行在后台,我们看不见它的执行过程,只能在交易信号区看到交易信号结果列表,和在监控输出区看到公式输出调试信息。


因为后台程序化不需要打开图表资源,从而占用的系统资源更少,执行起来更加高效。也正因为如此,后台程序化可以一个策略支持多个品种的监控;也支持多个策略并行执行。


更为重要的是,后台程序化提供了一套带T字头的交易函数(如TBUY、TSELL、TASSET、THOLDING等),这类函数直接跟实际交易账户关联,而不是像图表程序化那样基于虚拟资金数据。这类T字头实盘函数非常丰富,约有80多个,用户可以使用这类函数随心所欲操控实际账户,轻松实现资金、仓位管理等风控。


如:TBUY开多,它是根据实际账户资金量来计算最大的下单量,而不是虚拟资金。

TASSET当前资产,返回的是实际账户的当前资产,而不是虚拟数据计算的理论资产。

THOLDING持仓量,返回的是实际账户当前持仓量,而不是虚拟数据计算的理论持仓量。


这类T字头的实盘函数,只会运行在K线数据的最后一根K线,因为这是实际账户的数据,所以我们无法得知实际账户在历史K线上各个历史时间的资金量、持仓量等。在历史K线数据上,这些函数返回是个空值。所以这类T字头函数所书写的后台程序化交易公式,只注重当前最新时间的实盘交易,不能进行历史数据的回测。


所以用户在使用后台程序化交易前,我们建议是先把策略写成交易系统公式,在图形上用虚拟数据系统调试验证,以及使用评测系统回测。策略验证无误后再改写成后台程序化交易公式。

后台程序化交易界面总览

通过主菜单“交易”-“后台程序交易”可以调出后台程序化交易界面。


后台程序化交易界面分五个区:策略树区、策略描述区、运行池区、交易信号区和监控输出区。用户可以点击各区域的标签栏拖拽移动、按自己喜好自由组合。可以界面主菜单”选项”-”隐藏单页标签”,设置是否隐藏单页标签。



1、策略树区


策略树支持分组,方便用户将策略分文别类。用户可以通过右键菜单进行新建策略、新建管理分组、按单个或分组启动停止策略,策略转移分组、排序、查找等操作。


            


2、策略描述区


策略描述展示当前在策略树选中的分组或者策略的相关信息。如策略公式、品种、数据、执行频率、下单方式、执行方向等。


3、运行池区


可以将策略树分组下面的策略加入运行池、方便快速启动停止;启动了策略后会自动加入运行池。运行池列出了策略基本信息和执行情况,可以拖拽移动列名设定先后顺序。右键菜单可以对策略进行启动停止、修改设置等操作。


右键菜单的大部分操作都一目了然,很好理解。


其中保存下单日志是指将交易信号明细写入日志文件。


监控函数输出是指是否启用后台交易函数DebugFile、DebugFileText、DebugOut、DebugOutText的调试信息输出。其中DebugFile、DebugFileText是将调试信息输出的文件;DebugOut、DebugOutText是将调试信息输出到后台程序化交易的监控输出区。在代码中利用这些函数方便用户调试验证策略,这里的选项可以在实盘中屏蔽这些调试输出,减少资源利用。



4、交易信号区


交易信号区列出了运行池中选中策略产生的交易信号明细。如下单品种、买卖方向、下单量、成交量、价格、时间等,可以拖拽移动列名设定先后顺序。



如果在策略设置了信号下单需手工确认,那么交易信号需由右键菜单的“执行下单”或双击信号列表来发出报单。


在右键菜单,还支持对交易信号列表的导出。


5、监控输出区


监控输出区是个文本框,用来显示策略公式中使用DebugOut、DebugOutText输出的调试信息,方便用户调试和对策略运行的跟踪。


\n ' DEBUGOUTTEXT('Hello world!'); \n


例如将上述代码加入公式,监控输出区就会输出如下信息:


策略创建

策略可以创建在不同分组下,我们可以根据需要创建任意分组。创建分组非常简单,策略树区域点击右键菜单“新建分组”即可,也可以对分组进行修改、操作。


新建一个策略,首先我们在策略树选中一个分组节点,通过右键菜单“新建策略”,就可以出现新建策略的设置信息。


1、策略与标的



1) 策略公式的选择


在这里,我们选择策略使用的公式,设置好参数。同时指定好策略显示的名称。注意,这里只能选择后台程序化交易类的公式。


2) 运行周期


指定策略的运行周期,比如1分钟线、5分钟线,一般都勾选上使用除权后数据。


3) 使用数据根数


使用数据根数是指取最近的多少根数据参与策略的运算,减少无谓的数据能提升程序执行效率。比如计算60日均线和50日线均线的交叉,只需要最近60根K线就能算出最后一根数据的交叉信号,所以如果了使用过多数据是没有必要的。因为后台程序只注重最后一根K线数据是否出现交易信号进行实盘交易。


当然您也可以根据自己的策略需要勾选全部数据让系统保存的全部数据参与计算。


4) 标的范围


选择策略执行标的的范围,可以是单标的也可以多标的,个数不受限制。也可以通过勾选指定范围来选择一个板块或多个板块。


这里加入的标的品种,在程序化启动后都会进行下单交易,所以需要谨慎操作。确定该标的品种需要按此策略进行程序化交易才好添加。


5) 自动补齐数据



启动策略自动补齐数据勾选项(见上图1号标签),可以在启动策略之前自动下载补齐所选所有标的运行周期的数据。下载完成后再启动策略运行,这样确保数据齐全完整。


勾选自动补齐数据后,可以通过”附加数据”按钮来补充指定品种或周期的数据(见上图2号标签)。其主要作用在于:在我们的策略中,经常需要跨品种或跨周期的引用,所以这里可以指定附加数据的补齐,使得跨品种跨周期的数据也能自动补齐(设置见上图3号4号标签)。


仅补充当日数据(不补历史数据),是指如果用户每天都通过收盘作业保存了历史数据或者刚下载过历史数据,自动下载的时候仅补齐当日缺失的数据,这样可以提高效率,减少历史数据的重复下载。(见上图5号标签)。


2、执行设置



执行频率是指驱动后台程序化公式执行的频率,执行频率有每笔Tick行情、走完整根K线、新生成K线、固定时间间隔四种。这些概念与图表程序的执行频率设置完全相同,具体可以参考上一章图表程序化的内容。


执行方向可以设定双向交易、只做多头、只做空头。


最多保存N条交易信号到信号列表,如果超过了将删除前面的超出部分,0表示全部保存不删除。


下单需手工确认是指在公式执行中产生的交易信号将会在信号列表中列出,不自动下单。用户可以在信号列表中通过右键菜单点击“执行下单”按钮或双击确认下单


保存下单日志与监控函数输出选项与上一节介绍的运行池中的右键菜单功能相同,具体可以参考上面运行池的内容。


这里重点介绍一下引用数据常驻内存选项:公式中对于StkIndi、StkIndi2、单引号实现的引用函数,引用的数据在整个运算周期常驻内存不释放。常驻内存会提升运行速度,但也会占用更多内存。如果监控的品种数量过多,大量引用跨周期跨品种数据,常驻内存可能会消耗大量内存,造成系统内存不足。该选项作用等同于于函数RefDataKeepMem,请另见该函数的用法。如果您使用了大量跨周期或跨品种而且不是在秒级的高频周期上,建议还是去掉勾选项,不常驻内存,减少对系统内存的占用。


3、多账户设置



多账户设置与图表程序的多账户下单系数和合约下单系数的功能相同。主要来说就是:


账户实际下单数量 = 下单数量 * 账户系数 * 合约系数。


具体这里不再重复赘述。


注意此处的多账户系数和合约系数都是仅作用于当前后台程序化策略。


4、声音设置、资金费率、追单撤单设置


这3个页面的功能与图表程序中对应的功能相同,这里也不再赘述,具体可以参考上一章图表程序化的内容。

启动后台程序化

1、登录交易


见”期货交易”文档 - 期货CTP交易登陆。


2、确保行情已登录、历史数据齐全准确


程序化的运行依赖于历史数据进行计算,所以历史数据必须完整准备。同时行情必须登录,这样盘中实时行情数据才能推送过来,驱动程序化的运行。


3、选中策略


在策略树选中要进行程序化的策略,如果第一次使用此策略可以先通过右键菜单“加入运行池”将其加入运行池,在运行池中检查策略的各项设置是否正确。比如检查标的、数据周期、执行模式、是否自动下单、执行方向等,启动前的检查非常重要,避免发生设置错误而导致损失。


4、启动策略


策略树或者运行池的右键菜单“启动策略”,此时在运行池的策略图表会变成执行状态。


如果您策略使用了多标的,由于启动的时候需要对每个标的进行第一次历史全量运算,所以这个过程中有个“预启动”状态。如果此时要中止策略运行,可以在运行池的右键菜单中“中止启动”停止策略的启动。


5、停止策略


如果策略处于运行状态,点击策略树或者运行池的右键菜单“停止策略”,策略将停止运行。

后台程序化的运行

在启用程序化后,策略的状态先从“停止”先变成“预启动”,预启动的过程是对策略全部标的进行一次历史全量的公式计算;全量计算完成后,状态再变成“启动”,此后策略将按执行频率运行。运行池中策略的图标也从停止状态变成了播放状态。


用户可以通过运行池观察策略的运行次数、信号数量;在下方的交易信号区将会列出该策略产生的所有交易信号明细。


最下方的状态栏还显示了运行池的个数、所有策略的总运行次数、总信号个数。



最后值得注意的是:后台程序化交易强烈建议使用全推行情数据,虽然在后台程序化启动时也会为您点播策略所有品种的实时行情数据,但可能在订阅过程中有些时间差,导致其中有些Tick行情的缺失。

图表程序化与后台程序化的区别

图表程序化:

    支持公式类型:交易系统

    支持下单函数:BUY类;不支持TBUY类执行。


后台程序化:

    支持公式类型:后台程序化交易

    支持下单函数:TBUY类;BUY类函数在后台程序化可以执行但不会发实盘报单。