[Add]增加更多的资源类型

This commit is contained in:
vn.py 2018-01-21 16:07:48 +08:00
parent 3a9ebc1bfa
commit 64c63c9c5d
2 changed files with 116 additions and 25 deletions

View File

@ -35,7 +35,7 @@ api = Api(app)
# 创建资源
########################################################################
class Gateways(Resource):
class Gateway(Resource):
"""接口"""
#----------------------------------------------------------------------
@ -60,7 +60,7 @@ class Gateways(Resource):
########################################################################
class Orders(Resource):
class Order(Resource):
"""委托"""
#----------------------------------------------------------------------
@ -89,7 +89,7 @@ class Orders(Resource):
########################################################################
class Trades(Resource):
class Trade(Resource):
"""成交"""
#----------------------------------------------------------------------
@ -101,44 +101,74 @@ class Trades(Resource):
########################################################################
class Accounts(Resource):
class Account(Resource):
"""账户"""
#----------------------------------------------------------------------
def get(self):
"""查询"""
pass
data = me.getAllAccounts()
l = {o.__dict__ for o in data}
return l
########################################################################
class Positions(Resource):
class Position(Resource):
"""持仓"""
#----------------------------------------------------------------------
def get(self):
"""查询"""
pass
data = me.getAllPositions()
l = {o.__dict__ for o in data}
return l
########################################################################
class Contracts(Resource):
class Contract(Resource):
"""合约"""
#----------------------------------------------------------------------
def get(self):
"""查询"""
pass
data = me.getAllContracts()
l = {o.__dict__ for o in data}
return l
########################################################################
class Log(Resource):
"""日志"""
#----------------------------------------------------------------------
def get(self):
"""查询"""
data = me.getLog()
l = {o.__dict__ for o in data}
return l
########################################################################
class Error(Resource):
"""错误"""
#----------------------------------------------------------------------
def get(self):
"""查询"""
data = me.getError()
l = {o.__dict__ for o in data}
return l
# 注册资源
api.add_resource(Gateways, '/gateways')
api.add_resource(Orders, '/orders')
api.add_resource(Trades, '/trades')
api.add_resource(Accounts, '/accounts')
api.add_resource(Positions, '/positions')
api.add_resource(Contracts, '/contracts')
api.add_resource(Gateway, '/gateway')
api.add_resource(Order, '/order')
api.add_resource(Trade, '/trades')
api.add_resource(Account, '/account')
api.add_resource(Position, '/position')
api.add_resource(Contract, '/contract')
api.add_resource(Log, '/log')
api.add_resource(Error, '/error')

View File

@ -299,6 +299,16 @@ class MainEngine(object):
"""查询所有成交"""
return self.dataEngine.getAllTrades()
#----------------------------------------------------------------------
def getAllAccounts(self):
"""查询所有账户"""
return self.dataEngine.getAllAccounts()
#----------------------------------------------------------------------
def getAllPositions(self):
"""查询所有持仓"""
return self.dataEngine.getAllPositions()
#----------------------------------------------------------------------
def getAllPositionDetails(self):
"""查询本地持仓缓存细节"""
@ -360,6 +370,16 @@ class MainEngine(object):
"""转换委托请求"""
return self.dataEngine.convertOrderReq(req)
#----------------------------------------------------------------------
def getLog(self):
"""查询日志"""
return self.dataEngine.getLog()
#----------------------------------------------------------------------
def getError(self):
"""查询错误"""
return self.dataEngine.getError()
########################################################################
class DataEngine(object):
@ -374,17 +394,15 @@ class DataEngine(object):
"""Constructor"""
self.eventEngine = eventEngine
# 保存合约详细信息的字典
# 保存数据的字典和列表
self.contractDict = {}
# 保存委托数据的字典
self.orderDict = {}
# 保存成交数据的字典
self.workingOrderDict = {} # 可撤销委托
self.tradeDict = {}
# 保存活动委托数据的字典(即可撤销)
self.workingOrderDict = {}
self.accountDict = {}
self.positionDict= {}
self.logList = []
self.errorList = []
# 持仓细节相关
self.detailDict = {} # vtSymbol:PositionDetail
@ -403,6 +421,9 @@ class DataEngine(object):
self.eventEngine.register(EVENT_ORDER, self.processOrderEvent)
self.eventEngine.register(EVENT_TRADE, self.processTradeEvent)
self.eventEngine.register(EVENT_POSITION, self.processPositionEvent)
self.eventEngine.register(EVENT_ACCOUNT, self.processAccountEvent)
self.eventEngine.register(EVENT_LOG, self.processLogEvent)
self.eventEngine.register(EVENT_ERROR, self.processErrorEvent)
#----------------------------------------------------------------------
def processContractEvent(self, event):
@ -442,11 +463,31 @@ class DataEngine(object):
def processPositionEvent(self, event):
"""处理持仓事件"""
pos = event.dict_['data']
self.positionDict[pos.vtPositionName] = pos
# 更新到持仓细节中
detail = self.getPositionDetail(pos.vtSymbol)
detail.updatePosition(pos)
#----------------------------------------------------------------------
def processAccountEvent(self, event):
"""处理账户事件"""
account = event.dict_['data']
self.accountDict[account.vtAccountID] = account
#----------------------------------------------------------------------
def processLogEvent(self, event):
"""处理日志事件"""
log = event.dict_['data']
self.logList.append(log)
#----------------------------------------------------------------------
def processErrorEvent(self, event):
"""处理错误事件"""
error = event.dict_['data']
self.errorList.append(error)
#----------------------------------------------------------------------
def getContract(self, vtSymbol):
"""查询合约对象"""
@ -498,7 +539,17 @@ class DataEngine(object):
#----------------------------------------------------------------------
def getAllTrades(self):
"""获取所有成交"""
return self.tradeDict.values()
return self.tradeDict.values()
#----------------------------------------------------------------------
def getAllPositions(self):
"""获取所有持仓"""
return self.positionDict.values()
#----------------------------------------------------------------------
def getAllAccounts(self):
"""获取所有资金"""
return self.accountDict.values()
#----------------------------------------------------------------------
def getPositionDetail(self, vtSymbol):
@ -549,6 +600,16 @@ class DataEngine(object):
else:
return detail.convertOrderReq(req)
#----------------------------------------------------------------------
def getLog(self):
"""获取日志"""
return self.logList
#----------------------------------------------------------------------
def getError(self):
"""获取错误"""
return self.errorList
########################################################################
class LogEngine(object):
@ -651,7 +712,7 @@ class LogEngine(object):
function = self.levelFunctionDict[log.logLevel] # 获取日志级别对应的处理函数
msg = '\t'.join([log.gatewayName, log.logContent])
function(msg)
########################################################################
class PositionDetail(object):