一个小统计

haotrader从2012年开始写起,第一个稳定版本建立git仓库在2014年1月15日。以前有一个主项目,查看代码数量时候用一个find正则表达式就完成了。后来因为项目文件大导致频繁刷新分解到了若干个小项目后一直没有统计。今天突然来了兴致,重新做了个小统计。

用搜索引擎很快找到了一段代码,然后编译了一个统计小工具,最后运行得到结果如下:
codelines

单位为行数,这么一看有60万行了耶。然而并不是,因为引用库的缘故,许多代码是别人写的,我只负责编译了一遍,不过还是有点小小失落,貌似自己写的代码没有到20万行。我记得项目分解前计算的行数已经过20万行了,怎么还变少了。奇怪,不过也无所谓了。

这里面包含的主要工具和项目有几个:
1 数据下载工具,主要是每周下载tick数据,然后进行校验和整理,保存为自己的格式。最近由于帮朋友提供数据,顺便改进为了一种更高效的保存方式,大幅减少了tick数据的硬盘占用量。
2 虚拟服务器,主要是用于模拟数据回放,达到实时或者快速回放的效果。
3 数据服务器,主要是实时数据的收集与多路广播,多品种。
4 客户端,包括图表,手动交易的各种方式,指标加载,策略加载与回测等等。这个是耗时最久功能最丰富的部分。
5 指标编辑项目。
6 策略编辑项目。包括简单的单文件策略以及复杂策略项目两种。其中项目型策略已经提供了回测时的调试功能。
7 回测文件分析器,主要是打开回测生成的文件,提供回测资金曲线以及统计数据。可以k图形式分笔显示交易,通过双击来在客户端标注每笔交易的入场出场位。
8 分布式服务器,主要用于调用分布式执行策略并分发给连接的客户端执行。最近加了个更新功能,改完指标或策略后终于可以不用房间到处跑就可以全局更新了。
9 分布式core项目。原来是内置在分布式服务器中,后来我发现可以解耦出来并且标准化,于是开启了这个项目,大大减少了编写过程中发生错误的可能性。
10 代码加密项目,一个轻量级代码加密与分割程序。
11 代码存储批处理,把加密后代码分段保存在不同云端的批处理程序。
12 Android 17。目前正在编写的项目型策略,以及与之匹配的分布式服务器代码。

接口方面:
1 oanda rest api / metatrader 数据接口,
2 interactive brokers下单接口。
3 oanda rest api 下单接口。
4 dukascopy java api 下单接口。
5 metatrader 快速下单接口,非轮询。
6 连接到basicquant.com的显示接口,为了保证执行效率显示会略微滞后。

主要包含的第三方库,这里几乎没有纯引用库的,基本都是下载源码自编译的,主要包括:
1 zlib库
2 curl库
3 jason库
库不多,代码却是挺多的,其中curl库占用的代码量大概23万行。

在编写haotrader过程中同时改写+编译的一些辅助软件。(不包含在代码库中)
1 lanmouse 用于两台电脑共享鼠标和键盘。
2 remotecontrol 用于远程控制某台电脑,包括文件和剪贴板。
3 shadxxxxcks windows用于连接代理服务器,精简了代码。
4 putty 远程ssh软件,也可临时作为隧道使用。

2017年haotrader停滞了一段时间开发,主要那会想要做点xaml的应用。终于顺便把c#认真学了一会。
目前国内貌似没有比较好的c++同类软件,可惜我的内置功能太多太杂,又没有适配高分屏,等到有空的话也许会提供一份下载,目前看还没有计划表。前些时候为了在服务器上跑,做了不少简化作图的选项,所以虽然是图形客户端,跑在服务器上消耗的资源可以非常少,实验时同时运行100+组参数类策略基本无压力。
最大的感悟,当初要是不写haotrader,而是开发个游戏什么的,现在应该可以爽歪歪了-_-。。。

screenshot

Leave a Reply