A. 高频交易和统计/机器学习套利模型,哪个技术含量高
高频交易并非只拼速度就可以。 数据流上有很多东西需要处理,交易所发给你的一团乱麻似的玩意里面有不少信息是需要自己提取的。速度水平相近的情况下,比拼的就是谁能更好地理解数据。
现阶段大家对高频的光速小子印象,主要是因为在速度方面有很多容易做的工作(比方说凿个山洞让通信线路变直来缩短距离省上几个微秒,是不是比绞尽脑汁搞模型更简单粗暴?),既然这块大矿还没采完,自然对其他智能化模型的需求不高。但是在可见的将来,当系统速度达到性能瓶颈的时候,肯定是会需要更多智能方面的研发,对此有兴趣的朋友不用着急。
至于挖掘机技术哪家强,我的看法是理解业务始终是第一位的。我们需要清楚的知道自己在做什么,技术性能等无非是为解决问题的手段,而非问题本身。而理解业务找到核心问题所在,往往才是最困难的部分。
B. 常见JAVA运行时异常有哪些
1,java.lang.NullPointerException
这个异常的解释是 "程序遇上了空指针 ",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。
2,java.lang.ClassNotFoundException
异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可
3,java.lang.
这个异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了.
4,java.lang.NoSuchMethodError
方法不存在错误。当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。
5,java.lang.IndexOutOfBoundsException
索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。
6,java.lang.NumberFormatException
数字格式异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。
7,java.sql.SQLException
Sql语句执行异常
8,java.io.IOException
输入输出异常
9,java.lang.IllegalArgumentException
方法参数错误
10java.lang.IllegalAccessException
无访问权限异常
(2)高频交易通信扩展阅读:
Java技术应用领域:
1、Android应用
许多的 Android应用都是Java程序员开发者开发。虽然 Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言所编写。相当一部分的手机中都支持JAVA游戏,这就使很多非编程人员都认识了JAVA。
2、在金融业应用的服务器程序
Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全 。大型跨国投资银行用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。
3、网站
Java 在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,SpringMVC,Struts2.0以及frameworks。即使是简单的 servlet,jsp和以struts为基础的网站在政府项目中也经常被用到。例如医疗救护、保险、教育、国防以及其他的不同部门网站都是以Java为基础来开发的。
4、嵌入式领域
Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在智能卡或者传感器上)。
5、大数据技术
Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。
6、高频交易的空间
Java平台提高了这个平台的特性和即使编译,他同时也能够像 C++ 一样传递数据。正是由于这个原因,Java成为的程序员编写交易平台的语言,因为虽然性能不比C++,但开发人员可以避开安全性,可移植性和可维护性等问题。
7、科学应用
Java在科学应用中是很好选择,包括自然语言处理。最主要的原因是因为Java比C++或者其他语言相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。
C. 学Java之后可以从事什么工作
1、Android应用
许多的 Android应用都是Java程序员开发者开发。虽然 Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言所编写。相当一部分的手机中都支持JAVA游戏,这就使很多非编程人员都认识了JAVA。
2、在金融业应用的服务器程序
Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全[39] 。大型跨国投资银行用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。大多数情况下,Java被用在服务器端开发,但多数没有任何前端,它们通常是从一个服务器(上一级)接收数据,处理后发向另一个处理系统(下一级处理)。
3、网站
Java 在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,SpringMVC,Struts2.0以及frameworks。即使是简单的 servlet,jsp和以struts为基础的网站在政府项目中也经常被用到。例如医疗救护、保险、教育、国防以及其他的不同部门网站都是以Java为基础来开发的。
4、嵌入式领域
Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在智能卡或者传感器上)。
5、大数据技术
Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。
6、高频交易的空间
Java平台提高了这个平台的特性和即使编译,他同时也能够像 C++ 一样传递数据。正是由于这个原因,Java成为的程序员编写交易平台的语言,因为虽然性能不比C++,但开发人员可以避开安全性,可移植性和可维护性等问题。
7、科学应用
Java在科学应用中是很好选择,包括自然语言处理。最主要的原因是因为Java比C++或者其他语言相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。
D. 高频交易系统怎样在多线程和端口通讯之间取舍
首先, 系统各业务功能的模块化与主程序采用什么样的部署运行状态(多线程或多进程)是不矛盾的,在各部分系统用同一种编程语言的前提下,两者可以轻松地同时得到。这也是大家在答案中都提到过的解耦,但如果是多语言开发的系统,彼此之间还是需要数据通讯,或者是多个策略需要共用一个前端数据源,比如交易所只允许接一个连接,多个策略系统要用,可能没办法部署在一台机器上,这样的情况下网络通讯都不可避免,可以升级通过内部网络和机器硬件来处理,换句话说,得具体问题具体分析和优化。
最后,一点建议,跟我们最近的一个R语言的策略开发SDK实例相关,R语言层面写的策略只能是单线程的,而后端需要支持多个交易所的行情数据采集源、交易通道接口,必须是多线程,前后之间通过用C++开发R语言扩展包来衔接,中间就是采用的共享内存数据来通讯的,供借鉴参考。
E. 学习java以后可以做哪些事情呢
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
对于很多新手来说,刚开始接触Java会很迷惘,不知道Java可以做什么。其实Java 可以做的东西太多了,手机游戏、中间件、软件、网站,电脑游戏,以及现在流行的安卓手机app等,都是由java语言编写的。由于Java拥有很高的安全性、平台移植性等,所以受到广大程序员的喜爱。
一般编程语言都可以做软件的,Java 也不例外,例如Eclipse,MyEclipse等知名Java开发工具。有关开发软件组件,可以了解Java Swing编程 或者 awt 相关知识。
对于学生来说,最关心的是java能做什么,市场上找什么工作都跟java有关。现在很多大型网站都用jsp写的,JSP 全名为 Java Server Pages。它是一种动态网页技术,比如我们熟悉的163,一些政府网站都是采用JSP编写的。所以学习Java的同学可以找编写网站方面的工作,而且现在找这方面的岗位比较多。
除了这些Java还有很多用途,家里的洗衣机、微波炉等家电有可能是java控制的,这是单片机的知识。找到自己喜欢的一个方向,专攻一个领域,才会做出成绩。
F. 高频交易软硬件是怎么架构的
首先,高频交易不一定是套利算法。事实上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微秒足以保证速度上没有劣势。至于公众报道,有时是为搏人眼球,难免有夸大的成分,不必太当真。
G. 期货中说的高频交易 高频对冲是怎么样的他们都没有手续费吗利用微小的利润能赚钱怎么做的
符合以下三点的,就可以叫做高频交易(或高频对冲):
1、交易指令完全由电脑发送,对市场数据的响应延时在微秒级(VBA退散)。
2、系统由专用的软硬件组成,研发时需要大量计算机专家级的工作。
3、系统的硬件需要放在离交易所主机很近的位置上,所谓co-location。并且得到专门的准入许可证,交易指令直接发送至交易所(而不是通过券商中转)。
高频交易照样要交手续费,每次交易收益虽低,但由于交易频率高,收益也很可观,但是实际上高频交易不一定能赚钱。
1、高频交易赚钱的的确有,赔钱的也大把存在。因为高频交易系统对低延迟的敏感性,研发时需要投入大量的人力物力,要高薪聘专业的计算机专家,花钱买昂贵的硬件,租用专门的微波通信线路。但这一切也不能保证你得到一个预想中的“低延迟”系统。整个系统的设计和开发是一个非常复杂的工程。而且交易系统对于准确性和稳定性要求极高,不够精密的话上线后会出现各种问题,根本无法使用。如此大规模的投入,很多时候换来的是一个残次品系统,非常非常多的公司因为搞不定技术问题而赔钱关门。
2、这里有一个深远的问题是,高频交易是一个金融和计算机结合的产业,但同时精通这两者的人才是非常稀少的。金融人士主导的项目会缺乏对技术的判断能力,IT人士主导又会对需求把握不清。在对性能不敏感的行业这可能不是太大问题,可以按照传统的甲方乙方方式解决,有问题慢慢扯皮。但在这个高竞争行业,没有太多时间可以用来浪费在扯皮上。投产的系统可能慢上几微秒就是废物,而那时往往会发现基本的设计就有问题,根本无力回天。这种超高难度的研发压力,其实才是高回报的来源。
注意:高频交易并不适合普通投资者。
H. 学完java以后能做什么工作
Java就业方向主要分为Java网站建设、Java企业级应用开发、Java游戏开发、Java大数据开发四个方向
1、Java网站建设
近几年来,网站建设业务一直呈快速上升势头,行业市场越来越大。新技术的应用将促使企业网站建设更具魅力。Java编程语言也将使网站结构更紧密,访问更流畅,更能适应新的要求。但是以目前的市场分析Java做网站成本太高,对硬件要求比较高,中小企业大都会选择使用PHP语言进行开发,但是像大企业还是比较喜爱Java技术。
2、Java 企业级应用开发
目前Java在许多行业的企业信息应用方面的应用非常多,比如OA、邮箱、股票、金融、考试、物流、医疗、矿山等信息方面的系统。该方向和行业密切相关,所以,这是一个经验型的发展方向。Java开发者在这方面的需求也非常大,待遇也相当不错,工资水平与Java互联网方向的差不多,很容易在一些大型企业就业。
3、Java游戏开发
Java本身就可以用来编写游戏脚本,目前也有例如beanshellgroovy等脚本语言可以方便的无缝的和Java语言进行交互,这些都极大的方便了Java游戏编程。国内游戏专业人才的需求一直存在缺口。
4、Java大数据开发
大数据无疑是目前IT领域的最受关注的热词之一,虽然大数据框架的编写支持很多开发语言,但是Java在大数据开发方面有很大的优势,目前流行的大数据Hadoop框架、map-rece框架,很多部分都是用开源的Java语言编写,因此Java在大数据方面有很大优势!
I. 高频交易系统怎样在多线程和端口通讯之间取舍
果通讯方式一样,比如都用共享内存,那么多线程和多进程间的主要区别就只有程序崩溃时的隔离特性,多线程一崩溃就全完蛋,多进程只会影响一部分。
如果还考虑软件工程意义,不同进程通常意味着不同的程序,甚至不同的项目,操作风险会降低,这是很多交易系统做两个进程而不是一个进程的重要原因,风控进程和策略进程软件工程意义上隔离,改策略不会增加乱报单的可能性。
这两点考虑到了之后,进程数越少越好。不同逻辑流(线程)间的同步越少越好。低计算量下,最低延迟通常是单线程逻辑得到的。
J. Java学会之后工作方向都有哪些呢
1:Web开发
Web开发语言很多,Java是其中之一。Java在开发高访问、高并发、集群化的大型网站方面有很大的优势,例如人人网、去哪儿网、美团等。
2:Android开发
Android是全球最大的智能手机操作系统,根据Strategy Analytics最新研究报告显示,全球智能手机出货量在2016年第三季度达到3.75亿台。Android操作系统获得了创纪录的88%全球市场份额,挤压了苹果iOS和其他平台。Android应用的主要开发语言就是Java。
Android 从2010年才开始走入大众视野,虽然最近几年发展非常快速,但人才积累却没有跟上,优秀的Android开发工程师仍然存在不小的缺口,这也是导致Android开发人员工资高,难招人的原因。
3:客户端开发
Java客户端开发主要面向政府、事业单位和大型企业,如医疗、学校、OA、邮箱、投票、金融、考试、物流、矿山等信息方面的系统。
但是客户端开发往往不是这些企业的主要业务,而是为主要业务提供辅助,以便企业能够更加高效的运营,因此必然不是企业的主要部门,虽然待遇可能和前面两者差不多,但是前景却不看好,企业没有精心打磨这些产品并推向市场的动力,都是内部员工使用,能用就好。