初步完成dataRecord的全过程时序
This commit is contained in:
parent
29dd68e883
commit
91b3b8b1c5
@ -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
|
||||
return
|
||||
|
||||
wrap->gw ++ : 订阅市场行情\nsubscribe(subscribeReq)
|
||||
gw->wrap ++ : 请求合约详细\nreqContractDetails(self.tickerId, contract)
|
||||
ib->wrap ++ : currentTime()\nIB网关发回响应数据包到IB的C++代码,\n该代码回调函数
|
||||
wrap->gw ++ : 将缓存的req取出,进行实际订阅\nsubscribe(subscribeReq)
|
||||
gw->wrap ++ : 请求合约详细\nreqContractDetails(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
|
||||
|
Loading…
Reference in New Issue
Block a user