发布网友 发布时间:2022-04-29 02:37
共2个回答
懂视网 时间:2022-04-19 05:47
latency指tick to trade. 可以容许少数核心函数用cython或直接c来实现。#include
uint64_t nanotime(const struct timespec *ts)
{
return (ts->tv_sec * kT_ns_in_s) + (ts->tv_nsec);
}
uint64_t n=50000;
uint64_t sum=0;
uint64_t latency=0;
for (i = 0; i < n; i++) {
clock_gettime(CLOCK_REALTIME, &start);
clock_gettime(CLOCK_REALTIME, &end);
sum += nanotime(&end) - nanotime(&start);
}
printf("Latency: %d ns
", sum / n);
比较现实的说是1ms级别的,如果你用python现成的library(urlib, request)接收数据至少有100us级别的延迟,一般交易系统需要多线程,python的GIL又会增加延迟,而且交易最忙的时候因为处理大量数据,python的GC更容易发生。用C或Cython写核心部分不能提高很多,因为python的延迟是因为language design而不是computation造成的。当然这些问题可以改进,比如自己做一套tcp连接程序什么的,不过这些恐怕并不比写c++更容易。热心网友 时间:2022-04-19 02:55
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++进行开发,才能方便进行系统对接。