Python IB API
Reason this release was yanked:
Incorrect version
Project description
A couple of things/definitions/conventions:
- a low level message is some data prefixed with its size
- a high level message is a list of fields separated by the NULL character; the fields are all strings; the message ID is the first field, the come others whose number and semantics depend on the message itself
- a request is a message from client to TWS/IBGW (IB Gateway)
- an answer is a message from TWS/IBGW to client
How the code is organized:
- comm module: has tools that know how to handle (eg: encode/decode) low and high level messages
- Connection: glorified socket
- Reader: thread that uses Connection to read packets, transform to low level messages and put in a Queue
- Decoder: knows how to take a low level message and decode into high level message
- Client:
- knows to send requests
- has the message loop which takes low level messages from Queue and uses Decoder to tranform into high level message with which it then calls the corresponding Wrapper method
- Wrapper: class that needs to be subclassed by the user so that it can get the incoming messages
The info/data flow is:
-
receiving:
- Connection.recv_msg() (which is essentially a socket) receives the packets
- uses Connection._recv_all_msgs() which tries to combine smaller packets into bigger ones based on some trivial heuristic
- Reader.run() uses Connection.recv_msg() to get a packet and then uses comm.read_msg() to try to make it a low level message. If that can't be done yet (size prefix says so) then it waits for more packets
- if a full low level message is received then it is placed in the Queue (remember this is a standalone thread)
- the main thread runs the Client.run() loop which:
- gets a low level message from Queue
- uses comm.py to translate into high level message (fields)
- uses Decoder.interpret() to act based on that message
- Decoder.interpret() will translate the fields into function parameters of the correct type and call with the correct/corresponding method of Wrapper class
- Connection.recv_msg() (which is essentially a socket) receives the packets
-
sending:
- Client class has methods that implement the requests. The user will call those request methods with the needed parameters and Client will send them to the TWS/IBGW.
Implementation notes:
-
the Decoder has two ways of handling a message (esentially decoding the fields)
- some message very neatly map to a function call; meaning that the number of fields and order are the same as the method parameters. For example: Wrapper.tickSize(). In this case a simple mapping is made between the incoming msg id and the Wrapper method:
IN.TICK_SIZE: HandleInfo(wrap=Wrapper.tickSize),
- other messages are more complex, depend on version number heavily or need field massaging. In this case the incoming message id is mapped to a processing function that will do all that and call the Wrapper method at the end. For example:
IN.TICK_PRICE: HandleInfo(proc=processTickPriceMsg),
Instalation notes:
- you can use this to build a source distribution
python3 setup.py sdist
- you can use this to build a wheel
python3 setup.py bdist_wheel
- you can use this to install the wheel
python3 -m pip install --user --upgrade dist/ibapi-9.75.1-py3-none-any.whl
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nautilus_ibapi-1019.1.tar.gz
(62.7 kB
view details)
Built Distribution
File details
Details for the file nautilus_ibapi-1019.1.tar.gz
.
File metadata
- Download URL: nautilus_ibapi-1019.1.tar.gz
- Upload date:
- Size: 62.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1041-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dae539d667d7f06d953ccd5353ff4f5315c9f4d1fe448ef71704fae1daa95585 |
|
MD5 | 728442a32e16f235ebfe34cb03d7a1e2 |
|
BLAKE2b-256 | 3611fc691dabc65624ae62ebd25fe43eaa46adff4f03da5699dca9241d87a4e9 |
File details
Details for the file nautilus_ibapi-1019.1-py3-none-any.whl
.
File metadata
- Download URL: nautilus_ibapi-1019.1-py3-none-any.whl
- Upload date:
- Size: 71.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1041-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00a521ee8a7870f6a2430d9f5145e42cfc48aae5791d3c54fc0d5d54b099f615 |
|
MD5 | cb7302ff43e753bc54a0b43bae12ef9d |
|
BLAKE2b-256 | e8ba8e1f3adc98fba346b019e501a22fc7739f8cfde0ebc2496f98c0263a51fa |