增加:非交易时间,自动断开连接功能
This commit is contained in:
parent
7858fa3fca
commit
e984694753
@ -16,6 +16,7 @@ from vnctpmd import MdApi
|
|||||||
from vnctptd import TdApi
|
from vnctptd import TdApi
|
||||||
from ctpDataType import *
|
from ctpDataType import *
|
||||||
from vtGateway import *
|
from vtGateway import *
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -71,9 +72,9 @@ class CtpGateway(VtGateway):
|
|||||||
def __init__(self, eventEngine, gatewayName='CTP'):
|
def __init__(self, eventEngine, gatewayName='CTP'):
|
||||||
"""Constructor"""
|
"""Constructor"""
|
||||||
super(CtpGateway, self).__init__(eventEngine, gatewayName)
|
super(CtpGateway, self).__init__(eventEngine, gatewayName)
|
||||||
|
|
||||||
self.mdApi = CtpMdApi(self) # 行情API
|
self.mdApi = None # 行情API
|
||||||
self.tdApi = CtpTdApi(self) # 交易API
|
self.tdApi = None # 交易API
|
||||||
|
|
||||||
self.mdConnected = False # 行情API连接状态,登录完成后为True
|
self.mdConnected = False # 行情API连接状态,登录完成后为True
|
||||||
self.tdConnected = False # 交易API连接状态
|
self.tdConnected = False # 交易API连接状态
|
||||||
@ -86,7 +87,13 @@ class CtpGateway(VtGateway):
|
|||||||
# 载入json文件
|
# 载入json文件
|
||||||
fileName = self.gatewayName + '_connect.json'
|
fileName = self.gatewayName + '_connect.json'
|
||||||
fileName = os.getcwd() + '/ctpGateway/' + fileName
|
fileName = os.getcwd() + '/ctpGateway/' + fileName
|
||||||
|
|
||||||
|
if self.mdApi is None:
|
||||||
|
self.mdApi = CtpMdApi(self) # 行情API
|
||||||
|
|
||||||
|
if self.tdApi is None:
|
||||||
|
self.tdApi = CtpTdApi(self) # 交易API
|
||||||
|
|
||||||
try:
|
try:
|
||||||
f = file(fileName)
|
f = file(fileName)
|
||||||
except IOError:
|
except IOError:
|
||||||
@ -121,35 +128,48 @@ class CtpGateway(VtGateway):
|
|||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def subscribe(self, subscribeReq):
|
def subscribe(self, subscribeReq):
|
||||||
"""订阅行情"""
|
"""订阅行情"""
|
||||||
self.mdApi.subscribe(subscribeReq)
|
if self.mdApi is not None:
|
||||||
|
self.mdApi.subscribe(subscribeReq)
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def sendOrder(self, orderReq):
|
def sendOrder(self, orderReq):
|
||||||
"""发单"""
|
"""发单"""
|
||||||
return self.tdApi.sendOrder(orderReq)
|
if self.tdApi is not None:
|
||||||
|
return self.tdApi.sendOrder(orderReq)
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def cancelOrder(self, cancelOrderReq):
|
def cancelOrder(self, cancelOrderReq):
|
||||||
"""撤单"""
|
"""撤单"""
|
||||||
self.tdApi.cancelOrder(cancelOrderReq)
|
if self.tdApi is not None:
|
||||||
|
self.tdApi.cancelOrder(cancelOrderReq)
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def qryAccount(self):
|
def qryAccount(self):
|
||||||
"""查询账户资金"""
|
"""查询账户资金"""
|
||||||
self.tdApi.qryAccount()
|
if self.tdApi is not None:
|
||||||
|
self.tdApi.qryAccount()
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def qryPosition(self):
|
def qryPosition(self):
|
||||||
"""查询持仓"""
|
"""查询持仓"""
|
||||||
|
if self.tdApi is None:
|
||||||
|
return
|
||||||
self.tdApi.qryPosition()
|
self.tdApi.qryPosition()
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def close(self):
|
def close(self):
|
||||||
"""关闭"""
|
"""关闭"""
|
||||||
if self.mdConnected:
|
if self.mdConnected and self.mdApi is not None:
|
||||||
self.mdApi.close()
|
self.mdApi.close()
|
||||||
if self.tdConnected:
|
self.mdApi = None
|
||||||
|
if self.tdConnected and self.tdApi is not None:
|
||||||
self.tdApi.close()
|
self.tdApi.close()
|
||||||
|
self.tdApi = None
|
||||||
|
|
||||||
|
log = VtLogData()
|
||||||
|
log.gatewayName = self.gatewayName
|
||||||
|
log.logContent = u'主动断开连接'
|
||||||
|
self.onLog(log)
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def initQuery(self):
|
def initQuery(self):
|
||||||
@ -329,7 +349,10 @@ class CtpMdApi(MdApi):
|
|||||||
tick.openInterest = data['OpenInterest']
|
tick.openInterest = data['OpenInterest']
|
||||||
tick.time = '.'.join([data['UpdateTime'], str(data['UpdateMillisec']/100)])
|
tick.time = '.'.join([data['UpdateTime'], str(data['UpdateMillisec']/100)])
|
||||||
tick.date = data['TradingDay']
|
tick.date = data['TradingDay']
|
||||||
|
|
||||||
|
# add by Incense Lee
|
||||||
|
tick.tradingDay = data['TradingDay']
|
||||||
|
|
||||||
tick.openPrice = data['OpenPrice']
|
tick.openPrice = data['OpenPrice']
|
||||||
tick.highPrice = data['HighestPrice']
|
tick.highPrice = data['HighestPrice']
|
||||||
tick.lowPrice = data['LowestPrice']
|
tick.lowPrice = data['LowestPrice']
|
||||||
@ -343,6 +366,26 @@ class CtpMdApi(MdApi):
|
|||||||
tick.bidVolume1 = data['BidVolume1']
|
tick.bidVolume1 = data['BidVolume1']
|
||||||
tick.askPrice1 = data['AskPrice1']
|
tick.askPrice1 = data['AskPrice1']
|
||||||
tick.askVolume1 = data['AskVolume1']
|
tick.askVolume1 = data['AskVolume1']
|
||||||
|
|
||||||
|
#tick.bidPrice2 = data['BidPrice2']
|
||||||
|
#tick.bidVolume2 = data['BidVolume2']
|
||||||
|
#tick.askPrice2 = data['AskPrice2']
|
||||||
|
#tick.askVolume2 = data['AskVolume2']
|
||||||
|
#
|
||||||
|
#tick.bidPrice3 = data['BidPrice3']
|
||||||
|
#tick.bidVolume3 = data['BidVolume3']
|
||||||
|
#tick.askPrice3= data['AskPrice3']
|
||||||
|
#tick.askVolume3 = data['AskVolume3']
|
||||||
|
#
|
||||||
|
#tick.bidPrice4 = data['BidPrice4']
|
||||||
|
#tick.bidVolume4 = data['BidVolume4']
|
||||||
|
#tick.askPrice4 = data['AskPrice4']
|
||||||
|
#tick.askVolume4 = data['AskVolume4']
|
||||||
|
#
|
||||||
|
#tick.bidPrice5 = data['BidPrice5']
|
||||||
|
#tick.bidVolume5 = data['BidVolume5']
|
||||||
|
#tick.askPrice5 = data['AskPrice5']
|
||||||
|
#tick.askVolume5 = data['AskVolume5']
|
||||||
|
|
||||||
self.gateway.onTick(tick)
|
self.gateway.onTick(tick)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user