金字塔提供功能性和扩展性更强大的后台程序化交易模式,后台程序化是一种基于后台进行预警监控的高效率自动化交易模式,适用于高净值客户与私募机构。与常规的图表自动化交易模式相比,后台程序化存在如下优势:

1)基于后台运行,用户可正常进行图形界面使用与分析;

2)占用资源少,策略执行效率更高;

3)资金、持仓与实际账户交互,可轻松实现资金、仓位管理等风控;

4)可轻松实现全市场、多品种监控、多策略组合交易。

后台程式化交易基于后台执行,用户无法直接在图表上看到直观信号的出现过程,故对用户的公式编写水平有一定的要求,用户需要对金字塔的后台交易系统工作机理比较深的了解,并且要对自己的策略原理有清晰的认识,这样一旦遇到问题也能及时找到问题的原因。

为让用户更快编写和熟悉金字塔的后台程式化交易,金字塔的后台程式化交易函数,都是在图表交易系统函数名称前加 T 字母,比如BUY改为TBUY, 使用方法大致相同,用户仔细注意查看函数的使用说明。与图表显示的交易系统函数不同的是,后台程式化交易的函数都使用的实际的用户持仓和资金

金字塔的后台程式化交易只能在专业版及其以上版本使用,他可以运行在固定时间间隔走完一根K线以后两种模式,但是推荐走完一根K线模式模式运行,这样可以极大提高后台执行的效率。

上图所显示界面就是后台程式化交易模式的设置界面,选择指标、品种、周期等选项都是在这里进行的,后台程式化交易不需要在当前分析图上加载指标,它只是在后台静默的运行。因此,当您在使用后台模式进行交易时,完全不影响用户当前的图形操作,甚至您同时还可以运行图表程式化交易或者手工下单。

开始后台程式化交易的简单步骤

1. 登录交易账户

2. 在“程式化条件设定”中选择交易指标和周期类型

3. 在“程式化条件设定”中选择交易品种

4. 启动后台程式化交易

 

要实现基本的后台程式化交易,必须完成上述个步骤。

登录交易账户

1)点击金字塔软件右上方的委托钮,如下图所示

2)点击委托后弹出登录期货交易平台窗口,在营业部处选择公司站点,输入交易帐号和密码登录即可,如下图所示。

3)在交易账户链接状态窗口中点击开始使用或者窗口右上角的X即可,如下图所示:

选择交易指标和周期类型

点击菜单栏中的交易”>“后台程式化交易,在本地预警交易窗口中点击新增条件按钮,在弹出的程式化条件设定窗口中点击向右的三箭头 ,首先勾选允许程式化交易模式运行,然后点击选择策略,然后在公式选择器中选择一个后台交易公式,在右侧的分析周期中选择交易公式运行在哪个周期下。本例中选择的是“test”这个交易公式,运行在1分钟周期下。设置完毕后点击确定按钮即可。

 

 

 

 

允许程式化交易模式运行:进行后台程式化交易时必须勾选本选项。不勾选时,您可以加入一个技术分析指标进行预警,而不会下单。

 

注意:选择用于后台程式化交易的指标,必须是建在公式组中的交易系统组,否则不能正常运行!

 

选择交易品种

程式化条件设定窗口中的信号执行栏中选择信号执行模式。本例中选的是走完一根K线。

程式化条件设定窗口中的监控品种栏目中加入参与交易的品种,可以添加一个或者多个。本例中加入的是"股指1812"这个合约。设置完毕后点击确定按钮即可。

程序化交易信号执行模式有两种:走完一根K线、固定时间间隔。

固定时间间隔:按照指定的时间间隔进行信号检测,有信号就立即下单;

走完一根K线以后:必须等到当前K线结束,下根K线刚产生的那一刻进行信号检测和下单

启动后台程式化交易

在本地预警交易窗口点击启动预警即可。

其他设置项

在后台程序化交易界面中还有菜单栏、设置项,基本都可根据字面意思理解其作用。

1)菜单栏

工具 导出预警设置:导出所有的预警设置。

导入预警设置:可以快速的在不同的客户端导入预警设置。

保存全部配置

设置 →程序化交易设置:我们有专门的教程讲解,您可以在“选项→交易设置→程序化交易”中找到相应的说明。

多核并行:勾选后,如果您在本地预警中加入了多个条件,金字塔会将这些策略分成多个线程并交给多个CPU进行运算处理,从而提高执行效率。

→自启动预警:弹出“本地预警交易”窗口就会自动启动预警。此项的更改将会在下次启动本软件后生效。

→触发VBA事件:借助VBA进行扩展计算、统计。

→交易日志:软件详细的交易日志

帮助 后台交易说明:后台程式化使用说明。

2)“本地预警交易”选项

•不间断监控:勾选后,无论是否有新的行情数据跳动,系统都默认按照您所设置的“不间断监控刷新频率(最小可设置为1毫秒)”中的毫秒数进行监控,例如设置为10毫秒,系统则每10毫秒监控一遍,若符合公式条件则触发相应的操作。此项的更改将会在下次启动本软件后生效。

TICK级别刷新:意思是客户端每接收到一笔数据(交易所一般是一秒钟发送2笔数据)刷新监控一遍指标,如果符合指标的相应条件,那么就发出一次下单指令,您可以把TICK级别刷新理解为时间间隔更短的“固定时间间隔”模式,它的这个间隔长度其实就是交易所发送一次数据的间隔时间。

3程式化条件设定 选项

固定时间间隔:按照指定的时间间隔进行信号检测,有信号就立即下单;

走完一根K线以后:必须等到当前K线结束,下根K线刚产生的那一刻进行信号检测和下单

:当选择走完一根K线之后模式时,点击此按钮,可以设置走完K线提前X秒下单。

使用指定K先数量刷新计算:勾选后,可以指定K线数量参与运算,提高运行效率。

复权数据:使用复权数据参与公式运算。

多账户及策略系数:本教程只讲解如何开始最基本的图表程式化交易,至于多账户相关的交易,我们有专门的教程讲解,您可以在登录委托时的“多账户设置”界面中找到相应的帮助。

监控品种:本地预警要监控的品种,除了我们前面讲到的静态手工加入的方式,还可以根据设置实时更新监控品种。点击“动态加载”按钮,在弹出的动态品种加载设置窗口中,设置要动态监控的品种。

监控板块:下拉框中可以选择要监控的板块。

重载方式有四种:(1)每次启动;(2)每天指定时间;(3)每隔一定时间;(4)不重载。4种方式基本都可以通过名称了解其用途,这里不再赘述。

监控股票池:勾选此选项,可在下拉框中选择建好的股票池。

账户持仓: 监控账户的持仓。可以监控当前账户,或者指定具体的账户。

 

 

向右的三箭头中各选项用途:

允许程式化交易模式运行:进行后台程式化交易时必须勾选本选项。不勾选时,您可以加入一个技术分析指标进行预警,而不会下单。

下单需手工确认:下单时会弹出手工确认窗口,确认是否下单。

弹出预警框:当“本地预警交易”窗口关闭时,如果有预警会弹出预警框。

预警后保持监控:如果不勾选本项,表示该预警只执行一次,然后就把监控品种去掉,从此不在监控该品种。

监控停牌的品种:勾选后,对停牌品种也会监控。

坐标:交易日、自然日、交易时间。、

时间启用:启用预警交易的开始和结束时间。

发送电子邮件:勾选后,出现预警时发送邮件到指定邮箱,发送前必须设定好发送邮件设置。在发送邮件设置中,SMTP服务器地址是您邮箱的SMTP地址,如果您不清楚,请咨询邮件供应商;发件人邮件和账户名栏目中输入的邮箱名称必须是全称,不能是缩写,例如本例中用的全称是“xxx@test.com”,您不能写成“xxx”,否则系统无法识别,从而导致无法正常发送邮件。

发送手机短信:您必须在电脑上连接一个“gms modem”,通常叫手机猫,这是一个发送短信的设备,如不了解此设备,请用搜索引擎搜索帮助。

输出到分类:将出现预警的品种输出到“工具市场与板块板块”的指定位置。

发出声音:出现预警时提示音。

除此之外,您还可以在程式化条件设定界面设置预警名称说明等选项,这些选项基本都可以通过名称了解其用途,这里不再赘述。

相关常见问题

1.注意事项

1)交易指标必须建立在 “交易系统”分类下,不能够建立在“技术指标”或者“条件股”等分类下。

2)参与图表程式化交易的指标必须是交易指标(只做预警除外),不能用技术分析指标或者股指标等。

3"程式化条件设定"中选择的品种就是参与后台程式化交易的品种。

4"公式选择器"中选择指标和周期就是后台程式化交易的指标和周期。

5)对于初学者,建议使用走完一根K线模式来运行指标。

6)在后台程式化交易中,如果有多个预警条件对同一个账户进行交易,各预警条件中的账户持仓等信息是公用的,各预警条件中如果有对持仓的判断则会造成不同预警条件间的相互影响,如要消除这种影响,需要使用自定义变量等较高的编程技巧来解决,请查阅论坛。

7)一般情况下,在同一根K线上只执行一次开平操作,不会重复开仓或者平仓,如果需要重复交易操作,请查阅“ALLOWREPEAT"这个函数的用法。

2.信号执行模式优缺点

1)资源占用不同

假设策略运行在1分钟周期上:

固定时间间隔模式下:时间间隔指定为1秒,那么1分钟会检测60次。

走完一根K线模式下:1分钟只做一次检测。大大减少了CPU的运算量、节省了计算机资源。

同时监控多个品种时,固定时间间隔模式下,计算机的CPU资源消耗较大。

2)应用场景不同

固定时间间隔模式下:可以实现在同一根K线内多次加仓,在K线形成的过程中就可以检测是否达到开仓条件。(动机:更贴近市场的价格提前进场,缺点:受市场价格随机波动影响)

结论:两种模式的应用需求不一样,满足算法设计性能的前提下,尽量使用走完一根K线。

3. 后台自动交易THOLDING的使用

THOLDING取的是账户的真实持仓状态,只有当我们的委托下单成交后才会有所变化,而HOLDING是虚拟持仓,委托下单后立即变化。

变量名称 变量涵义 作用范围 返回值 解析
Holding 虚拟持仓量 图表程式化 多仓为正>0;
空仓为负<0;
无仓为零=0;
Buy,Sell等指令委托后,立即减去相应的持仓手数,不管委托是否成交。
Tholding 可用持仓量 后台程式化 TBuy 指令发出后不马上变化(已委托挂单未成交,持仓量不变),
     成交后持仓量增加;
TSell指令发出后立即变化(此单已委托到交易所挂单了,不可再重复挂单);
     撤单后恢复可用持仓;成交后 THolding 的值不变.
THolding2 全部持仓量 后台程式化 TBuy 指令发出后不马上变化(已委托挂单未成交,总持仓量不变),
     成交后持仓量增加;
TSell指令发出后也不会变化(已委托挂单,未成交);
     撤单后不影响总持仓量;成交后增减相应持仓量.

 

初学者在使用后台自动交易时,通常认为将函数前简单加T就可以,但实际不行的。

比如:

tSELL(bp and THOLDING>0,0,LMT,C);

tSELLSHORT(sp and THOLDING<0,0,LMT,C);

tBUY(bk and THOLDING=0,1,LMT,C);

tBUYSHORT(sk and THOLDING=0, 1,LMT,C);

这个时在图表交易系统上加T改过来的代码。

THOLDING与图表HOLDING最大的不同在于,THOLDING是与你真实持仓一致的函数,只有当我们的委托下单成交后才会有所变化,而HOLDING是虚拟持仓,BUY执行过后立即变化。

由于我们前面的代码在执行了平仓操作后,THOLDING不会马上变成0,故会导致TBUYTHOLDING0条件不被成立,导致没有反手信号。

 

正确的反手写法

if bp > 0 and THOLDING>0 then

begin

tSELL(1,0,MKT),ORDERQUEUE;

tBUYSHORT(1, 1,MKT),ORDERQUEUE;

end

 

if sp > 0 and THOLDING<0 then

begin

tSELLSHORT(1,0,MKT),ORDERQUEUE;

tBUY(1,1,MKT),ORDERQUEUE;

end

1)在图表交易中使用tholding获得实际持仓的注意事项

在图表交易中使用tholding获得实际持仓时,要注意,需要将盘面正在看的品种设置成你账户里实际有持仓的品种,才能用下面代码例子在图表中打印出该品种的实际持仓。

持仓:tholding;

2)在后台交易中使用tholding获得实际持仓的注意事项

在后台程序化交易中使用tholding获得实际持仓时,要注意,需要交易账户中实际含有持仓的品种添加到后台程序化交易监控的列表中才可以取得实际持仓。(其他后台的类似函数同理设置)

启动后台程序化并输出下面代码中的持仓:

持仓:tholding;

DEBUGOUT('持仓:%.2f',持仓);