初步完成dataRecord的全过程时序

This commit is contained in:
zhu4ling3 2018-04-24 00:43:08 -04:00
parent 29dd68e883
commit 91b3b8b1c5

View File

@ -27,8 +27,8 @@ participant "IB Gateway/IB TWS" as ib
activate rundr activate rundr
loop loop
rundr->rundr: 检查是否处于交易时间段\n非交易时间段不起动子进程 rundr->rundr: 检查是否处于交易时间段\n非交易时间段不起动子进程
rundr->rundr: 若处于非交易时间段 && 有子进程存在,\n就终止子进程运行 rundr->rundr: 若处于非交易时间段\n并且有子进程存在,\n就终止子进程运行
rundr->run ** : 若处于交易时间段 && 不存在子进程\ncreate process rundr->run ** : 若处于交易时间段\n并且不存在子进程\ncreate process
activate run activate run
rundr->rundr: sleep(5) rundr->rundr: sleep(5)
end loop end loop
@ -96,7 +96,12 @@ run->me ++ : addGateway(ibGateway)
** 获取连接IB G/W的信息 ** 获取连接IB G/W的信息
end note end note
gw->wrap ** : Create IbWrapper(self) gw->wrap ** : Create IbWrapper(self)
note right: IbApi是基于Boost.python的封装。\n用C++实现但是可以提供给Python程序使用。 note right
IbApi是基于Boost.python的封装,
用C++实现但是可以提供给Python程序使用。
IbApid的功能上面主要提供了主动函数
和回调函数。
end note
activate wrap activate wrap
wrap->wrap ++ : 构造函数() wrap->wrap ++ : 构造函数()
return object return object
@ -112,11 +117,20 @@ run->me ++ : addApp()
dr->drq **:Create Queue dr->drq **:Create Queue
dr->drt **:Create Thread dr->drt **:Create Thread
activate drt #blue activate drt #blue
dr->dr:loadSetting() dr->dr ++ : loadSetting()
note right note right
从配置文件中加载 从配置文件中加载
订阅设置到字典对象 订阅设置到字典对象
end note end note
dr->me ++ : me.subscribe(req, gateway)
note left
根据配置文件订阅TICK数据和BAR数据。
end note
me->gw ++ : 订阅市场行情\ngw.subscribe(req)
gw->gw : 如果网关没有连接就先缓存req
return
return
return
dr->ee++:register(TICK, handler) dr->ee++:register(TICK, handler)
note right: 登记EVENT_TICK事件 note right: 登记EVENT_TICK事件
return return
@ -139,30 +153,27 @@ run->ee: ee.regiser() 注册日志处理事件
run->me++: me.Connect(IB) run->me++: me.Connect(IB)
note right: 连接IB网关 note right: 连接IB网关
me->gw ++ : gw.connect() me->gw ++ : gw.connect()
gw-> wrap ++ : ibwrapper.eConnect(host, port, clientId, false) gw-> wrap ++ : ibwrapper.eConnect(host, port, \nclientId, false)
wrap-\ib ++ : 调用IB的C++代码发送连接请求数据包到IB网关 wrap-\ib ++ : 调用IB的C++代码,\n发送连接请求数据包到IB网关
return return
return return
gw->wrap ++ : ibwrapper.reqCurrentTime() gw->wrap ++ : ibwrapper.reqCurrentTime()
wrap->ib ++: 调用IB的C++代码发送服务器时间查询数据包到IB网关 wrap->ib ++: 调用IB的C++代码,\n发送服务器时间查询数据包到IB网关
return return
return return
return return
ib-/ wrap ++ : connectAck()\nIB网关发回响应数据包到IB的C++代码,该代码回调函数 ib-/ wrap ++ : connectAck()\nIB网关发回响应数据包到IB的C++代码,\n该代码回调函数
return return
ib->wrap ++ : currentTime()\nIB网关发回响应数据包到IB的C++代码,该代码回调函数 ib->wrap ++ : currentTime()\nIB网关发回响应数据包到IB的C++代码,\n该代码回调函数
wrap->gw ++ : 修改连接状态\ngateway.conntected=true wrap->gw ++ : 将缓存的req取出进行实际订阅\nsubscribe(subscribeReq)
return gw->wrap ++ : 请求合约详细\nreqContractDetails(tickerId, contract)
wrap->gw ++ : 订阅市场行情\nsubscribe(subscribeReq)
gw->wrap ++ : 请求合约详细\nreqContractDetails(self.tickerId, contract)
return return
gw->wrap ++ : 请求市场数据\nreqMktData(self.tickerId, contract, '', False, TagValueList()) gw->wrap ++ : 请求市场数据\nreqMktData(tickerId, contract, '',\nFalse, TagValueList())
return return
||| |||
return return
@ -219,14 +230,14 @@ eet->ee--: ee.run()
loop loop
ee->eeq ++ :queue.get() ee->eeq ++ :queue.get()
return event return event
ee->ee ++ : __process(event) ee->ee ++ #red : __process(event)
ee->dr ++ #red :call procecssTickEvent() ee->dr ++ #red :call procecssTickEvent()
dr->dr ++ :OnTick() dr->dr ++ #red :OnTick()
dr->drq ++: queue.put(tick) dr->drq ++: queue.put(tick)
return return
return return
dr->dr ++ :OnBar() dr->dr ++ #red :OnBar()
dr->drq ++: queue.put(bar) dr->drq ++: queue.put(bar)
return return
return return