初步完成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
loop
rundr->rundr: 检查是否处于交易时间段\n非交易时间段不起动子进程
rundr->rundr: 若处于非交易时间段 && 有子进程存在,\n就终止子进程运行
rundr->run ** : 若处于交易时间段 && 不存在子进程\ncreate process
rundr->rundr: 若处于非交易时间段\n并且有子进程存在,\n就终止子进程运行
rundr->run ** : 若处于交易时间段\n并且不存在子进程\ncreate process
activate run
rundr->rundr: sleep(5)
end loop
@ -96,7 +96,12 @@ run->me ++ : addGateway(ibGateway)
** 获取连接IB G/W的信息
end note
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
wrap->wrap ++ : 构造函数()
return object
@ -112,11 +117,20 @@ run->me ++ : addApp()
dr->drq **:Create Queue
dr->drt **:Create Thread
activate drt #blue
dr->dr:loadSetting()
dr->dr ++ : loadSetting()
note right
从配置文件中加载
订阅设置到字典对象
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)
note right: 登记EVENT_TICK事件
return
@ -139,30 +153,27 @@ run->ee: ee.regiser() 注册日志处理事件
run->me++: me.Connect(IB)
note right: 连接IB网关
me->gw ++ : gw.connect()
gw-> wrap ++ : ibwrapper.eConnect(host, port, clientId, false)
wrap-\ib ++ : 调用IB的C++代码发送连接请求数据包到IB网关
gw-> wrap ++ : ibwrapper.eConnect(host, port, \nclientId, false)
wrap-\ib ++ : 调用IB的C++代码,\n发送连接请求数据包到IB网关
return
return
gw->wrap ++ : ibwrapper.reqCurrentTime()
wrap->ib ++: 调用IB的C++代码发送服务器时间查询数据包到IB网关
wrap->ib ++: 调用IB的C++代码,\n发送服务器时间查询数据包到IB网关
return
return
return
ib-/ wrap ++ : connectAck()\nIB网关发回响应数据包到IB的C++代码,该代码回调函数
ib-/ wrap ++ : connectAck()\nIB网关发回响应数据包到IB的C++代码,\n该代码回调函数
return
ib->wrap ++ : currentTime()\nIB网关发回响应数据包到IB的C++代码,该代码回调函数
wrap->gw ++ : 修改连接状态\ngateway.conntected=true
ib->wrap ++ : currentTime()\nIB网关发回响应数据包到IB的C++代码,\n该代码回调函数
wrap->gw ++ : 将缓存的req取出进行实际订阅\nsubscribe(subscribeReq)
gw->wrap ++ : 请求合约详细\nreqContractDetails(tickerId, contract)
return
wrap->gw ++ : 订阅市场行情\nsubscribe(subscribeReq)
gw->wrap ++ : 请求合约详细\nreqContractDetails(self.tickerId, contract)
return
gw->wrap ++ : 请求市场数据\nreqMktData(self.tickerId, contract, '', False, TagValueList())
gw->wrap ++ : 请求市场数据\nreqMktData(tickerId, contract, '',\nFalse, TagValueList())
return
|||
return
@ -219,14 +230,14 @@ eet->ee--: ee.run()
loop
ee->eeq ++ :queue.get()
return event
ee->ee ++ : __process(event)
ee->ee ++ #red : __process(event)
ee->dr ++ #red :call procecssTickEvent()
dr->dr ++ :OnTick()
dr->dr ++ #red :OnTick()
dr->drq ++: queue.put(tick)
return
return
dr->dr ++ :OnBar()
dr->dr ++ #red :OnBar()
dr->drq ++: queue.put(bar)
return
return