Skip to main content

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
  • 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


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)

Uploaded Source

Built Distribution

nautilus_ibapi-1019.1-py3-none-any.whl (71.9 kB view details)

Uploaded Python 3

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

Hashes for nautilus_ibapi-1019.1.tar.gz
Algorithm Hash digest
SHA256 dae539d667d7f06d953ccd5353ff4f5315c9f4d1fe448ef71704fae1daa95585
MD5 728442a32e16f235ebfe34cb03d7a1e2
BLAKE2b-256 3611fc691dabc65624ae62ebd25fe43eaa46adff4f03da5699dca9241d87a4e9

See more details on using hashes here.

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

Hashes for nautilus_ibapi-1019.1-py3-none-any.whl
Algorithm Hash digest
SHA256 00a521ee8a7870f6a2430d9f5145e42cfc48aae5791d3c54fc0d5d54b099f615
MD5 cb7302ff43e753bc54a0b43bae12ef9d
BLAKE2b-256 e8ba8e1f3adc98fba346b019e501a22fc7739f8cfde0ebc2496f98c0263a51fa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page