增加开始时间的过滤
This commit is contained in:
parent
f1850175cc
commit
5868c55908
@ -10,7 +10,7 @@ from vnpy.trader.app.ctaStrategy.ctaBase import CtaBarData, CtaTickData
|
|||||||
class UtilSinaClient(object):
|
class UtilSinaClient(object):
|
||||||
"""
|
"""
|
||||||
SINA数据客户端,主要使用requests开发
|
SINA数据客户端,主要使用requests开发
|
||||||
|
v1.1 增加start_dt参数,在这个时间点之前的bar全部忽略
|
||||||
"""
|
"""
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
def __init__(self, strategy):
|
def __init__(self, strategy):
|
||||||
@ -25,11 +25,12 @@ class UtilSinaClient(object):
|
|||||||
self.session = requests.session()
|
self.session = requests.session()
|
||||||
self.session.keep_alive = False
|
self.session.keep_alive = False
|
||||||
|
|
||||||
def getTicks(self, symbol, callback):
|
def getTicks(self, symbol, callback,start_dt=None):
|
||||||
"""
|
"""
|
||||||
从sina加载最新的分时数据(Min1)数据
|
从sina加载最新的分时数据(Min1)数据
|
||||||
:param symbol: 合约代码(全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
:param symbol: 合约代码(全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
||||||
:param callback: 回调函数
|
:param callback: 回调函数
|
||||||
|
:param start_dt: 开始时间,缺省为None
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
@ -54,6 +55,11 @@ class UtilSinaClient(object):
|
|||||||
tick.time = item[4] + u':00'
|
tick.time = item[4] + u':00'
|
||||||
tick.datetime = datetime.strptime(tick.date + ' ' + tick.time, '%Y-%m-%d %H:%M:%S')
|
tick.datetime = datetime.strptime(tick.date + ' ' + tick.time, '%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
if start_dt is not None:
|
||||||
|
# 丢弃约定开始时间之前的
|
||||||
|
if tick.datetime < start_dt:
|
||||||
|
continue
|
||||||
|
|
||||||
tick.lastPrice = float(item[0])
|
tick.lastPrice = float(item[0])
|
||||||
tick.volume = int(item[2])
|
tick.volume = int(item[2])
|
||||||
|
|
||||||
@ -70,11 +76,12 @@ class UtilSinaClient(object):
|
|||||||
self.strategy.writeCtaLog(u'加载sina历史Tick数据失败:' + str(e))
|
self.strategy.writeCtaLog(u'加载sina历史Tick数据失败:' + str(e))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def getTicks2(self, symbol, callback):
|
def getTicks2(self, symbol, callback,start_dt=None):
|
||||||
"""
|
"""
|
||||||
# 从sina加载最新的M1数据(针对中金所)
|
# 从sina加载最新的M1数据(针对中金所)
|
||||||
:param symbol: 合约代码(全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
:param symbol: 合约代码(全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
||||||
:param callback: 回调函数
|
:param callback: 回调函数
|
||||||
|
:param start_dt: 开始时间,缺省为None
|
||||||
:return: 成功/失败
|
:return: 成功/失败
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
@ -101,6 +108,10 @@ class UtilSinaClient(object):
|
|||||||
tick.time = item[0] + u':00'
|
tick.time = item[0] + u':00'
|
||||||
tick.datetime = datetime.strptime(tick.date + ' ' + tick.time, '%Y-%m-%d %H:%M:%S')
|
tick.datetime = datetime.strptime(tick.date + ' ' + tick.time, '%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
if start_dt is not None:
|
||||||
|
if tick.datetime < start_dt:
|
||||||
|
continue
|
||||||
|
|
||||||
tick.lastPrice = float(item[1])
|
tick.lastPrice = float(item[1])
|
||||||
tick.volume = int(item[3])
|
tick.volume = int(item[3])
|
||||||
|
|
||||||
@ -131,12 +142,13 @@ class UtilSinaClient(object):
|
|||||||
|
|
||||||
return 30
|
return 30
|
||||||
|
|
||||||
def getMinBars(self, symbol, minute, callback):
|
def getMinBars(self, symbol, minute, callback,start_dt=None):
|
||||||
"""
|
"""
|
||||||
从sina加载最新的M5,M15,M30,M60数据
|
从sina加载最新的M5,M15,M30,M60数据
|
||||||
:param symbol: (全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
:param symbol: (全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
||||||
:param minute: 5,15,30,60
|
:param minute: 5,15,30,60
|
||||||
:param callback: 回调函数
|
:param callback: 回调函数
|
||||||
|
:param start_dt: 开始时间,缺省为None
|
||||||
:return: 成功/失败
|
:return: 成功/失败
|
||||||
"""
|
"""
|
||||||
if minute not in [5, 15, 30, 60]:
|
if minute not in [5, 15, 30, 60]:
|
||||||
@ -166,6 +178,9 @@ class UtilSinaClient(object):
|
|||||||
else:
|
else:
|
||||||
bar.datetime = sinaDt - timedelta(seconds=minute * 60)
|
bar.datetime = sinaDt - timedelta(seconds=minute * 60)
|
||||||
|
|
||||||
|
if start_dt is not None:
|
||||||
|
if bar.datetime < start_dt:
|
||||||
|
continue
|
||||||
bar.date = bar.datetime.strftime('%Y%m%d')
|
bar.date = bar.datetime.strftime('%Y%m%d')
|
||||||
bar.tradingDay = bar.date # todo: 需要修改,晚上21点后,修改为next workingday
|
bar.tradingDay = bar.date # todo: 需要修改,晚上21点后,修改为next workingday
|
||||||
bar.time = bar.datetime.strftime('%H:%M:00')
|
bar.time = bar.datetime.strftime('%H:%M:00')
|
||||||
@ -208,12 +223,13 @@ class UtilSinaClient(object):
|
|||||||
self.strategy.writeCtaLog(u'加载Sina历史分钟数据失败:'+str(e))
|
self.strategy.writeCtaLog(u'加载Sina历史分钟数据失败:'+str(e))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def getMinBars2(self, symbol, minute, callback):
|
def getMinBars2(self, symbol, minute, callback,start_dt=None):
|
||||||
"""
|
"""
|
||||||
从sina加载最新的M5,M15,M30,M60数据(针对中金所)
|
从sina加载最新的M5,M15,M30,M60数据(针对中金所)
|
||||||
:param symbol: (全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
:param symbol: (全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
||||||
:param minute: 5,15,30,60
|
:param minute: 5,15,30,60
|
||||||
:param callback: 回调函数
|
:param callback: 回调函数
|
||||||
|
:param start_dt: 开始时间,缺省为None
|
||||||
:return: 成功/失败
|
:return: 成功/失败
|
||||||
"""
|
"""
|
||||||
if minute not in {5, 15, 30, 60}:
|
if minute not in {5, 15, 30, 60}:
|
||||||
@ -249,7 +265,9 @@ class UtilSinaClient(object):
|
|||||||
bar.datetime = sinaDt - timedelta(seconds=(minute /2)* 60)
|
bar.datetime = sinaDt - timedelta(seconds=(minute /2)* 60)
|
||||||
else:
|
else:
|
||||||
bar.datetime = sinaDt - timedelta(seconds=minute * 60)
|
bar.datetime = sinaDt - timedelta(seconds=minute * 60)
|
||||||
|
if start_dt is not None:
|
||||||
|
if bar.datetime < start_dt:
|
||||||
|
continue
|
||||||
bar.date = bar.datetime.strftime('%Y%m%d')
|
bar.date = bar.datetime.strftime('%Y%m%d')
|
||||||
bar.tradingDay = bar.date # todo: 需要修改,晚上21点后,修改为next workingday
|
bar.tradingDay = bar.date # todo: 需要修改,晚上21点后,修改为next workingday
|
||||||
bar.time = bar.datetime.strftime('%H:%M:00')
|
bar.time = bar.datetime.strftime('%H:%M:00')
|
||||||
@ -292,11 +310,12 @@ class UtilSinaClient(object):
|
|||||||
self.strategy.writeCtaLog(u'加载Sina历史分钟数据失败:'+str(e))
|
self.strategy.writeCtaLog(u'加载Sina历史分钟数据失败:'+str(e))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def getDayBars(self, symbol, callback):
|
def getDayBars(self, symbol, callback,start_dt=None):
|
||||||
"""
|
"""
|
||||||
从sina加载最新的Day数据
|
从sina加载最新的Day数据
|
||||||
:param symbol: (全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
:param symbol: (全路径得合约名称,先使用ctaTemplate.getFullSymbol()
|
||||||
:param callback: 回调函数
|
:param callback: 回调函数
|
||||||
|
:param start_dt: 开始时间,缺省为None
|
||||||
:return: 成功/失败
|
:return: 成功/失败
|
||||||
"""
|
"""
|
||||||
sinaBars = []
|
sinaBars = []
|
||||||
@ -314,6 +333,10 @@ class UtilSinaClient(object):
|
|||||||
bar.symbol = symbol
|
bar.symbol = symbol
|
||||||
# bar的close time
|
# bar的close time
|
||||||
bar.datetime = datetime.strptime(item['date'], '%Y-%m-%d')
|
bar.datetime = datetime.strptime(item['date'], '%Y-%m-%d')
|
||||||
|
if start_dt is not None:
|
||||||
|
if bar.datetime < start_dt:
|
||||||
|
continue
|
||||||
|
|
||||||
bar.date = bar.datetime.strftime('%Y%m%d')
|
bar.date = bar.datetime.strftime('%Y%m%d')
|
||||||
bar.tradingDay = bar.date # todo: 需要修改,晚上21点后,修改为next workingday
|
bar.tradingDay = bar.date # todo: 需要修改,晚上21点后,修改为next workingday
|
||||||
bar.time = bar.datetime.strftime('%H:%M:00')
|
bar.time = bar.datetime.strftime('%H:%M:00')
|
||||||
@ -346,6 +369,7 @@ class UtilSinaClient(object):
|
|||||||
self.strategy.writeCtaLog(u'加载Sina历史日线数据失败:'+str(e))
|
self.strategy.writeCtaLog(u'加载Sina历史日线数据失败:'+str(e))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class TestStrategy(object):
|
class TestStrategy(object):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -365,9 +389,9 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
sina = UtilSinaClient(t)
|
sina = UtilSinaClient(t)
|
||||||
|
|
||||||
rt=sina.getDayBars(symbol='RB1710', callback=t.addBar)
|
rt=sina.getDayBars(symbol='RB1810', callback=t.addBar)
|
||||||
|
|
||||||
rt = sina.getMinBars(symbol='RB1710',minute = 60, callback=t.addBar)
|
rt = sina.getMinBars(symbol='RB1810',minute = 60, callback=t.addBar)
|
||||||
|
|
||||||
#rt = sina.getTicks(symbol='RB1705', callback=t.addTick)
|
#rt = sina.getTicks(symbol='RB1705', callback=t.addTick)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user