在 .NET 里开发高频低延迟、量化交易相关的应用都要哪些技术?

论坛 期权论坛 期权     
stt106   2018-9-30 17:14   3944   4
虽然高频低延迟是 C++ 的强项,但是也有些基金公司、银行甚至交易所用  .NET 开发这方面的应用。我猜可能是为了和前端更好的融合吧。不管什么用因,在  .NET 里要做这方面的开发,需要哪方面具体的技术?哪些具体的库?
分享到 :
0 人收藏

4 个回复

倒序浏览
2#
匿名用户   | 2018-9-30 17:14:38 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
3#
沈万马  4级常客 | 2018-9-30 17:14:39 发帖IP地址来自
很多时候人们都以为那些高频交易用C++是因为有了C++的性能才能有高频,所谓“高频低延迟是c++的强项”。
错。

C++的性能解决的是性价比问题——也就是当你的系统已经优化到无可优化了,发现剩下可以优化的部分来自于语言本身了,才是C++语言发挥价值的地方。

实际上搭建一个高频交易系统,在不考虑最大化成本收益的前提下,应用.Net根本不需要什么特别的技术。所有所谓实现高频必需的技术都是所有语言都可以通用的,例如如何降低计算量、提高数据流量和降低延迟。比方说绝大多数延迟来自计算、传输、和等待。这些东西如何干掉,靠的是对系统的理解。如何避免GC?如何防止线程被挂起?如何防止TCP剪窗口?如何正确缓存和查询历史请求?等等。偶尔有些快餐式的包可以用,但更多时候解决方案是语言不相关的。

所谓“高频低延迟是c++的强项”,更多时候是因为熟练使用C++的团队性能相关的知识储备更丰富。可谓是幸存者偏差。

等你开始需要考虑最大化成本收益的时候,你会发现.Net的托管特性是阻碍成本降低的一大因素,包括内存管理、安全检查等,这时候与其特化利用.Net Native到一定程度不如直接Native C++。但其实在此之前,.Net完全可以实现比C++不差的性能,主要是需要贵不少的硬件而已。
4#
Rascalrr  1级新秀 | 2018-9-30 17:14:40 发帖IP地址来自
用C++还是.net 其实不重要。

我手头有个旧的C++写的数据网关用于分发L2行情(沪、深、上期全市场),前年市场交易规模上万亿之后就频频出故障。没时间也懒得深究问题出在哪里,就自己用.net写了个新网关,signalr做数据分发,附带实时全市场计算些简单指标,用起来完全没问题,对硬件要求也不高。

稳定状态下全市场大概是每秒8000条数据,交易高峰时大约是每秒13000~17000条数据。
5#
软件民工  1级新秀 | 2018-9-30 17:14:41 发帖IP地址来自
说dotnet性能不行的人,往往都是不会dotnet的。还有些就是了解不多,一知半解。c#语言真学起来,其实蛮复杂的。用不好肯定没法发挥它的性能,这时候,要做的事谦虚的向懂的人学习,而不是鄙视。
从编译原理角度,Ast相同,性能取决于后端,而不是语言。
比如,CLang,跟开源版本的,用LLVM的dotnet,性能会有什么差别?小米的高通820会比山寨机的同频高通820跑得快?
关于GC,只要不new就不会触发full gc。一般的写法,都是事先把该new的对象都new了, 然后进行高性能的运算,这样gc就没有影响。
还有,Gc是可以指定代来回收的,回收0代和1代都很快。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP