Skip to content

Part of IB-Ruby. Provides access to an OrientDB-Database

License

Notifications You must be signed in to change notification settings

ib-ruby/ib-orientdb

Repository files navigation

IB-OrientDB


STATUS: This Gem is not maintained anymore. Orientdb, the database, ist either not maintained anymore.

An Adapter for ArcadeDB, the successor of orientdb is in progress

Documentation: https://ib-ruby.github.io/ib-doc/

Questions, Contributions, Remarks: Discussions are opened in ib-api


OrientDB is a Not Only SQL Database owned and maintained by SAP.

It aims to be "the first Multi-Model Open Source NOSQL DBMS that brings together the power of graphs and the flexibility of documents into one scalable high-performance operational database."( source )

IB-OrientDB connects a running IB-api-client to a running OrientDB-Database-Server and provides methods to store data provided by the Interactive Brokers TWS into the database and to retrieve them as well.

It replaces core functions of ib-gateway from the IB-Extensions-Gem

INSTALLATION:

    $ git clone https://github.com/ib-ruby/ib-orientdb
    $ cd ib-orientdb
    $ bundle install; bundle update
or
specify in Gemfile:
    gem 'ib-api'
    gem 'ib-extensions'
    gem 'ib-orientdb'

Store a contract in the database, query and ask the TWS for historical data

> ge =  IB::Stock.new symbol: 'GE'
> ge.verify.first.save              => <Stock: GE USD NYSE>
> puts IB::Stock.where(symbol: 'GE').eod( duration: 5).to_human
 #  INFO->MATCH {class: ib_stock, as: ib_stocks, where: ( symbol = 'GE') } RETURN ib_stocks
<Bar: 2020-11-23 wap 10.127 OHLC 9.76 10.27 9.76 10.25 trades 116355 vol 1025063>
<Bar: 2020-11-24 wap 10.574 OHLC 10.27 10.85 10.14 10.54 trades 204947 vol 1729882>
<Bar: 2020-11-25 wap 10.479 OHLC 10.55 10.6 10.34 10.51 trades 120367 vol 1063415>
<Bar: 2020-11-27 wap 10.403 OHLC 10.5 10.65 10.31 10.41 trades 73036 vol 529140>
<Bar: 2020-11-30 wap 10.215 OHLC 10.37 10.43 9.96 10.24 trades 134117 vol 1173670>

Monitor the Account

After initialising the database, a class HC::Portfolio is present. It is used to manage Portfolio- and Account-Data. Data from the TWS are imported with HC::Portfolio.bake (Details) and assigned to the TimeGrid. Then, the progress of the account is displayed through

 TG:Jahr[2020].monat(10).tag(10..31)   #=>   Reference to the TimeGrid
              .portfolios.first        #=>   Connection to HC::Portfolio
`             .values                  #=>   Hash with Account-Informations 
              .orient_flatten          #=>   flattenn the Array while protecting IB::Model-structures
              .map{|y|  y[:NetLiquidation][:ALL][:EUR] }   # select the data-item
 =>  [69603.6, 69489.85, 70484.55, 70510.63, 70535.23, 71731.03, 69961.97, 69401.94, 71457.3, 71734.38, 71491.07, 67803.07, 68689.82]

The same approach works to monitor progress and properties of positions and collections of positions, ie. trading-strategies.

About

Part of IB-Ruby. Provides access to an OrientDB-Database

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages