请选择 进入手机版 | 继续访问电脑版
楼主: huiyujuanjuan
3639 4

[程序化交易] 量化投资数据篇(3) [推广有奖]

  • 0关注
  • 6粉丝

副教授

36%

还不是VIP/贵宾

-

威望
0
论坛币
697 个
通用积分
331.9472
学术水平
19 点
热心指数
23 点
信用等级
10 点
经验
46761 点
帖子
503
精华
0
在线时间
1152 小时
注册时间
2015-2-2
最后登录
2024-3-14

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+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')在网站生成限价委托单。

       此种操作方式的结果可以在网络上查看,打开大奖章个人账户,得到的结果为:

1.8.png


      进一步在此基础上进行买卖委托,比如对300001(特锐德)进行100手买单委托:

                              

>w.torder('300001.SZ','Buy','22.04','100','OrderType=FOK;LogonID=1')

       大奖章的个人账户显示结果为:

1.9.png


对订单进行撤单操作:

>w.tquery('Order','LogonID=1;OrderType=Withdrawable')

>w.tquery('Order','LogonID=1;Windcode=300001.SZ')

>w.tquery('Order','LogonID=1;BrokerID=0000')

上述操作,大奖章网站的结果变更为:

1.10.png

查看从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语言抓取的期货历史数据,并保存当地文件夹,得到的结果如下:

1.11.png


(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)

}

通过上述的简单处理 ,就能获得大概上市以来季度报表数据。具体得到的报表数据如下:

1.12.png


(5)python软件的通联工具包(TuShare)

TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、整理到存储的过程,从而为金融分析人员在数据获取方面极大地减轻工作量。具体的数据获取方式可以百度。我不知道其数据来源哪里,初步根据致谢,猜测来自于新浪等网络的数据抓取。

虽然python是非常杰出的网络交互和数据处理软件,但作为一个统计和计量出身的人而言,我更倾向用R语言。况且,我现在也不需要依赖别人的数据,已经可以通过R语言获取不同来源的金融数据。

(6)购买数据

如果是高富帅,或者富二代,没有任何压力,也不想瞎折腾,那就去购买万得数据库,如果需要国际数据的话,那购买bloomberg数据库(好像是15万美金一年)。

至此,基本上解决了量化交易的数据问题,而且数据来源的多渠道性,也有利于测试策略的稳健性。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:量化投资 Instrument withdraw brokers Library 量化投资

已有 1 人评分经验 论坛币 学术水平 收起 理由
一缕阳光等你 + 66 + 16 + 1 精彩帖子

总评分: 经验 + 66  论坛币 + 16  学术水平 + 1   查看全部评分

感谢楼主分享学习

使用道具

joesrd 发表于 2016-8-12 11:02:54 |显示全部楼层 |坛友微信交流群
收藏学习谢谢你

使用道具

4545293pp 发表于 2018-1-8 21:36:05 |显示全部楼层 |坛友微信交流群
收藏了,谢谢你。

使用道具

以上内容节选自:《量化投资基础、方法与策略——R语言实战指南》(电子工业出版社),感兴趣的可以进一步阅读。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 15:14