Ⅰ 高频交易系统怎样在多线程和端口通讯之间取舍
首先, 系统各业务功能的模块化与主程序采用什么样的部署运行状态(多线程或多进程)是不矛盾的,在各部分系统用同一种编程语言的前提下,两者可以轻松地同时得到。这也是大家在答案中都提到过的解耦,但如果是多语言开发的系统,彼此之间还是需要数据通讯,或者是多个策略需要共用一个前端数据源,比如交易所只允许接一个连接,多个策略系统要用,可能没办法部署在一台机器上,这样的情况下网络通讯都不可避免,可以升级通过内部网络和机器硬件来处理,换句话说,得具体问题具体分析和优化。
最后,一点建议,跟我们最近的一个R语言的策略开发SDK实例相关,R语言层面写的策略只能是单线程的,而后端需要支持多个交易所的行情数据采集源、交易通道接口,必须是多线程,前后之间通过用C++开发R语言扩展包来衔接,中间就是采用的共享内存数据来通讯的,供借鉴参考。
Ⅱ 什么是高频交易系统
1、高频交易系统概述
高频交易是指从那些人们无法利用的极为短暂的市场变化中寻求获利的计算机化交易。
比如,某种证券买入价和卖出价差价的微小变化,或者某只股票在不同交易所之间的微小价差。
这种交易的速度如此之快,以至于有些交易机构将自己的“服务器群组”(server farms) 安置到了离交易所的计算机很近的地方,以缩短交易指令到达交易所的距离。
2、高频交易系统特点
(1)交易指令完全由电脑发送,对市场数据的响应延时在微秒级,有的甚至是纳秒级;
(2)系统由专用的软、硬件组成;
(3)系统的硬件需要放在离交易所主机很近的位置上,所谓 co-location。
3、高频交易的两大核心要素
(1)一是产生高频交易信号的交易策略;
(2)二是优化交易执行过程的算法。
1、高频交易系统的特点
高频系统是一种非常有特点的计算机应用。在输入和输出层面,数据比较简单。
输入用的都是市场行情数据,用的是Tick级别,甚至是更细颗粒度,比如用order book上数据。
输出就是报单到交易所,执行层面上频率会比较高,有可能会大量、频繁地向交易所报单。系统运行时处理的信号源是交易所播报的实时行情,要求用最快的速度对信号进行拆解、计算和输出,对于系统的实时计算能力的要求也比较高。
同时,一般高频交易系统从逻辑的层面上来说是比较简单的。
2、编程语言的选择
目前,高频交易系统最主流的是C/C++语言。
这是一种优点及其很显着的语言。相比依赖虚拟机的JAVA和Python而言,C/C++是一种非常接近底层硬件的开发语言,对硬件操控的控制度、灵活度都超过其他语言,在性能上的把控力会更强。
但是,其语法相当复杂,比较难学,没有受过系统编程训练的开发者,掌握起来比较困难。
同时,使用C/C++编程也可以获得及其优越的性能,这对于高频交易系统来说,就非常重要了!并且,国内大多数的交易所提供的都是C++级别的类库,只有用C++进行开发,才能方便进行系统对接。
Ⅲ 期货程序化高频交易托管服务器(飞马系统或者CTP系统)
我们是CTP系统
Ⅳ 高频交易软硬件是怎么架构的
首先,高频交易不一定是套利算法。事实上HFT做的最多的业务是做市(market making),可以是把商品从一个交易所倒卖到另一个交易所,也可以是在同一个交易所内部提供某种商品的流动性。这两种方式的共同点都是让人们可以特定地点买到本来买不到的商品,所以本身就是有价值的,收服务费就可以盈利。
二,延迟和流量是不同的概念。低延迟不等于高数据量,事实上大部分时间交易数据流量并不大,一个market一天最多也就几个GB。但HFT系统需要在流量高峰时也能快速响应,所以更看重延迟。这也是HFT系统和互联网系统最大的区别所在,HFT系统的精髓在于把单机的软硬件系统的性能发挥到极致,而不是像互联网那样强调高负载和延展性,动辄用几千台机器搭集群的做法在这里是不适用的。用互联网系统的性能指标来认知HFT系统也是没有意义的,像淘宝这样的应用需要保证交易的正确和一致性,包括从终端用户的浏览器到淘宝后台到银行接口之间一系列复杂的事务性数据操作,这个场景和HFT直接对接交易所走高速线路收发交易指令有天壤之别,不能用同样的思维去理解。
三,一个HFT业务包括从主机到交易所的整条通信线路,在这条线路上有很多段不同的延迟,是需要分开讨论的。如果是做跨交易所的交易,首先需要考虑的是两个交易所之间的网络延迟。当数据通过网络到达主机的时候,有一个最基本的tick-to-trade延迟,是指主机接收到数据到做出响应所需的时间。但这个东西的测量很有技术含量,根据不同的测量方式,它可能包括或不包括网卡及网络栈的处理时间。所以拿到一个HFT系统的延迟数据时,首先要搞清楚它指的是什么,然后再来讨论。
题主提到从一个直连计算节点的router的角度来观测,这是一个理论上看起来可行但实际仍然很模糊的概念,因为一般router本身是不做存储和处理的,一个router会收发大量不同的数据,要理解一个接收到的包是对之前发出去的某个包的“回应”,是需要相当的处理逻辑的,一般很难这样测。比较合理的测试仍然是在主机端做记录,测试从收到市场数据(tick)的TCP/UDP包到发送交易指令(trade)包的时差。目前(2014)的情况是,这个延迟如果平均控制在个位数字微秒级就是顶级了。因为网络传输才是延迟的大头,如果网络上的平均延迟是1毫秒(1000微秒)以上,你的单机延迟是2微秒还是20微秒其实是没有区别的。一般单机比网络低一个数量级就可以了,比如网络上需要100微秒(很现实的数字),单机控制在10微秒足以保证速度上没有劣势。至于公众报道,有时是为搏人眼球,难免有夸大的成分,不必太当真。
Ⅳ 怎么才能做高频交易
你好,高频交易实现方法主要是先想好交易策略,然后把策略转化为程序化,然后通过后期的测试做成一套完整的自动化交易系统。
Ⅵ 期货人工高频交易具体怎么操作的
这种一般都是以一分钟的走势图来做了!长期这样做,不用几个月你也可以!但这样做风险很大!
Ⅶ TB怎么实现高频交易
高频交易分为程序化高频和手工高频。
程序化高频是利用计算机编写的程序,利用计算机开平仓的快速,持仓1秒至数秒就可完成的交易。
手工高频交易是不同于计算机编程,速度稍慢,持仓1秒至数秒就可以完成交易,有的也数1分钟至3分钟。