官方Interactive Brokers API
项目描述
一些事情/定义/约定
a 低级消息 是一些数据,前面有它的尺寸
a 高级消息 是由NULL字符分隔的字段列表;字段都是字符串;消息ID是第一个字段,其余的字段数量和语义取决于消息本身
a 请求 是客户端发送到TWS/IBGW(IB网关)的消息
an answer 是从TWS/IBGW发送到客户端的消息
代码如何组织
comm 模块:包含处理(例如:编码/解码)低级和高级消息的工具
Connection:一个美化的套接字
Reader:一个线程,使用Connection读取数据包,将其转换为低级消息,并将其放入队列中
Decoder:知道如何将低级消息解码为高级消息
客户端:
知道如何发送请求
有一个消息循环,它从队列中获取低级消息,并使用解码器将其转换为高级消息,然后调用相应的包装器方法
Wrapper:需要由用户子类化的类,以便获取传入的消息
信息/数据流是
接收
Connection.recv_msg()(本质上是一个套接字)接收数据包
使用Connection.*recvall_msgs()*,它试图根据一些简单的启发式方法将较小的数据包组合成较大的数据包
Reader.run()使用Connection.recv_msg()获取数据包,然后使用comm.read_msg()尝试将其转换为低级消息。如果还不能完成(大小前缀表示如此),则等待更多数据包
如果收到完整的低级消息,则将其放入队列(记住这是一个独立线程)
主线程运行Client.run()循环
从队列中获取低级消息
使用comm.py将其转换为高级消息(字段)
使用Decoder.interpret()根据该消息采取行动
Decoder.interpret()将字段转换为正确类型的函数参数,并调用Wrapper类的正确/相应方法
发送
Client类有实现请求的方法。用户将使用所需的参数调用这些请求方法,而Client将它们发送到TWS/IBGW。
实现说明
Decoder有两种处理消息的方式(本质上是对字段进行解码)
一些消息非常整洁地映射到函数调用;这意味着字段的数量和顺序与方法参数相同。例如:Wrapper.tickSize().在这种情况下,在传入的消息ID和Wrapper方法之间建立了一种简单的映射
IN.TICK_SIZE: HandleInfo(wrap=Wrapper.tickSize),
其他消息更复杂,高度依赖于版本号,或需要字段按摩。在这种情况下,传入的消息ID映射到处理函数,该函数将执行所有这些操作,并在最后调用Wrapper方法。例如
IN.TICK_PRICE: HandleInfo(proc=processTickPriceMsg),
安装说明
您可以使用此来构建源分发
python3 setup.py sdist
您可以使用此来构建wheel
python3 setup.py bdist_wheel
您可以使用此来安装wheel
python3 -m pip install –user –upgrade dist/ibapi-9.75.1-py3-none-any.whl
项目详情
ibapi-9.81.1.post1.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 49f6678bf4cced996920f32ad4b48e6897749ac30ba14a661082285f4ec09cd6 |
|
MD5 | fa8f7acfcde1002664c315bef1b8f252 |
|
BLAKE2b-256 | cc788f1322aa1be1fe7d747d06d445ede80141e873525120bde809ccae5484fa |