有很多朋友们基于通达信的公式系统,开发了很多技术指标,形成了一些预警信号或股票池出票,但无法直接自动执行程序化交易。另外自动交易还需要关联交易账号、实现风控及仓位管理,在通达信公式系统中实现这些就太复杂了。那么有没有更简单有效的方法呢?答案当然是有的,只需要在通达信公式里输出买卖信号就可以了。我们先来看看如何实现在公式中调用输出买卖信号。
输出买卖信号,自然是需要依靠通达信提供的插件开发接口了,下面是宽客帮通达信下单插件的接口说明:
插件(ZMOrder.dll)的交易函数序号为策略的ID编号,最多支持9个策略(1-9),支持3个自定义参数,调用形式为: TDXDLL8(1,参数1, 参数2, 参数3):
1、参数1为需要交易的股票代码,比如600000,每次调用只能针对一个股票进行操作,沪市及创业板股票代码必须传6位,深市中小板股票代码如收到的位数不够6位,插件会自动在前面补0;
2、参数2为交易的数量,单位是股,买入时正常是100的倍数(100股为1手),卖出是可以是碎股。需要注意的是买入是正数,卖出是负数,比如500是买入5手,-500是卖出5手;
3、参数3为交易价格,主要用于限价委托,市价委托时无效,是否限价委托由宽客帮系统针对策略进行设置;
为了方便统计交易收益,需要对每个交易行为进行策略归类,每个类别代表一个策略,策略描述需要在宽客帮系统中提前设置好,请务必确保指定的策略编号已经在宽客帮系统中配置好。
举例:
条件: DYNAINFO(20) > REF(HIGH,1); {委买价大于昨天最高价}
If (条件,TDXDLL8(1,600000,1000,10.0),0);
解释:
条件为盘中当某个股(举例为“浦发银行”)委买价大于昨天最高价时,执行买入1000股,价格10块,使用编号为1的策略名称:
举例: If (条件,TDXDLL8(2,0001,-1000,9.0),0);
条件为盘中当某个股(举例为“平安银行”)委买价大于昨天最高价时,执行卖出1000股,价格9块,使用编号为2的策略名称
举例:TDXDLL8(1,STR2CON(CODE),1000,10.0) 通过代码STR2CON(CODE)可以自动传入当前窗口的股票代码,具体数量和价格可以根据算法生成,这样就是动态的策略下单实现了。
需要注意的是,同一股票相同数量、相同价格的买单或卖单会被系统认为是重复下单,所以同一只股票,当天如果要多次买入,请确保数量或价格是有差异的。
如遇到不正常情况,请检查宽客帮程序所在的Data子目录,查看TdxW.txt和QuantService.txt运行日志提示的错误描述。
您可能很奇怪,这么简单的交易接口,没有指定交易账号也没有登录过程是如何实现的呢?奥妙就在宽客帮策略交易执行系统(https://download.csdn.net/download/quanthelper/10800430)了,这里的交易接口对接的只是您的策略买卖信号。在宽客帮系统中,您可以指定交易账号订阅这里的策略信号即可,多个账号支持同时订阅您的某个策略,单个交易账号也可以同时订阅多个策略信号进行程序化自动交易。意味着通过这个下单接口,可以实现多账号的自动交易哦。