先可以试试用掘金量化的平台, 有免费版, 不能交易, 可以实盘模拟。 平台做的不错, 能想到的,人家都想到了。 我们玩儿熟了, 然后做了自己的python平台, 很多地方参考了掘金
找一个开源的项目, zipline, algotrader什么的, 作为开发的基础。 原则是, 第一这个项目一定要active, 有人一直在维护, 里面的功能设计要全面, 同时可扩展性强。有一天你要增加新的功能的时候, 就会发现当初选用一个很难扩展的框架是多痛苦。 第二就是性能, 你要用这个系统来做回测, 一定要快快快!!! 一个策略, 从想法诞生, 到测试买入卖出点的合理性, 到你开始样本外的移动测试, 蒙特卡洛模拟, 单就一个策略idea, 你起码测试10-100K次。 如果你要把这个idea不断演化, 回测测试起码再乘上个n倍吧。 如果一次回测超过半分钟, 你自己算算测一个策略要多久吧 。 结果是, 我们自己做了3个回测系统: 初级回测系统基于vectorized的方法, 忽略一些复杂交易要素,极大提高运算速度。回测速度在秒级(针对>100K数据点)。 中级回测系统考虑了所有交易要素, 模拟精准度很高, 回测速度在分钟级, 主要用于筛选过后的策略。 最后高级回测系统其实就是交易系统, 可以用历史数据回测, 或者直接切换到实盘。 这个主要用于模拟实盘交易跟踪策略。 我们的策略可以用简易的脚本构建 ,可以在3个回测系统里面自如的切换
实盘交易系统: 这个其实没有必要说太多, 前面的回测系统做好了, 才是第一步。 基于世面上有的CTP接口, 就可以搭一个实盘交易系统。 问题是, 一定要确保几件事儿。 1. 你的回测系统跟交易系统的误差要小, 要极小。 抛开下单成交问题, 两个系统所有的单据, 统计, 买卖点触发时间, 等等这些地方, 一定要一致。 这些可以缩减的误差一定要去除。 2. 成交, 模拟环境不可能达到实际交易情况, 如果你用限价单,止损单的话, 在模拟情况下成交,在真实情况为未必成交。 我们的回测系统要尽可能贴近交易系统。
数据: 是个大坑。 1分钟bar历史数据, 大家可以去交易开拓者上下载, 免费而且质量很好。 实时数据我们一直自己在下载着, tick数据生成bar数据, 里面的小坑无数。 不过细心解决不是大问题。我们自己实时生成的1分钟bar数据跟开拓者的一致,。