vnpy有一个叫做主引擎的东西,在三里面也说过,个人觉得这个应该是一个运行框架的东西,不应该叫做引擎,不过没关系,名字而已嘛。这一篇呢主要就是分析一下主引擎的代码。
class MainEngine(object):
"""主引擎"""
#----------------------------------------------------------------------
def __init__(self, eventEngine):
"""Constructor"""
#----------------------------------------------------------------------
def addGateway(self, gatewayModule):
#----------------------------------------------------------------------
def addApp(self, appModule):
#----------------------------------------------------------------------
def getGateway(self, gatewayName):
#----------------------------------------------------------------------
def connect(self, gatewayName):
#----------------------------------------------------------------------
def subscribe(self, subscribeReq, gatewayName):
#----------------------------------------------------------------------
def sendOrder(self, orderReq, gatewayName):
#----------------------------------------------------------------------
def cancelOrder(self, cancelOrderReq, gatewayName):
"""对特定接口撤单"""
#----------------------------------------------------------------------
def qryAccount(self, gatewayName):
"""查询特定接口的账户"""
#----------------------------------------------------------------------
def qryPosition(self, gatewayName):
"""查询特定接口的持仓"""
#----------------------------------------------------------------------
def exit(self):
"""退出程序前调用,保证正常退出"""
#----------------------------------------------------------------------
def writeLog(self, content):
"""快速发出日志事件"""
#----------------------------------------------------------------------
def dbConnect(self):
"""连接MongoDB数据库"""
#----------------------------------------------------------------------
def dbInsert(self, dbName, collectionName, d):
"""向MongoDB中插入数据,d是具体数据"""
#----------------------------------------------------------------------
def dbQuery(self, dbName, collectionName, d, sortKey='', sortDirection=ASCENDING):
"""从MongoDB中读取数据,d是查询要求,返回的是数据库查询的指针"""
#----------------------------------------------------------------------
def dbUpdate(self, dbName, collectionName, d, flt, upsert=False):
"""向MongoDB中更新数据,d是具体数据,flt是过滤条件,upsert代表若无是否要插入"""
#----------------------------------------------------------------------
def dbDelete(self, dbName, collectionName, flt):
"""从数据库中删除数据,flt是过滤条件"""
#----------------------------------------------------------------------
def dbLogging(self, event):
"""向MongoDB中插入日志"""
#----------------------------------------------------------------------
def getTick(self, vtSymbol):
"""查询行情"""
#----------------------------------------------------------------------
def getContract(self, vtSymbol):
"""查询合约"""
#----------------------------------------------------------------------
def getAllContracts(self):
"""查询所有合约(返回列表)"""
#----------------------------------------------------------------------
def getOrder(self, vtOrderID):
"""查询委托"""
#----------------------------------------------------------------------
def getPositionDetail(self, vtSymbol):
"""查询持仓细节"""
#----------------------------------------------------------------------
def getAllWorkingOrders(self):
"""查询所有的活跃的委托(返回列表)"""
#----------------------------------------------------------------------
def getAllOrders(self):
"""查询所有委托"""
#----------------------------------------------------------------------
def getAllTrades(self):
"""查询所有成交"""
#----------------------------------------------------------------------
def getAllAccounts(self):
"""查询所有账户"""
#----------------------------------------------------------------------
def getAllPositions(self):
"""查询所有持仓"""
#----------------------------------------------------------------------
def getAllPositionDetails(self):
"""查询本地持仓缓存细节"""
#----------------------------------------------------------------------
def getAllGatewayDetails(self):
"""查询引擎中所有底层接口的信息"""
#----------------------------------------------------------------------
def getAllAppDetails(self):
"""查询引擎中所有上层应用的信息"""
#----------------------------------------------------------------------
def getApp(self, appName):