新增上海中期历史数据接口
This commit is contained in:
parent
79a9ac2bfb
commit
1aea18504a
0
vnpy/api/shcifco/__init__.py
Normal file
0
vnpy/api/shcifco/__init__.py
Normal file
138
vnpy/api/shcifco/vnshcifco.py
Normal file
138
vnpy/api/shcifco/vnshcifco.py
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
# encoding: UTF-8
|
||||||
|
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
HTTP_OK = 200
|
||||||
|
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
class DataApi(object):
|
||||||
|
"""数据接口"""
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def __init__(self, ip, port, token):
|
||||||
|
"""Constructor"""
|
||||||
|
self.ip = ip
|
||||||
|
self.port = port
|
||||||
|
self.token = token
|
||||||
|
|
||||||
|
self.service = 'ShcifcoApi'
|
||||||
|
self.domain = 'http://' + ':'.join([self.ip, self.port])
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def getData(self, path, params):
|
||||||
|
"""下载数据"""
|
||||||
|
url = '/'.join([self.domain, self.service, path])
|
||||||
|
params['token'] = self.token
|
||||||
|
r = requests.get(url=url, params=params)
|
||||||
|
|
||||||
|
if r.status_code != HTTP_OK:
|
||||||
|
print u'http请求失败,状态代码%s' %r.status_code
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return r.text
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def getLastTick(self, symbol):
|
||||||
|
"""获取最新Tick"""
|
||||||
|
path = 'lasttick'
|
||||||
|
params = {'ids': symbol}
|
||||||
|
data = self.getData(path, params)
|
||||||
|
|
||||||
|
l = data.split(',')
|
||||||
|
d = {
|
||||||
|
'symbol': l[0],
|
||||||
|
'lastPrice': float(l[1]),
|
||||||
|
'bidPrice': float(l[2]),
|
||||||
|
'bidVolume': int(l[3]),
|
||||||
|
'askPrice': float(l[4]),
|
||||||
|
'askVolume': int(l[5]),
|
||||||
|
'volume': int(l[6]),
|
||||||
|
'openInterest': int(l[7])
|
||||||
|
}
|
||||||
|
return d
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def getLastPrice(self, symbol):
|
||||||
|
"""获取最新成交价"""
|
||||||
|
path = 'lastprice'
|
||||||
|
params = {'ids': symbol}
|
||||||
|
data = self.getData(path, params)
|
||||||
|
|
||||||
|
price = float(data)
|
||||||
|
return price
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def getLastBar(self, symbol):
|
||||||
|
"""获取最新的一分钟K线数据"""
|
||||||
|
path = 'lastbar'
|
||||||
|
params = {'ids': symbol}
|
||||||
|
data = self.getData(path, params)
|
||||||
|
|
||||||
|
l = data.split(',')
|
||||||
|
d = {
|
||||||
|
'symbol': l[0],
|
||||||
|
'time': l[1],
|
||||||
|
'open': float(l[2]),
|
||||||
|
'high': float(l[3]),
|
||||||
|
'low': float(l[4]),
|
||||||
|
'close': float(l[5]),
|
||||||
|
'volume': int([6])
|
||||||
|
}
|
||||||
|
return d
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def getHisBar(self, symbol, num, date='', period=''):
|
||||||
|
"""获取历史K线数据"""
|
||||||
|
path = 'lastbar'
|
||||||
|
|
||||||
|
# 默认参数
|
||||||
|
params = {
|
||||||
|
'ids': symbol,
|
||||||
|
'num': num
|
||||||
|
}
|
||||||
|
# 可选参数
|
||||||
|
if date:
|
||||||
|
params[date] = date
|
||||||
|
if period:
|
||||||
|
params[period] = period
|
||||||
|
|
||||||
|
data = self.getData(path, params)
|
||||||
|
|
||||||
|
barList = []
|
||||||
|
l = data.split(';')
|
||||||
|
|
||||||
|
for barStr in l:
|
||||||
|
barData = barStr.split(',')
|
||||||
|
d = {
|
||||||
|
'symbol': barData[0],
|
||||||
|
'time': barData[1],
|
||||||
|
'open': float(barData[2]),
|
||||||
|
'high': float(barData[3]),
|
||||||
|
'low': float(barData[4]),
|
||||||
|
'close': float(barData[5]),
|
||||||
|
'volume': int([6])
|
||||||
|
}
|
||||||
|
barList.append(d)
|
||||||
|
|
||||||
|
return barList
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
ip = '101.231.179.199'
|
||||||
|
port = '10102'
|
||||||
|
token = 'testd2cda34b2d317779e812eb84ee4224a6_123456'
|
||||||
|
|
||||||
|
api = DataApi(ip, port, token)
|
||||||
|
api.getData(path, params)
|
||||||
|
|
||||||
|
print api.getLastTick('cu1709')
|
||||||
|
|
||||||
|
print api.getLastPrice('cu1709')
|
||||||
|
|
||||||
|
print api.getLastBar('cu1709')
|
||||||
|
|
||||||
|
print api.getHisBar('cu1709', 50)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user