初步完成dataRecord的全过程时序
This commit is contained in:
parent
29dd68e883
commit
91b3b8b1c5
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user