您现在的位置是:首页 > 期货学习资料 > 高频交易系统高频交易系统
高频交易系统资讯技术探讨系列 (2)[系统交易]
龙听2021-06-08【高频交易系统】人已围观
简介
4. 演算法设计
HFT系统无止境的追求执行效率,就软体面,效率决定于「演算法的设计方式」、「选择的发展语言」,甚至连使用的「作业系统」都有关系。
先从演算法的设计谈起
4. 演算法设计
HFT系统无止境的追求执行效率,就软体面,效率决定于「演算法的设计方式」、「选择的发展语言」,甚至连使用的「作业系统」都有关系。
先从演算法的设计谈起,以HFT系统中常常必须处理的排序与搜寻来说(过去学习资料结构时,光是排序、搜寻就有许多不同的演算法,「旅行者问题」、「背包问题」折磨多少学者的脑细胞),不同演算法的效率不同。
评估演算法效率的指标,包括时间複杂度(执行过程的耗时)、空间複杂度(执行过程的记忆体耗用)与正确性(对于大空间的搜寻,不见得可以即时得到全域最佳解,只能力求接近)等。
交易过程的许多步骤,都涉及搜寻的工作,一般的搜寻策略包括线性搜寻与二元搜寻,複杂空间的搜寻策略则可以写一整本书,很多AI的演算法都用于空间搜寻。
举例来说,我目前有一个研究,研究的目的是验证短期Pattern的持续性;研究中运用日内资料(台指期货秒K资料),动态搜寻过去一段时间(例如5天)的最佳策略组合(解空间包括20馀种技术指标组合、指标的参数组合,与指标间的逻辑运算组合),再外推一段时间(例如1天)以验证策略效果。实证过程使用前滚式移动视窗测试。(来源 www.cxh99.com )
实证系统用C#编码,同时动用数十台电脑平行处理,演算法则用基因演算法代替穷举法(注:我们曾用模拟退火法,效果比穷举法好很多,但还是不及基因演算法。模拟退火法与基因演算法等AI领域方法,都是用来解决搜寻问题的方法)。
5. 软体开发平台选择
其次是使用的语言,要作HFT,可以选择使用C++或C#、Java(注:C#简单的说就是微软的Java),C#与Java将C作了简化,好处是编码较C++容易(开发时间较短),代价是无法像C++那麽「接近硬体」,C++可以用指标(Pointer)对记忆体作较佳控制,也可以方便管理记忆体(动态释放用不到的记忆体,所谓Garbage Collection),在HFT竞速过程中会是比较好的选择。
那麽BASIC家族的语言效率如何?写这篇文章同时,作了一个简单测试,在同样的演算法、同样的硬体条件、同样编译成执行档,情形下 VB. Net的速度比VC# .Net的速度慢约1倍。VBA就更不用提了。
6. 讯息传递方式
最后提到HFT系统不同子系统间的讯息传递(Message)。讯息传递系由事件(Event)驱动,例如「取得市场报价」子系统收到来自于市场的报价后,播送讯息(Publication),其他单元则接收讯息(Subscription),此过程称为「播送接收传讯」(Pub-sub Messaging)。在一个HFT系统中有众多的子系统,彼此间依据时序作複杂的讯息传递。(来源 www.cxh99.com )
讯息传递有两种方式,一种是使用TCP/IP socket,此法建立传送与接收者间的专用通道,当子系统的传讯複杂时可能影响效率;另一种选择是多方播送方式(Multicast),送迅子系统儘管将讯息丢出去,由收讯子系统负责接受,由于不是专用通道,可靠性较低,但效率较好。
很赞哦! ()
相关文章
随机图文
-
研究上千指标后得出六大结论:简单的就是最好的
曾几何时,对指标狂热痴迷,早期花了四五年,多少个日夜,挑灯夜战,收集了2000多个指标,最后研究来研究去,得出一个结论,任何指标的变化,离不开价与量。透过现象看本质,简单的就是最好的。 -
满仓被套50%?期货交易中必懂的“概率论”常识
一沙一世界,一花一天堂。有时候一些简单的原理就蕴含着无穷的投资智慧,值得我们感悟和思考。 在本文中,作者并没有探讨任何复杂的数学公式,只想从概率论最基本的原理中剖析出一 -
股票期货,不要把频繁交易当成了努力...
股票期货交易最需要努力,但是更多的时候不是要求你努力的去多做,去争取抓住每一次机会,而是努力的克制等待,减少进场交易的冲动。 交易员频繁的交易要么来自于寻找买卖刺激的 -
高频交易系统资讯技术探讨系列 (1)[系统交易]
曾经在论坛中介绍一本谈高频交易的好书(All About High-Frequency Trading),并整理其中第三章提到高频交易手法的一部分,该书有六章,其中第三章、第四章与第五章都很精彩,今天