交易网络与环境

最近比较激动,连续攻克多个策略和IT的难点,以及物理装备的提升。完成今天的最后一段code,测试完毕并开始运行,就忍不住上来发帖了。发完贴打算好好休息一下,因为确实有点累。

先说策略。IT搭建完毕,我认为策略相反是比较简单的内容。如果不涉及复杂的模型比如人工智能这种的,大多数策略大同小异。一般来说,策略本身的搭建思路主要分两种,一种是归纳,一种是演绎。归纳我的思路主要是需要快速寻找当前市场特征,写出短小精悍的程序运行,演绎则是利用大众认知偏差进行的。这两种思路可以展开写不少东西。不过这里避开不谈,我要强调的是策略本身的可操作性。因为策略本身是需要不断进行修正的,所以可操作性很重要。什么意思呢,我举个例子。比如一个策略挂单后会持仓隔夜,当天我发现一个重要的特征可能需要加入到策略里面去,那么第二天我要更换这个策略,新策略就要考虑到如何处理这个持仓等的问题。所以在策略设计之初,就需要加以考量。详细的情况就不解释了。

下面说下IT,为了搭建我这个工作环境可真是煞费苦心。因为自己造的轮子,我是不打算搞到公网的服务器上去的,可是由于伟大的长城存在,数据的稳定性很是问题。以前我用的SSH,对断网的响应很慢,速度感觉也不咋地,所以最近搞了shadowsocks,才发现这个东东是很不错的。作为一个对安全性有极高癖好的人,最终把这个玩意研究了一通,然后自己编译出客户端来用。搭了三个服务器,数据完全走代理,一个断了另一个自动补上。不过年末的一天突然发现所有代理同时被强,太彪悍了。因为三个服务器不仅分布于三个不同的物理位置,而且分布于三个不同的vps商!同时当晚FXCM,Oanda全部断网。但直连的一家小券商确是ok的。于是我决定修改数据服务器,读取逻辑改了一通,最重要的还研究更快速的合并数据源的方法。为了速度强迫症又犯了。为了显示高大上我决定把magic number用上以提高合并数据的速度。

inline int double2int(double d)
{
 d += 6755399441055744.0;
 return reinterpret_cast<int&>(d);
}

以及诸如此类的位运算:

ndelta <<= 20;
index <<= 26;
UINT un = ndelta + np;

好吧,其实本来速度就完全不是问题。。。

接下来我终于搭建好了一个物理的交易环境,无图但是有真相。

右边最近的显示器和笔记本是两台电脑。把synergy的代码抠过来,然后完全自己重写了一个共享鼠标键盘的轮子。

但是这还没完,因为我讨厌这么多电脑堆放在面前,决定精简桌上的电脑,但是这样就需要远程控制软件了。网上查找vnc,teamviewer这些东西实在很不好用而且安全级别不高呢。windows10家庭版也不带远程控制啊。

最后我决定再装一把逼,撸一个远程控制软件出来。经过三天的折腾 – 终于就在刚刚,一个我觉得very compatible的远程控制软件终于撸出来了。

通过本次学习,本人认识到之前的网络编程是多么的肤浅,在了解大量异步通讯,重叠模型,完成端口/Completion Port的高级概念后,最终用select双工通讯做好了本项目。搞了半天还是在搞IT啊。(ˉ▽ˉ;)…

Leave a Reply