期货程序化交易简介

2020-08-14 15:06 程序化入门 期货哥

期货交易中有相当一部分是程序化交易者,通过编写计算机程序,实现交易的半自动或全自动。程序化交易有它独特的优势,但同时也是把双刃剑,有很多技术细节需要注意。

一、程序化交易的好处

程序化交易的好处有很多,主要集中在以下几点:

1、节省人力成本。如果不使用程序化交易,而是人手动下单的,由于夜盘的存在,整体的工作时间会非常长。比如商品呢期货是早上9点到下午3点,夜盘是晚上9点到凌晨2:30,整个交易时间段非常长,需要专门的人手倒班才能完成交易,而且人手动下单也很难避免出错。如果是程序化下单则没有这个问题。

2、方便规模化。如果是做资产管理,多个产品使用相似的策略,那么程序化交易则更容易实现规模化,也容易保证各个产品之间交易的一致性。

3、方便知识产权积累。如果是人工交易员,很多人虽然业绩不错,但更多是凭借个人的盘感,对公司而言并没有太多可以沉淀的东西。但如果是程序化交易,由于所有知识产权都是以代码的形式存在,而且每次修改更新都可以保留下来,公司也拥有知识产权,这些沉淀下来的可以成为公司宝贵的财富。

因此,程序化交易逐渐取代人工交易是大势所趋。美国某知名投行10年前交易大厅有600名交易员,现在只有2人,这就是程序化交易的结果。

二、期货程序化交易现状

由于期货程序化交易有免费的CTP(综合交易平台)接口,因此适用面会比股票程序化更广。目前,使用程序化交易的主要有以下几种途径。

1、第三方交易平台。目前有不少第三方交易平台,使用图表化和后台交易相结合的方式。这种模式可以开发出比较简单的策略,但回测、优化的时间会比较长,难以开发较为复杂度策略,研究效率也不是很高,适合初学者。

2、基于python/matlab等高级语言的接口。原始的CTP是基于C++语言的,C++比较难学,所以很多人封装成了python/matlab等高级语言,这样可以方便人们使用。这类接口比第三方平台会更灵活一些,可以实现较为复杂的功能。但由于封装了一层,不是最原始的CTP,所以也存在一定的局限性,如果是较高频的策略也是无法实现的。

3、基于CTP/飞马/飞创/易盛等C++接口。这类接口就可以最灵活地实现所有的功能。CTP是免费的接口,只能接收1档行情;其余几个是收费的接口,可以接收5档行情,数据频率也更高。

基于C++的接口虽然最灵活,但C++学习的门槛也最高,调试最复杂,出错的概率也高,因此要特别注意。

三、程序化交易注意事项

程序化交易好处虽然多,但也存在一定的技术风险,为此,这里简单列举使程序化交易的一些注意事项。

1、两个程序登陆一个账户。这个错误很多人都会犯过,而且往往会导致严重的后果。比如很多第三方平台使用的下单机制是“实际仓位与理论仓位匹配”的机制。比如某品种实际3手,理论是5手,程序则会买入2手。但如果两个程序同时登入,他们会同时买入2手,那么现在实际变成7手,而理论仍是5手,因此他们又会同时卖出2手,这时实际仓位变回3手,始终无法达到理论仓位,就会造成连续频繁交易,造成严重的亏损。因此,程序中要加入相应的风控机制,一旦出现这类连续异常交易,要可以自动停止。

2、区分平今和平昨。国内期货的仓位,包括今仓多头、今仓空头、昨仓多头、昨仓空头等几类,每个品种的平今、平昨手续费不一样。有的交易所平今优先,有的交易所平昨优先,有的是手续费高的优先,有的是风险度高的优先,这些都不大一样,程序中也要特别注意,减少交易成本。有的交易所只有平仓指令,可能并不知道交易所具体平了今仓还是昨仓,如果再查询也比较麻烦,这些都是要特别注意的。

3、用好自动撤单指令。目前,国内交易所对日内各个品种撤单有次数限制,因此,可以更多使用自动撤单指令来规避这些限制。例如常用的FAK(即时成交剩余撤单)、IOC(立即成交否则撤单)等指令。这样子程序也可以规避撤单操作,降低程序风险。

关于程序化交易还有很多需要注意的技术细节,这里就不一一列举了。大可以在实际过程中慢慢体会。

四、程序化交易总结

程序化交易时量化交易发展的大势所趋,虽然一开始会遇到技术上的种种困难,有时甚至会带来较为严重的资金损失,但只要肯花时间去研究、开发,长期以来一定能获得可观的收获。


发表评论: