/ib

Pure Go interface to Interactive Brokers IB API

Primary LanguageGo

GoIB

Build Status GoDoc Coverage Status

This is a pure Go interface to Interactive Brokers IB API. Features include:

  • 100% pure Go (no Java/C calls)
  • Idiomatic design (Go naming conventions, channels, error handling etc)
  • Choice of low-level types or our high-level Manager types
  • Extensively tested (test coverage via Coveralls, CI via Drone, local test server)
  • Documentation on GoDoc
  • Reflects very up-to-date IB API version

We welcome your involvement and contributions! If you like the project, please click the GitHub "Star" or "Fork" button. We also invite you to join the contributor list by submitting pull requests.

Status

  • The code presently supports IB API 971.01 (latest as of March 2014)
  • All reply types (see ereader.go) are supported
  • Some request types (see eclientsocket.go) require porting

Testing

go test requires IB Gateway be running at 127.0.0.1:4002 and providing access to a financial advisor account. Always use a demo or paper trade account, as the tests may modify your account.

The easiest way to start IB Gateway with a financial advisor demo account is to use the test server. Have a look at the test server instructions for all the details.

By default the tests produce no output. If you'd like to view engine communication logs during test execution, set the IB_ENGINE_DUMP environment variable to any value. For example, IB_ENGINE_DUMP=t go test.

If you fork this project and would like to configure Drone and Coveralls for your fork, our Drone instructions should be of help.

License

This library is licensed under GNU Lesser General Public License version 3.

Static linking exception: The copyright holders give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you must extend this exception to your version of the library.

  • This library is safe for use in close-source applications. The LGPL share-alike terms do not apply to applications built on top of this library.
  • You do not need a commercial license. The LGPL applies to the library's own source code, not your applications.