克隆成功是否进入此策略?

确定取消

大宽网—数据分析—Python 2 研究环境

发布于2017-10-20 11:30 浏览 424 评论 6 0 0 分享到:

取几种常见数据的函数及使用示例如本文附件所示,函数名称及参数罗列如下:

1) GetData_IndexQuotation(code, startDate, endDate):
取指数日行情

2) GetData_StockQuotation(code, startDate, endDate):
获取股票日行情

在此处使用的是Python2,及python 的基本库, 另一论坛贴子使用了pandas(参照此处)大家可以根据自己的学习研究,自行使用。

处理请求

对于大宽网研究的数据请求可以在大宽网的数据中心下获取。如:

Image_16.png

通过数据说明 我们可以了解到数据的类型,
获取到URL之后我们可以构建代码,为了方便, 进行了函数包装代码如下:

  1. import urllib2
  2. import urllib
  3. import string
  4. import time
  5. import socket
  6. def getUrlReqToList(url, isIgnoreHeader=False):
  7. returnList = []
  8. try:
  9. req = urllib2.Request(url)
  10. content =urllib2.urlopen(req) ## ignore ssl
  11. ## content =urllib2.urlopen(req,timeout = 100) ## ignore ssl
  12. str_data = content.read()
  13. # content.close()
  14. lst = string.split(str_data,"\n")
  15. start = 0
  16. ## 如果设定了忽略头部:isIgnoreHeader = True
  17. ## F_DATE|F_CODE|F_0001|F_0002|F_0003|F_0004|F_0005|F_0006|F_0007
  18. ## 头部文件 将不存储。
  19. if isIgnoreHeader == True:
  20. start = 1
  21. while start<len(lst):
  22. tmplist = string.split(lst[start],"|")
  23. if len(tmplist)>0:
  24. returnList.append(tmplist)
  25. start +=1
  26. return returnList
  27. except UnicodeDecodeError as e:
  28. print '-----UnicodeDecodeError url:',url
  29. return returnList
  30. except urllib2.HTTPError as e:
  31. print"-----urlError url:",url
  32. return returnList

对指定数据的处理

对于URL(此处是股票日行情) https://dcapi.quanttech.cn:50005/v4/quandis/?BUSINESSTYPE=QUOTATION&SECUCODE=600519&SECUTYPE=STOCKBASE&TIMEFRAME=DAY&STARTTIME=2017-01-01&ENDTIME=2017-10-20&USERKEY=xxxxxxx
包括了一些公共部分
SECUCODE
STARTTIME
ENDTIME
USERKEY
为了方便使用再一次包装:

  1. ##获取股票日行情
  2. ## 参数格式
  3. ## code string '600519'
  4. ## startDate = '2017-01-01'
  5. ## endDate = '2017-01-20'
  6. ## userkey see http://usercenter.quanttech.cn/UserInfo/Update?code=http://www.quanttech.cn/ 密钥管理
  7. def GetData_StockQuotation(code, startDate, endDate, userkey):
  8. url = 'https://dcapi.quanttech.cn:50005/v4/quandis/?BUSINESSTYPE=QUOTATION' \
  9. + '&SECUCODE=' + code \
  10. + '&SECUTYPE=STOCKBASE&TIMEFRAME=DAY' \
  11. + '&STARTTIME=' + startDate \
  12. + '&ENDTIME=' + endDate \
  13. + '&USERKEY=' + userkey
  14. print url
  15. stocklist = getUrlReqToList(url)
  16. return stocklist
  17. ## 获取股票日行情
  18. code = '600519'
  19. startDate = '2017-01-01'
  20. endDate = '2017-01-20'
  21. userkey = 'xxxxxx'
  22. datalist = GetData_StockQuotation(code,startDate,endDate,userkey)
  23. if len(datalist) == 0:
  24. print "gat data failed"
  25. else:
  26. for i in range(5):
  27. print datalist[i]

其他的数据也相似,可以根据此方法自行研究,以下为整个研究学习的代码。

6 个评论

@Estel 对于取数据的进一步封装,我们会随着系统的升级,一步一步地进行。 谢谢您的反馈
好的,谢谢,好像是不是.ipynb这些也不能上传呢。。。感觉确实不太方便。另外就是想请教问问,数据获取,是不是直接在大宽网的研究平台里运行代码, 虽然也是通过 url 的爬数据一样的方式获取数据, 但速度会更快? 感觉要是能像米筐一样,研究平台也有封装好的,比较直接就能通过 大宽网的内网 ,调取数据的API就好了。现在这样用url的方式爬数据。。感觉用起来不是很方便。。。谢谢
当前上传的功能没有开放,稍后我们会开放出来
对于URL请求出错 可能是因为在例子,使用的须将userkey 替换为自己的,这个已经在函数前进行了说明
##取指数日行情
## 参数格式
## code ='000001'
## startDate = '2017-01-01'
## endDate = '2017-01-10'
## userkey see http://usercenter.quanttech.cn/UserInfo/Update?code=http://www.quanttech.cn/ 密钥管理
另外问个问题,大宽网研究环境中 是否能上传 自己本地的.csv文件到研究环境里。
使用报错如下,求解决,谢谢。感觉大宽网的研究平台很多细节需要优化啊


URLErrorTraceback (most recent call last)
<ipython-input-4-e50a6d770363> in <module>()
18 userkey = '2ba95692ee354c0ca6b8a7440d245efd'
19
---> 20 datalist = GetData_IncomeStatement(code,startDate,endDate,userkey)
21
22 if len(datalist) == 0:

<ipython-input-4-e50a6d770363> in GetData_IncomeStatement(code, startDate, endDate, userkey)
9 url = 'https://dcapi.quanttech.cn:50005/v4/quandis/?BUSINESSTYPE=QUOTATION' + '&SECUCODE=' + code + '&SECUTYPE=COMPANYPROFIT&TIMEFRAME=DAY' + '&STARTTIME=' + startDate + '&ENDTIME=' + endDate + '&USERKEY=' + userkey
10 print url
---> 11 stocklist = getUrlReqToList(url)
12 return stocklist
13

<ipython-input-1-833194204385> in getUrlReqToList(url, isIgnoreHeader)
9 try:
10 req = urllib2.Request(url)
---> 11 content =urllib2.urlopen(req) ## ignore ssl
12 ## content =urllib2.urlopen(req,timeout = 100) ## ignore ssl
13 str_data = content.read()

/usr/lib/python2.7/urllib2.pyc in urlopen(url, data, timeout)
125 if _opener is None:
126 _opener = build_opener()
--> 127 return _opener.open(url, data, timeout)
128
129 def install_opener(opener):

/usr/lib/python2.7/urllib2.pyc in open(self, fullurl, data, timeout)
402 req = meth(req)
403
--> 404 response = self._open(req, data)
405
406 # post-process response

/usr/lib/python2.7/urllib2.pyc in _open(self, req, data)
420 protocol = req.get_type()
421 result = self._call_chain(self.handle_open, protocol, protocol +
--> 422 '_open', req)
423 if result:
424 return result

/usr/lib/python2.7/urllib2.pyc in _call_chain(self, chain, kind, meth_name, *args)
380 func = getattr(handler, meth_name)
381
--> 382 result = func(*args)
383 if result is not None:
384 return result

/usr/lib/python2.7/urllib2.pyc in https_open(self, req)
1220
1221 def https_open(self, req):
-> 1222 return self.do_open(httplib.HTTPSConnection, req)
1223
1224 https_request = AbstractHTTPHandler.do_request_

/usr/lib/python2.7/urllib2.pyc in do_open(self, http_class, req)
1182 except socket.error, err: # XXX what error?
1183 h.close()
-> 1184 raise URLError(err)
1185 else:
1186 try:

URLError: <urlopen error [Errno 104] Connection reset by peer>
发表评论