初步完成dataRecord的全过程时序

This commit is contained in:
zhu4ling3 2018-04-12 05:51:29 -04:00
parent e8059cfc4b
commit 12b1e10c51
3 changed files with 62 additions and 3 deletions

View File

@ -1,14 +1,18 @@
@startuml @startuml
class EClient
class EClientSocket
abstract class EWrapper abstract class EWrapper
class IbWrapper class IbWrapper
class VnIbApi class VnIbApi
class IbApiWrap class IbApiWrap
class IbApi class IbApi
EClient <|-- EClientSocket
EWrapper <|-- IbWrapper EWrapper <|-- IbWrapper
IbWrapper *-- VnIbApi IbWrapper *-- VnIbApi
EClientSocket *-- VnIbApi
IbWrapper --* VnIbApi IbWrapper --* VnIbApi
VnIbApi <|-- IbApiWrap : Boost.python封装 VnIbApi <|-- IbApiWrap : Boost.python封装
note right note right
@ -23,7 +27,19 @@ Python的程序对接使用此类型。
end note end note
class EClient {
}
note right
IB提供的C++源代码。
此类定义了应用程序向IB网关发起请求的主动函数。
end note
class EClientSocket {
}
note right
IB提供的C++源代码。
此类定义了应用程序向IB网关发起请求的主动函数。
end note
abstract class EWrapper { abstract class EWrapper {
} }

View File

@ -6,4 +6,4 @@
NO | 场景 | vnpy入口源代码文件 | UML文件名 NO | 场景 | vnpy入口源代码文件 | UML文件名
---|---------------|------------------|----------- ---|---------------|------------------|-----------
1| 实时市场数据采集 | example/DataRecording/runDataRecording.py| dataRecord.puml 1| 实时市场数据采集 | example/DataRecording/runDataRecording.py| dataRecord.puml
2|IB API封装方法 | vnpy/api/ib/vnib/vnib/vnib.cpp .h/ |IbApi.puml

View File

@ -15,6 +15,7 @@ participant Queue as eeq
participant TimerThread as eetm participant TimerThread as eetm
participant "ibGateway:vtGateway" as gw participant "ibGateway:vtGateway" as gw
participant "IbWrapper:IbApi" as wrap participant "IbWrapper:IbApi" as wrap
participant "IB Gateway/IB TWS" as ib
@ -94,7 +95,7 @@ run->me ++ : addGateway(ibGateway)
** 内部变量初始化为空 ** 内部变量初始化为空
** 获取连接IB G/W的信息 ** 获取连接IB G/W的信息
end note end note
gw->wrap ** : Create IbWrap(self) gw->wrap ** : Create IbWrapper(self)
note right note right
IbApi是基于Boost.python的封装。 IbApi是基于Boost.python的封装。
用C++实现但是可以提供给Python程序使用。 用C++实现但是可以提供给Python程序使用。
@ -126,6 +127,7 @@ run->me ++ : addApp()
订阅设置到字典对象 订阅设置到字典对象
end note end note
dr->ee++:register(TICK, handler) dr->ee++:register(TICK, handler)
note right: 登记EVENT_TICK事件
return return
dr-->dr -- : dr-->dr -- :
dr-->me--: object dr-->me--: object
@ -148,9 +150,50 @@ 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 ++ : wrap.eConnect(host, port, clientId, false) gw-> wrap ++ : ibwrapper.eConnect(host, port, clientId, false)
wrap-\ib ++ : 调用IB的C++代码发送连接请求数据包到IB网关
return
return
gw->wrap ++ : ibwrapper.reqCurrentTime()
wrap->ib ++: 调用IB的C++代码发送服务器时间查询数据包到IB网关
return
return
return
ib-/ wrap ++ : connectAck()\nIB网关发回响应数据包到IB的C++代码,该代码回调函数
return
ib->wrap ++ : currentTime()\nIB网关发回响应数据包到IB的C++代码,该代码回调函数
wrap->gw ++ : 修改连接状态\ngateway.conntected=true
return
wrap->gw ++ : 订阅市场行情\nsubscribe(subscribeReq)
gw->wrap ++ : 请求合约详细\nreqContractDetails(self.tickerId, contract)
return
gw->wrap ++ : 请求市场数据\nreqMktData(self.tickerId, contract, '', False, TagValueList())
return
|||
return
|||
return
ib->wrap ++ : contractDetails(reqId, contractDetails)\nIB网关响应的合约信息通过回调函数传入
wrap -> gw ++ : OnContract(contract)\n推送事件
gw->ee ++ : ee.put(event(EVENT_CONTRACT, contract))
return
return return
return return
ib->wrap ++ : tickPrice(tickerId, field, price, canAutoExecute)\nIB网关响应的合约信息通过回调函数传入
wrap -> gw ++ : OnTick(tick)\n推送事件
gw->ee ++ : ee.put(event(EVENT_TICK, tick))
return
return
return
me->me ++ : dbConnect() me->me ++ : dbConnect()
me->db ++ : MongoClient() me->db ++ : MongoClient()
return dbClinet return dbClinet