相似文件
换一批
经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
4、其他方法 这些方法可能是适用性不广,或者不免费,或者不是R语言处理,或者处理的不是股票数据。因此在此处简单进行概括。 (1)IBrokers API与万得API 这种API接入的方式,不仅能够下载股票等数据,更重要的是,能够直接进行实盘交易,是从数据、回测到量化交易都可以一体化完成。下面简单对这两种API进行描述。 IBroker为中文名为盈透,是美国几大交易平台之一,交易产品包括股票、期权、期货、外汇等,可以接入全球100多个交易所及市场中心(更详细情况可以百度)。 由于盈透主要是为机构客户服务的,并不针对个人投资者,其开户是1万美金起步,折合人民币6万多,同时开户比较繁琐,软件的人性化没有通达信等软件高。但国内外汇交易平台黑幕太多,真正规范化的平台也就那么几家,所以一般真要交易外汇,还是用这个平台比较可靠。 此处不是来推销盈透来的,主要是针对其API数据接口。可以通过C语言、matlab、VB和R语言等通过API接入盈透并进行数据下载分析并量化交易操作。 接口有两种方式,一种是通过TWS交易平台,另一种是直接通过IB API(如IB Gateway 956)。一般化的操作步骤可参见:http://blog.csdn.net/fox64194167/article/details/52079401。此处不详述。 简要介绍R语言接入盈透API的步骤。 (I)下载TWS win 32位(注:只能是32位,64位API接入会出现问题!),在此基础上配置VB工作环境后,进行简单设置即可登陆。 (II)利用IBrokers、tawny与twsInstrument等工具包,方便地与盈透交互并进行量化操作,当然也包括下载数据。 另一个需要介绍的是万得API。万得提供的API有两种方式,一种是个人免费版,一种是机构版。顾名思义,前者免费,后者收费,导致两种方式提供的信息有较大的差异。其具体操作方式见大奖章网站:http://www.dajiangzhang.com/,里面有大量介绍如何利用手机注册模拟账号,并下载量化接口并进行简单的数据获取和量化交易。此处需要利用R语言的WindR工具包。下面简单介绍如何接入API并进行交易操作。 免费下载R安装,免费下载万得量化接口个人版,并注册。在此基础上运行: >library(WindR) > w.start() 得到一个万得的交互接口,在此基础上进行模拟分析。 >w.tlogon('00000010','0','M:************01','******','SHSZ')登录自己的证券账户! >w.tlogon('00000010','0','M:************02','******','cfe') 其他账户! >w.tquery('LogonID') 查询账户 > w.torder('600000.SH','Buy','10.01','100','OrderType=LMT;LogonID=1')在网站生成限价委托单。 此种操作方式的结果可以在网络上查看,打开大奖章个人账户,得到的结果为:
进一步在此基础上进行买卖委托,比如对300001(特锐德)进行100手买单委托:
>w.torder('300001.SZ','Buy','22.04','100','OrderType=FOK;LogonID=1') 大奖章的个人账户显示结果为:
对订单进行撤单操作:
>w.tquery('Order','LogonID=1;OrderType=Withdrawable') >w.tquery('Order','LogonID=1;Windcode=300001.SZ') >w.tquery('Order','LogonID=1;BrokerID=0000') 上述操作,大奖章网站的结果变更为:
查看从2012年到2015年上证指数的OHLC四种价格。
>szzs<-w.wsd('600000.SH','high,low,close,open','20120701','20150815')
(3)期货数据的获取 期货数据的获取方式目前有两种,一种是通过通达信,一种还是通过新浪网抓取。股票财务数据的获取方式就比较多,主要是新浪、网易等网页抓取,方法也比较简单,因此只介绍期货数据的网页抓取。 如菜粕RM1608期货数据网址为: http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine15m?symbol=RM1608 可以看出网址的结构特征与上述股票的结构特征类似。在浏览器中出现的是一系列没有表格的数据,其各项数据分别表示以下的重复:时间、开盘价、最高价、最低价、收盘价、成交量。同样可利用rvest/magrittr/data.table工具包进行简单处理即可得到txt或csv等数据。 不过美中不足的是,数据的时间长度固定,数据会随着时间的推移而发生变化,比如最近的15分钟数据是从:"2016-05-06 10:00:00"到“2016-08-01 10:45:00”,这种数据长度对于量化分析者而言,应该是远远不够。 因此需要进行再处理,获取更长的数据。本人猜测有一种更简洁的方法,就是类似新浪股票数据一样,对网址进行变更,设定相应的起止时间,便可获取对应时间段的数据,但本人不知道对应的网址,所以这种方法行不通(如果有谁知道,感谢分享一下!) 所以只能用笨方法,就是通过获取某天的期货数据之后,保存在当地文件夹,下次隔一定时间再抓取新数据,然后把新数据附加在原数据之后,通过一个间隔频率的读取和更新,数据的持续性和有效性便可以保持。 R语言的部分代码如下: library(rvest) library(magrittr) library(data.table) for (i in 1:4){ future.codei<-future.code[] for (icode in future.codei){ symbol=icode for(itime in future.time){ symbol.time=itime for (jinterval in intervals){ interval=jinterval future.data<-get.sina.future(symbol=symbol,symbol.time=symbol.time,interval=interval) file.section<-paste0(symbol,symbol.time,'.',interval,'m.txt') tmp.logical<-which(filelist==file.section) if(is.null(future.data)==F){ file.name<-paste0('e://datasets//future//sina//',file.section) if(isTRUE(as.logical(tmp.logical))){#important function:isTURE() tmp<-fread(file.name) future.data<-rbind(future.data,tmp) #different numbers because ofround. future.data<-unique(future.data) } write.csv(future.data,file.name,row.names=F) } } } } } 通过R语言抓取的期货历史数据,并保存当地文件夹,得到的结果如下:
(4)股票财务数据的获取 股票财务报表数据是进行所谓的价值投资的依据之一。大多数长线投资者都是依赖于对长期财务数据的分析(每股收益、流动比率、速动比率、资产负债比等指标),对上市公司是否值得长期投资进行一个周密的考察。同时,对于机构投资者而言,也是进行多因子选股、股票池的更新和维护的主要依据。 由于财务数据相对股票日度数据而言少得多,所以提供财务数据的网站比较多。常见的有网易、新浪、凤凰财经、腾讯财经等。考虑到网易报表数据可以下载成csv或者txt格式,获取相对非常简单,下面就介绍用R语言获取网易数据并保存到当地文件夹的方法。 stock.index<-read.csv('E://OneDrive//index//stock.A.list.txt',header=T, sep='\t',colClasses='character') stock.code<-stock.index[,1] # financial statementdata from 163.com for (codei instock.code){ url<-paste0('http://quotes.money.163.com/service/cwbbzy_',codei,'.html') destfile<-paste0('e://datasets//fin.statement//163//',codei,'.csv') tmp<-download.file(url=url,destfile=destfile,mode='wb',quiet=T) } 通过上述的简单处理 ,就能获得大概上市以来季度报表数据。具体得到的报表数据如下:
(5)python软件的通联工具包(TuShare) TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、整理到存储的过程,从而为金融分析人员在数据获取方面极大地减轻工作量。具体的数据获取方式可以百度。我不知道其数据来源哪里,初步根据致谢,猜测来自于新浪等网络的数据抓取。 虽然python是非常杰出的网络交互和数据处理软件,但作为一个统计和计量出身的人而言,我更倾向用R语言。况且,我现在也不需要依赖别人的数据,已经可以通过R语言获取不同来源的金融数据。 (6)购买数据 如果是高富帅,或者富二代,没有任何压力,也不想瞎折腾,那就去购买万得数据库,如果需要国际数据的话,那购买bloomberg数据库(好像是15万美金一年)。 至此,基本上解决了量化交易的数据问题,而且数据来源的多渠道性,也有利于测试策略的稳健性。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|