修改DataRecording和CtaTrading的例子,使用LogEngine输出信息
This commit is contained in:
parent
6c8e035a9c
commit
a38fe96598
16
examples/CtaTrading/VT_setting.json
Normal file
16
examples/CtaTrading/VT_setting.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"fontFamily": "微软雅黑",
|
||||
"fontSize": 12,
|
||||
|
||||
"mongoHost": "localhost",
|
||||
"mongoPort": 27017,
|
||||
"mongoLogging": true,
|
||||
|
||||
"darkStyle": true,
|
||||
"language": "chinese",
|
||||
|
||||
"logActive": false,
|
||||
"logLevel": "debug",
|
||||
"logConsole": true,
|
||||
"logFile": true
|
||||
}
|
@ -6,67 +6,52 @@ from datetime import datetime, time
|
||||
|
||||
from vnpy.event import EventEngine2
|
||||
from vnpy.trader.vtEvent import EVENT_LOG
|
||||
from vnpy.trader.vtEngine import MainEngine
|
||||
from vnpy.trader.vtEngine import MainEngine, LogEngine
|
||||
from vnpy.trader.gateway import ctpGateway
|
||||
from vnpy.trader.app import ctaStrategy
|
||||
from vnpy.trader.app.ctaStrategy.ctaBase import EVENT_CTA_LOG
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
def printLog(content):
|
||||
"""输出日志"""
|
||||
t = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
print '%s\t%s' %(t, content)
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
def processLogEvent(event):
|
||||
"""处理日志事件"""
|
||||
log = event.dict_['data']
|
||||
if log.gatewayName:
|
||||
content = '%s:%s' %(log.gatewayName, log.logContent)
|
||||
else:
|
||||
content = '%s:%s' %('MainEngine', log.logContent)
|
||||
printLog(content)
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
def processCtaLogEvent(event):
|
||||
"""处理CTA模块日志事件"""
|
||||
log = event.dict_['data']
|
||||
content = '%s:%s' %('CTA Engine', log.logContent)
|
||||
printLog(content)
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
def runChildProcess():
|
||||
"""子进程运行函数"""
|
||||
print '-'*20
|
||||
printLog(u'启动CTA策略运行子进程')
|
||||
|
||||
# 创建日志引擎
|
||||
le = LogEngine()
|
||||
le.setLogLevel(le.LEVEL_INFO)
|
||||
le.addConsoleHandler()
|
||||
le.addFileHandler()
|
||||
|
||||
le.info(u'启动CTA策略运行子进程')
|
||||
|
||||
ee = EventEngine2()
|
||||
printLog(u'事件引擎创建成功')
|
||||
le.info(u'事件引擎创建成功')
|
||||
|
||||
me = MainEngine(ee)
|
||||
me.addGateway(ctpGateway)
|
||||
me.addApp(ctaStrategy)
|
||||
printLog(u'主引擎创建成功')
|
||||
le.info(u'主引擎创建成功')
|
||||
|
||||
ee.register(EVENT_LOG, processLogEvent)
|
||||
ee.register(EVENT_CTA_LOG, processCtaLogEvent)
|
||||
printLog(u'注册日志事件监听')
|
||||
ee.register(EVENT_LOG, le.processLogEvent)
|
||||
ee.register(EVENT_CTA_LOG, le.processLogEvent)
|
||||
le.info(u'注册日志事件监听')
|
||||
|
||||
me.connect('CTP')
|
||||
printLog(u'连接CTP接口')
|
||||
le.info(u'连接CTP接口')
|
||||
|
||||
sleep(5) # 等待CTP接口初始化
|
||||
|
||||
cta = me.appDict[ctaStrategy.appName]
|
||||
|
||||
cta.loadSetting()
|
||||
printLog(u'CTA策略载入成功')
|
||||
le.info(u'CTA策略载入成功')
|
||||
|
||||
cta.initAll()
|
||||
printLog(u'CTA策略初始化成功')
|
||||
le.info(u'CTA策略初始化成功')
|
||||
|
||||
cta.startAll()
|
||||
printLog(u'CTA策略启动成功')
|
||||
le.info(u'CTA策略启动成功')
|
||||
|
||||
while True:
|
||||
sleep(1)
|
||||
@ -74,7 +59,12 @@ def runChildProcess():
|
||||
#----------------------------------------------------------------------
|
||||
def runParentProcess():
|
||||
"""父进程运行函数"""
|
||||
printLog(u'启动CTA策略守护父进程')
|
||||
# 创建日志引擎
|
||||
le = LogEngine()
|
||||
le.setLogLevel(le.LEVEL_INFO)
|
||||
le.addConsoleHandler()
|
||||
|
||||
le.info(u'启动CTA策略守护父进程')
|
||||
|
||||
DAY_START = time(8, 45) # 日盘启动和停止时间
|
||||
DAY_END = time(15, 30)
|
||||
@ -96,18 +86,18 @@ def runParentProcess():
|
||||
|
||||
# 记录时间则需要启动子进程
|
||||
if recording and p is None:
|
||||
printLog(u'启动子进程')
|
||||
le.info(u'启动子进程')
|
||||
p = multiprocessing.Process(target=runChildProcess)
|
||||
p.start()
|
||||
printLog(u'子进程启动成功')
|
||||
le.info(u'子进程启动成功')
|
||||
|
||||
# 非记录时间则退出子进程
|
||||
if not recording and p is not None:
|
||||
printLog(u'关闭子进程')
|
||||
le.info(u'关闭子进程')
|
||||
p.terminate()
|
||||
p.join()
|
||||
p = None
|
||||
printLog(u'子进程关闭成功')
|
||||
le.info(u'子进程关闭成功')
|
||||
|
||||
sleep(5)
|
||||
|
||||
@ -116,4 +106,4 @@ if __name__ == '__main__':
|
||||
runChildProcess()
|
||||
|
||||
# 尽管同样实现了无人值守,但强烈建议每天启动时人工检查,为自己的PNL负责
|
||||
# runParentProcess()
|
||||
#runParentProcess()
|
16
examples/DataRecording/VT_setting.json
Normal file
16
examples/DataRecording/VT_setting.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"fontFamily": "微软雅黑",
|
||||
"fontSize": 12,
|
||||
|
||||
"mongoHost": "localhost",
|
||||
"mongoPort": 27017,
|
||||
"mongoLogging": true,
|
||||
|
||||
"darkStyle": true,
|
||||
"language": "chinese",
|
||||
|
||||
"logActive": false,
|
||||
"logLevel": "debug",
|
||||
"logConsole": true,
|
||||
"logFile": true
|
||||
}
|
@ -6,12 +6,12 @@ from datetime import datetime, time
|
||||
|
||||
from vnpy.event import EventEngine2
|
||||
from vnpy.trader.vtEvent import EVENT_LOG
|
||||
from vnpy.trader.vtEngine import MainEngine
|
||||
from vnpy.trader.vtEngine import MainEngine, LogEngine
|
||||
from vnpy.trader.gateway import ctpGateway
|
||||
from vnpy.trader.app import dataRecorder
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
def printLog(content):
|
||||
def le.info(content):
|
||||
"""输出日志"""
|
||||
t = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
print '%s\t%s' %(t, content)
|
||||
@ -24,27 +24,33 @@ def processLogEvent(event):
|
||||
content = '%s:%s' %(log.gatewayName, log.logContent)
|
||||
else:
|
||||
content = '%s:%s' %('MainEngine', log.logContent)
|
||||
printLog(content)
|
||||
le.info(content)
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
def runChildProcess():
|
||||
"""子进程运行函数"""
|
||||
print '-'*20
|
||||
printLog(u'启动行情记录运行子进程')
|
||||
|
||||
# 创建日志引擎
|
||||
le = LogEngine()
|
||||
le.setLogLevel(le.LEVEL_INFO)
|
||||
le.addConsoleHandler()
|
||||
|
||||
le.info(u'启动行情记录运行子进程')
|
||||
|
||||
ee = EventEngine2()
|
||||
printLog(u'事件引擎创建成功')
|
||||
le.info(u'事件引擎创建成功')
|
||||
|
||||
me = MainEngine(ee)
|
||||
me.addGateway(ctpGateway)
|
||||
me.addApp(dataRecorder)
|
||||
printLog(u'主引擎创建成功')
|
||||
le.info(u'主引擎创建成功')
|
||||
|
||||
ee.register(EVENT_LOG, processLogEvent)
|
||||
printLog(u'注册日志事件监听')
|
||||
ee.register(EVENT_LOG, le.processLogEvent)
|
||||
le.info(u'注册日志事件监听')
|
||||
|
||||
me.connect('CTP')
|
||||
printLog(u'连接CTP接口')
|
||||
le.info(u'连接CTP接口')
|
||||
|
||||
while True:
|
||||
sleep(1)
|
||||
@ -52,7 +58,12 @@ def runChildProcess():
|
||||
#----------------------------------------------------------------------
|
||||
def runParentProcess():
|
||||
"""父进程运行函数"""
|
||||
printLog(u'启动行情记录守护父进程')
|
||||
# 创建日志引擎
|
||||
le = LogEngine()
|
||||
le.setLogLevel(le.LEVEL_INFO)
|
||||
le.addConsoleHandler()
|
||||
|
||||
le.info(u'启动行情记录守护父进程')
|
||||
|
||||
DAY_START = time(8, 57) # 日盘启动和停止时间
|
||||
DAY_END = time(15, 18)
|
||||
@ -74,22 +85,22 @@ def runParentProcess():
|
||||
|
||||
# 记录时间则需要启动子进程
|
||||
if recording and p is None:
|
||||
printLog(u'启动子进程')
|
||||
le.info(u'启动子进程')
|
||||
p = multiprocessing.Process(target=runChildProcess)
|
||||
p.start()
|
||||
printLog(u'子进程启动成功')
|
||||
le.info(u'子进程启动成功')
|
||||
|
||||
# 非记录时间则退出子进程
|
||||
if not recording and p is not None:
|
||||
printLog(u'关闭子进程')
|
||||
le.info(u'关闭子进程')
|
||||
p.terminate()
|
||||
p.join()
|
||||
p = None
|
||||
printLog(u'子进程关闭成功')
|
||||
le.info(u'子进程关闭成功')
|
||||
|
||||
sleep(5)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
runChildProcess()
|
||||
#runParentProcess()
|
||||
#runChildProcess()
|
||||
runParentProcess()
|
@ -9,7 +9,8 @@
|
||||
"darkStyle": true,
|
||||
"language": "chinese",
|
||||
|
||||
"logLevel": "info",
|
||||
"logActive": true,
|
||||
"logLevel": "debug",
|
||||
"logConsole": true,
|
||||
"logFile": true
|
||||
}
|
@ -9,6 +9,7 @@
|
||||
"darkStyle": true,
|
||||
"language": "chinese",
|
||||
|
||||
"logActive": true,
|
||||
"logLevel": "debug",
|
||||
"logConsole": true,
|
||||
"logFile": true
|
||||
|
@ -287,6 +287,9 @@ class MainEngine(object):
|
||||
#----------------------------------------------------------------------
|
||||
def initLogEngine(self):
|
||||
"""初始化日志引擎"""
|
||||
if not globalSetting["logActive"]:
|
||||
return
|
||||
|
||||
# 创建引擎
|
||||
self.logEngine = LogEngine()
|
||||
|
||||
@ -311,9 +314,6 @@ class MainEngine(object):
|
||||
# 注册事件监听
|
||||
self.eventEngine.register(EVENT_LOG, self.logEngine.processLogEvent)
|
||||
|
||||
# 记录新启动日志引擎
|
||||
self.logEngine.info(u"------日志引擎启动------")
|
||||
|
||||
|
||||
########################################################################
|
||||
class DataEngine(object):
|
||||
|
Loading…
Reference in New Issue
Block a user