A. 做量化交易选择什么语言好呢
量化交易,就是把人能够识别的信息变成数字,输入给计算机程序处理,辅助或者代替人类的思考和交易决策。
初学者碰到的第一个问题就是工具的选择。首先大部分交易员本来不会写程序,选择任何一个语言进行策略开发,都有不小的学习成本。更重要的是,选择了一门语言,接下来开发环境、人员招聘、数据接口与平台、甚至同类人群之间的交流、遇到问题后的支持,都跟着被“套牢”。所以从一开始就必须慎重对待。
先给出答案:对于还没有确定一套固定量化环境的,建议用Python。
量化交易员面临的大致选择有:C/C++/java/C#/R/Matlab/excel等。我们从以下几个方面考虑简单做个对比。
注意:这里假设你团队规模在50人以下。
1 学习成本和应用的广泛性
C、C++的特点是速度最快,但要想用好,必须对计算机底层架构、编译器等等有较好的理解,这是非计算机专业的人很难做到的,对于做量化交易来说更是没有必要。
Java本来是SUN的商业产品,有学习成本和体系的限制,也不适合。
Excel面对GB级别的数据无能为力,这里直接排除。
Python、R和Matlab学起来都简单,上手也快,可以说是“一周学会编程”。但R和Matlab一般只用来做数据处理,而Python作为一门强大的语言,可以做任何事,比如随时写个爬虫爬点数据,随时写个网页什么的,更何况还要面对处理实时行情的复杂情况。
2 开始做量化分析后,哪个用起来碰到问题最少,最方便省事?
用历史数据的回测举例。假设我们有2014年所有股票的全年日线,现在我们想看看600001的全年前10个最高股价出现在什么时候。python世界有个强大的pandas库,所以一句话就解决问题:
dailybar[dailybar [‘code’]==‘600001’].sort_values([‘close’].head(10)
R/Mathlab等科学语言也可以做到。
C/C++没有完备的第三方库。如果为了做大量的计算,要自己实现、维护、优化相应的底层算法,是一件多么头疼的事。
Python从一开始就是开源的,有各种第三方的库可以现成使用。这些底层功能库让程序员省去了“造轮子”的时间,让我们可以集中精力做真正的策略开发工作。
3 现在我们更进一步,要做实时行情分析和决策
以A股的入门级L1数据为例,每3秒要确保处理完3000条快照数据,并完成相应的计算甚至下单。这样的场景,C和C++倒是够快了。所以行情软件比如大智慧、同花顺等客户端都是使用高效率的语言做的,但像客户端那样的开发量,绝大部分量化交易机构没能力也没必要去做吧。
python的速度足够对付一般的实时行情分析了。其底层是C实现的,加上很多第三方的C也是C实现,尽管其计算速度比不上原生C程序,但对我们来说是足够啦。
4 quant离职了,他的研究成果怎么办
Python是使用人群最多、社区最活跃的语言之一,也是最受quant欢迎的语言之一。如果你是老板,你能更容易地招聘到优秀人材,享受到python社区带来的便利。
附几个量化中常用的python库:
- Pandas:
天生为处理金融数据而开发的库。几乎所有的主流数据接口都支持Pandas。Python量化必备。
- Numpy:
科学计算包,向量和矩阵处理超级方便
- SciPy:
开源算法和数学工具包,与Matlab和Scilab等类似
- Matplotlib:
Python的数据画图包,用来绘制出各类丰富的图形和报表。
PS: Python也是机器学习领域被使用最多的语言之一。像tensorflow、scikit-learn、Theano等等对python都有极好的支持。
B. 怎么学习python量化交易
下面教你八步写个量化交易策略——单股票均线策略
1 确定策略内容与框架
若昨日收盘价高出过去20日平均价今天开盘买入股票
若昨日收盘价低于过去20日平均价今天开盘卖出股票
只操作一只股票,很简单对吧,但怎么用代码说给计算机听呢?
想想人是怎么操作的,应该包括这样两个部分
既然是单股票策略,事先决定好交易哪一个股票。
每天看看昨日收盘价是否高出过去20日平均价,是的话开盘就买入,不是开盘就卖出。每天都这么做,循环下去。
对应代码也是这两个部分
definitialize(context):
用来写最开始要做什么的地方
defhandle_data(context,data):
用来写每天循环要做什么的地方
2 初始化
我们要写设置要交易的股票的代码,比如 兔宝宝(002043)
definitialize(context):
g.security='002043.XSHE'#存入兔宝宝的股票代码
3 获取收盘价与均价
首先,获取昨日股票的收盘价
#用法:变量=data[股票代码].close
last_price=data[g.security].close#取得最近日收盘价,命名为last_price
然后,获取近二十日股票收盘价的平均价
#用法:变量=data[股票代码].mavg(天数,‘close’)
#获取近二十日股票收盘价的平均价,命名为average_price
average_price=data[g.security].mavg(20,'close')
4 判断是否买卖
数据都获取完,该做买卖判断了
#如果昨日收盘价高出二十日平均价,则买入,否则卖出
iflast_price>average_price:
买入
eliflast_price<average_price:
卖出
问题来了,现在该写买卖下单了,但是拿多少钱去买我们还没有告诉计算机,所以每天还要获取账户里现金量。
#用法:变量=context.portfolio.cash
cash=context.portfolio.cash#取得当前的现金量,命名为cash
5 买入卖出
#用法:order_value(要买入股票股票的股票代码,要多少钱去买)
order_value(g.security,cash)#用当前所有资金买入股票
#用法:order_target(要买卖股票的股票代码,目标持仓金额)
order_target(g.security,0)#将股票仓位调整到0,即全卖出
6 策略代码写完,进行回测
把买入卖出的代码写好,策略就写完了,如下
definitialize(context):#初始化
g.security='002043.XSHE'#股票名:兔宝宝
defhandle_data(context,data):#每日循环
last_price=data[g.security].close#取得最近日收盘价
#取得过去二十天的平均价格
average_price=data[g.security].mavg(20,'close')
cash=context.portfolio.cash#取得当前的现金
#如果昨日收盘价高出二十日平均价,则买入,否则卖出。
iflast_price>average_price:
order_value(g.security,cash)#用当前所有资金买入股票
eliflast_price<average_price:
order_target(g.security,0)#将股票仓位调整到0,即全卖出
现在,在策略回测界面右上部,设置回测时间从20140101到20160601,设置初始资金100000,设置回测频率,然后点击运行回测。
7 建立模拟交易,使策略和行情实时连接自动运行
策略写好,回测完成,点击回测结果界面(如上图)右上部红色模拟交易按钮,新建模拟交易如下图。 写好交易名称,设置初始资金,数据频率,此处是每天,设置好后点提交。
8 开启微信通知,接收交易信号
点击聚宽导航栏我的交易,可以看到创建的模拟交易,如下图。 点击右边的微信通知开关,将OFF调到ON,按照指示扫描二维码,绑定微信,就能微信接收交易信号了。
C. 量化投资用什么编程语言研发策略好呢
么以下我就以程序语言的角度来回答
当然如果已经会了某些语言,那你可以使用熟悉的语言去找网上的学习资源会比较快
如果没有特别熟悉的语言,或者是愿意多学一种非常好用的语言
我的建议是学习Python
我从以下几点来分别说明
平台资源
国内外使用Python做云端回测以及运算的免费平台相当的多,例如有 宽客在线,发明者量化,优矿, 等等不胜枚举,可以使用平台的支持以及社区的互相帮助来学习
容易学习
综合以上所说,"目前的环境底下" 我推荐Python.(推荐直接下载 Anaconda的集成开发环境)
D. 作为Python程序员 怎样入门量化交易
量化交易大多用在股票交易上,量化是指将某只股票或者摸个行业的数据进行量化,在更具各家机构自己的量化公式进行选择,量化交易只是选择,并不涉及交易,程序化交易也是一种量化交易,但是是更具已有的数据进行,比如各种行情指标,MACD KDJ等,无法像量化交易那样把能涉及到的所有数据进行量化,程序化交易更侧重交易的自动进行,没有认为干预,且模型编写简单,个人用户也可以进行
E. 想学量化交易的C++编程,有没有比较好的参考书可看
下面这个可以参考一下,具体还要看个人的情况。
我觉得应该根据你的工作需要或者说你的发展方向而定。基本上两大类吧:C/C++和Java。比如,如果你要做企业级应用的你应该学习Java和C#;如果你想做嵌入式,那么应该学好C语言;其他情况下,在你不知道要做什么之前你可以选择学习C/C++。学会这两大类中的一类,对于你学习其他语言都将是比较轻松,包括脚本语言,动态语言„„呵呵,这里想就自己的学习经历和情况给大家一个建议,仅供参考。
1、我的入门是从学习C语言开始的(其实课程是C++),这是我们学校的公共课,我上课比较认真(虽然老师讲得很差,而且一段时间后,我就发现自己的基础掌握比她好,当然理解深度没她好),因此,我认为对于完全没有基础的人而言,听别人讲比较容易入门。当时的教材是学校自己编的,挺烂的。
建议一(以C/C++为例),对于刚想进入编程的人(就是从来都没有接触过编程的人),最好是听课的方式(自己看的话估计要很慢,而且很痛苦),可以找视频或者培训等。C语言推荐入门教材:谭浩强的C语言,最新版是第三版,不过第二版应该也可以了(蓝色的)。说明一下:坚决不同意直接看K&R的《The C programming language》,这本书绝对不是初学者可以看懂的,里面讲语法的并不多,语法都是合在程序里面讲。不过这本书非常好,入门以后一定要看的一本书。
当然可以从C++直接入门,C++之父强烈推荐从C++直接入手。C++推荐入门教材:钱能的C++(红色的,清华大学出版),这本书第一版不是ISO C++,不过比较经典,作者现在也出了第二版了,第二版好像不是太好。国外的最好的入门教材据说是:《Acclerated C++》作者是Koenig和Moo夫妇,非常厉害。他们的著作还有《c陷阱与缺陷》《c++沉思录》。《Acclerated C++》这本入门的书我没有看过,我觉得还是先找本国内的书好好看,看的差不多了,国外的经典书籍随便看就会觉得很有味道,否则你可能会很受打击。入门的书至少要看两三遍(要彻底理解哦 ):)。如果是C++,我建议后面类的部分至少要理解三到五遍。说明一下,c++模板的部分可以先不用看,如果有兴趣的话,等把c++学的差不多了,我觉得可以把模板、STL、泛型编程结合起来学习,这个又是一个很大的工作量了,又得下很大的功夫。所以说,C++博大精深啊。
建议二、学习过程中要结合简单的算法,像冒泡还有类似c语言程序百例这样的小例子做做;更进一步应该做点大一点的项目,最好是控制台程序。或者你已经着手学习win32、MFC或linux,你也可以结合平台做点小的项目。
2、第一阶段是最苦的,接下来相对就知道应该怎么去学习了。这时候假设你已经有了扎实的c++基础。这是你可以选择也应该选择发展方向了,做企业级应用,还是系统开发,嵌入式设计或者游戏开发„„ 那时我其实并没有考虑那么多,因为我不是学计算机的,因此我就把参加一些计算机之类的考试当作学习目标。我当时其实C++语言基础已经很不错了,但是上机实践很少(那时我没有电脑),因此参加省计算机二级,全国计算机三级和全国计算机四级考试,结果上机都没有通过。我很郁闷,二级的时候是我不知道怎么样进那个DOS界面把题目调出来,三级的时候是很快就编好了,也通过运行了,可是成绩出来却不及格,四级的时候是编好了,可能是我那题目比较难,好像用了两次循环,结果那破机器竟然承受不了。后来一乱就毁了(当然主要是上机太少了)。不过我那些上机都没有去补考。二级和三级的时候是自恃水平已经远远超过考试要求了,四级的时候则因为自己已经通过高级程序员考试,觉得补考上机好像没必要。(我高程和四级都是在2003年考的)。
建议三:定位学习方向,并好好学习计算机基础知识。在你还不确定学习方向,或者你还在大学本科期间,那么我认为应该先把计算机的基础知识好好学习一下。我认为计算机必学的基础课程而且要精学——首先是数据结构,其次是操作系统、软件工程,数据库。这四门课不管你将来想从事哪个方向的基本上都会用到。当然,有时间的话,其他基础课都是应该掌握的,离散数学、组成原理、体系结构、网络、编译原理甚至跨学科的。方向是很重要的,因为知识其实是无限的,一个小小的领域就够你研究很久了。本科生可能还没有什么方向的感觉,但是到了研究生你一定要清楚自己到底想要做什么,要往哪个方面发展,不要盲目学,瞎学乱学,否则最后可能看似什么都会,其实什么都不会。
我也曾经学习过Java一段时间,这篇文章既然是谈编程语言的入门学习,我也简单说一说。因为有了比较C++扎实的语言基础,所以Java学起来比较轻松。我先找了国内一本薄薄的教材很快看了一遍(几乎都理解,但是只看了一遍),空闲的时间配合清华张孝详老师的java视频。以后其实才算我真正要开始入门JAVA的学习,我用了是《core java》中文第六版(本来想用候捷翻译的第二版的《Thinking in Java》,发现被同学弄丢了),这本书我差不多用了20天才把里面的知识都搞懂,当然包括程序风格的模拟,最重要的时我把有关GUI编程的那三章里面的程序例子几乎可以默写出来(当然,那是因为我理解了,其实这样就变成了我的知识了),里面的API我也记得差不多了。(说明:Java里面的GUI编程没什么用处了,建议大家先跳过,GUI不是Java的长处,如果以后需要的话再查手册或者再记忆学习)。
其实学习了C++以后,学习Java是比较容易了,但是建议不要两种都学啦,他们的用途是不一样的,你应该熟悉其中一种,更重要的是熟悉其应用领域所需要的专业知识甚至平台,以及使用他们的企业,有创业计划的还应该考虑一下他们的应用领域,最重要的是思考他们的潜在的应用领域。
对于初级的学习就讲到这里,接下去的学习其实都是高级部分,先不介绍了,因为:一、我自己都还没有学懂,这里乱吹会误人子弟。 二、高级东西的学习很多,有很多选择,又需要很多繁琐的知识,可能也一下子没办法讲清楚。
F. 用python做量化交易要学多久
5个月。
python凭借其突出的语言优势与特性,已经融入到各行各业的每个领域。一般来说,python培训需要脱产学习5个月左右,这样的时长才能够让学员既掌握工作所需的技能,还能够积累一定的项目经验。当然如果你想要在人工智能的路上越走越远,则需要不断的积累和学习。
python培训的5个月时间里,有相当大一部分时间是在实战做项目,第一阶段是为期一个月学习python的核心编程,主要是python的语言基础和高级应用,帮助学员获得初步软件工程知识并树立模块化编程思想。学完这一阶段的内容,学员已经能够胜任python初级开发工程师的职位。
(6)股票交易写量化学什么语言扩展阅读:
Python开发基础课程内容包括:计算机硬件、操作系统原理、安装linux操作系统、linux操作系统维护常用命令、Python语言介绍、环境安装、基本语法、基本数据类型、二进制运算、流程控制、字符编码、文件处理、数据类型、用户认证、三级菜单程序、购物车程序开发、函数、内置方法、递归、迭代器、装饰器、内置方法、员工信息表开发、模块的跨目录导入、常用标准库学习,b加密 e正则logging日志模块等,软件开发规范学习,计算器程序、ATM程序开发等。
G. 编写股票分析软件需要学会哪些计算机语言
编写股票分析软件需要学会的计算机语言是C++、Java、Java Script 、 VB 、Visual Foxpro 语言。
股票分析软件准确称为是证券决策分析系统,它是在普通行情软件的基本功能整加了一些特定的功能,如一些分析大盘的指标、公式,新闻资讯,预警系统,选股系统,盘后分析,信息实时发布系统,研究报告,赢富数据等。" 股市有风险,投资需谨慎",广大股民朋友要根据自己的需求选择合适自己的股票软件,而后结合一定的分析理论和自己的炒股经验,形成一套自己的、行之有效炒股模式。股票分析软件实质是通过对股市行情数据的统计,按照一定的分析模型和交易模型汇总成一系列的报表,指标图形,实时资讯,让广大股民朋友更加清晰直观的从基本面、技术面分析大盘和个股,即时方便的掌握股市的动向。股票分析软件是炒股的工具,所以请广大股民朋友要灵活运用。
H. 金融工程,量化投资学什么软件好Python还是Matlab
这真的非常难说。。总的来看美 国大部分用python,国 内可能用matlab的比较多(因为盗版什么的问题呵呵)。我个人是觉得python有更好的灵活性,比如可以和C链接等等,很多美国的hedge fund等公司都在从matlab转到python。matlab的好处是:收钱的东西质量有保证。所以matlab在optimization等方面的toolbox写得非常棒!总的来说就是简单好用。问题就是它的syntax非常恶心(这点和R类似。。)。另外速度比较慢(当然R更慢)。。我个人是比较喜欢python多一点,但是很多时候搞量化分析偷懒就会用matlab和R,因为很多东西都是现成的。。
I. python量化交易半个月可以学会吗
python量化交易半个月可以学会的。
如果已经有了Python基础,半个月可以入门的,如果没有Python基础,就先学Python,学一两个月有了基础后,再结合量化交易的模型,边学Python语言,边学以Python实现量化模型,上手也会很快的。
大家可能觉得搞量化的人就是整天和大量数据打交道,用一行行代码写出复杂的模型,然后没完没了地Run,在回测和优化中挣扎,沉浸在数学和统计海洋里的一群人。
实际上,这只是表面现象。虽然每个搞量化的人必须会写代码,也必须具备扎实的数学功底,在开发策略的过程中,的确需要分析大量数据,不断做回测和优化,但是,这一切的背后是强大的金融思维和对金融市场的深刻理解在支撑的。
换句话说,如果你没有经济、金融的完整知识体系和工作经验,或者没有正确的、科学的思维方式,无论数学多么地好,也很可能在做无用功;即便编程多么在行,也只能沦为码农一枚(没有歧视程序员的意思哦)。
反过来说,如果你具备科学的思维和逻辑,并发现了经济、金融的某些规律,想做Quant就不难了。接下来,你只需花点时间学习编程工具,好好利用数据和代码为你实现自己的想法。
J. 国外股票程序化交易中所用的程序是用什么语言编辑的
国外的交易软件基本都是程序化交易系统。编写的语言很多,又分散户和投资机构用。无论哪种语言编辑,执行都是c++