一什么是程序化交易
程序化交易:用计算机软件代替人工进行交易的部分过程或者全部过程。
程序化交易可以分为
全自动:人为不干涉。所有信号均由计算机去执行。
半自动:计算机执行部分指令,比如只是用程序去开仓。平仓人工来执行。还有就是人工下单。然后计算机去执行出场程序。还有就是会人工判断行情是否单边与横盘,然后选择性的去加载程序。
二程序化的优点与缺点
优点:
1最大的优点就是可以克服主观交易中的心理问题:焦虑,犹豫,紧张,恐惧。兴奋等等各种心理因素。
2可以同时很多个品种。且可以实时扑捉到交易机会第一时间进场。比人工观察要快很多很多。提高效率。把资金分散到几十个策略和品种上去的时候,极大的分散的投资风险。
3主观交易策略使用的条件太复杂的情况下会影响交易的实时和客观。特别是日内交易,条件越多,每次下单的时候会影响速度,还会经常出现犹豫的情形。但是程序化就可以避免这些。再多的再复杂的条件也能很快的去执行。这个是人无与伦比的。
4一个策略的盈利与否,如果用主观去判断会需要很长时间实盘去检验。特别是中长线策略。需要以年为单位来进行检验效果。但是用程序那么就能通过过去的大量数据很快检验出是否能盈利,当然真正的实盘与程序回撤数据还是有差异的。但即使如此也比主观要更加快的评测出策略的有效性。
缺点:
1程序化不能实现人工复杂的思想的表达,还有些是模糊的难以用语言准确去描述的如盘感。
2程序化相对比较死板,无法灵活的感觉各种盘面的变化去做出灵活的应对。
3大量策略雷同,导致一些以前用的好的策略,过了段时间后就效果不好了。
三程序化编写需要注意的几点
1避免使用未来函数。
未来函数:指可能引用未来数据的函数,即引用或利用当时还没有发生过的数据对之前发出的判断进行修正的函数。
2指令触发的K线取值。现在有实时触发,和K线走完取值,还比如实时触发K线走完复核,等等很多种。如果取TICK数据回测那么这些都触发条件与实盘都是最接近的。如果不是去TICK数据测试,那么就只有K线走完不复核取值,为最接近实盘效果。
3回测历史数据的时候,引用的是指数和主连合约的区别。
指数是以每个合约的成交量做权重算出的该商品的指数
主连是主力合约的连续,主连合约是是不同时段主力合约的连接,指数是所有合约按照成交量加权而形成的。很显然,主连合约因为有换月的状况所以有跳空情况,而指数是全部合约的加权,所以会有很优秀的连续性。
如果用指数来测试,那么实际交易的时候不会有这样的数据产生。如果是日内程序,那么就要用主连来测试,如果是过夜那么就最好是用指数。或者能有自动换月的函数来测试,那么效果就更贴近实际。
4手续费和滑点
如果是低频的策略,那么这个影响将不大。如果是中频特别是高频的,那么就影响很大了。所以再回撤数据的时候越严格那么就实际效果越贴近实际。
5测试的时候需要的数据源要足够的多。比如是日内的程序,那么少点没关系。如果是过夜的长周期策略,那么就需要足够多数据来检测在各种复杂情况下的有效性。最好先截取一两年的数据测试效果,这些数据里一定要有明显的单边和横盘行情。这样才能更加有效的去衡量效果。然后再换其他时间段来测试效果,最后再所有时间去测试,这样会更加的贴近真实效果。