ATS,GoGoGo!
091213
前一篇中主要工作是挖通了发单通道,当时比较兴奋,起个标题叫<ATS,Done!>。呵呵,这是言过其实了,还有很多路要走呢?
这个周末,又向前迈出了4步,继续前进。
第一,解决了ab重复发单的问题。在ab里,如果取1min bar,那么一般来说买卖条件会在这一分钟内都成立,则每次一个新的real-time ticket数据进来,都被触发一次,于是这一分钟就足够让程序跑飞。最直观的解决思路就是下单同时检测持仓,如果已经有持仓就不要下单了,但这个说起来简单做起来难,应为实时数据网络时延是在范围内变化的,而之前发出去的单子成交也需要时间。这么一来,可能会出现已经发单,但还没成交,程序检测持仓为0,而继续发单的情况,所以就需要一步步走放一个不直接触发的单,然后触发它,如果成交了,再处理别的单子。网上有搜到个程序例子,是这个思路的,洋洋洒洒一大片的代码。我觉得太麻烦了,就看了看函数列表,想到一个不错的方法:取系统的时间,除个10取余数,则余数是一个0-9的计数器,我让它来触发买卖条件,而不是用每个实时数据的到来来触发。效果很好,问题解决了。
第二,写完了错误持仓的校正代码。主要是两部分,一部分是防止交易过量,系统跑飞的代码。另一部分是检验持仓和系统信号指向保持一致的代码。这些保护必不可少,比较简单,上面重复发单的问题一解决就都好办了。
第三,解决了本地网络掉线的问题。租了个VPS(虚拟服务器)可以运行3389,跑各种程序。淘宝上买的150一个月,以后看看都没有便宜的,现在比较忙没空砍价。
第四,解决了如何方便地实现人工监控的问题。在VPS上搭了个小网站,用截屏软件截下图,用ab命令写下(这个在周末没法测试)所有发送单和成交单的列表,然后统统传到网站的一个页面上。由于vps给一个固定ip,所以可以直接访问。这样,无论人在哪,只要能上网,就能非常方面的查看到系统运行的状态,甚至可以做自动交易的网上直播。为了方便起见,我还特地搞了两个版本,一个信息多,图片大,电脑上看。一个信息少,图片少,手机上看。这个工作一气呵成,全靠高中打下的良好基础了。
下面放上一些图片,留作纪念吧。
首先是用于电脑的网页版的在线监视:
接下来是用于手机的在线监视。
用来截屏的软件和设置
用IIS架起网站
如果需要人工干预,则登录3389
手机实物上的显示效果
如果手机上发现状况,人又外出了,就靠umpc+天翼3G来登3389远程控制vps
网上直播,太牛了,还能这样搞:)
技术宅是真的宅~
呵呵,披荆斩棘解决问题的过程让人愉快又是一个三点,顶不住了…