Skip to content

New IBrokers package on CRAN

3 messages · Jeff Ryan, Adrian Dragulescu

#
R-Sig-Finance:

I'd like to announce the alpha version of a new package IBrokers:

Designed to provide native R access to Interactive Brokers' trading
platform, it is currently in a very alpha stage.  I am releasing at
this early stage it to gauge interest and feedback as to which API
features should be considered priority.

It is working, though very little error checking (read: none) is done
at present.  I will be updating this aggressively.

?IBrokers

R API to the Interactive Brokers Trader Workstation (TWS).

Description:

     A very limited R implementation of the TWS API.  At present it is
     only able to access historic data from the Interactive Brokers
     servers. Future additions will include more API access and
     possible real-time charting via the 'quantmod' package.

     A word of warning.  I wrote this in 3 days.  Much of the current
     event loop is being rewritten/rethought to better handle errors, add
     some sort of callback mechanism, as well as
     speed up large data requests.  This version is mostly a
     proof-of-concept and will be updated regularly.  That said, please
     report any and all bugs/experiences to the maintainer so they can
     be incorporated into development versions.

     **DO NOT USE in an R session that you can't afford to lose!**

Details:


       Package:  IBrokers
       Type:     Package
       Version:  0.0-1
       Date:     2008-02-21
       License:  GPL-3

     The current API methods supported are:

     reqCurrentTime: The TWS server time in seconds since the epoch
     reqHistoricalData: Fetch historical data

Author(s):

     Jeffrey A. Ryan

     Maintainer: Jeffrey A. Ryan <jeff.a.ryan at gmail.com>

References:

     Interactive Brokers: <URL: www.interactivebrokers.com>
2 days later
#
Jeff,

Many thanks for putting together this package.  It should be very useful.

I am having trouble using it.  I know it's 0.0-1, but I would like to
start using it.  I have R 2.6.2, latest IB Workstation and latest API
9.40.  I use WinXP.
Loading required package: IBrokers
Loading required package: xts
Loading required package: zoo
IBrokers version 0.0-1: (pre-alpha)
See ?IBrokers for details
Error in readChar(s, 1) : negative length vectors are not allowed
An IB window pops up and asks me if I want to accept incoming connection.
I press yes (but the error in the R GUI is already there).

If I try to understand where the error comes from:
description              class               mode
text             opened
"->localhost:7496"           "socket"               "a+"
"text"           "opened"
          can read          can write
             "yes"              "yes"
Another IB window pops up informing me that "The Socket client is out of
date and needs to be upgraded." And R GUI hangs up using 99% CPU.

Any suggestions are much appreciated.

In terms of the package wishlist, it would be nice to have access to the
Trades window and the Account window.

Adrian Dragulescu

I tried doing hooking R to IB using their Java API and got something
very rudimentary going on, but my Java wasn't that good to figure out how
to handle the multithreading features.
On Fri, 22 Feb 2008, Jeff Ryan wrote:

            
#
Hi Adrian,

I probably should have made it version 0.0-0001 :)

I didn't mention in the docs - but you need to have the TWS
configured as you would for any client:

Configure => Api => All Api settings:

1) Add 127.0.0.1 to 'Trusted IP addresses'
2) Make sure that Enable ActiveX and Socket Clients is checked.

I think since the error checking is currently non-existent, something
must be get messed up
in the delay.

The first thing to the TWS in the connection is '37', which I think is
the client version # as far as the TWS is concerned.  I am very new to
this whole socket programming thing, so your patience is much
appreciated.

see twsConnect

I am running under Mac OSX at the moment, though I also have a Solaris
box.  No windows ones unfortunately to test yet.  One of these days
I'll have to break down and buy one :)

Trades and Account are probably quite easy to add.  I wrote it mostly
to fetch historical data, along the lines of RBloomberg, less the 20k
subscription fee :)

Mutlithreading is probably not even possible, at least not in the
traditional sense, from what I can tell of R's socket mechanisms.

I think the roadmap will be:

get it mostly bug free for data requests - those being
reqHistoricalData, reqMktData, and maybe a way to grab RT bars for a
set period.  Then add basic non-data methods.  From there _maybe_ look
into orders/etc.  But I seriously doubt the current native R code
implementation could handle that well.  I will probably look into a
C/C++ interface to get that done.

Anyway give a try per the above suggestions:  I just ran this myself:
Loading required package: xts
Loading required package: zoo
IBrokers version 0.0-1: (pre-alpha)
See ?IBrokers for details
[1] 1203885994
Open   High    Low  Close Volume    WAP hasGaps Count
2008-01-24 06:00:00 122.90 123.92 122.26 123.45 193868 123.07       0 48447
2008-01-25 06:00:00 124.63 124.71 121.72 122.19 194009 123.15       0 43732
2008-01-28 06:00:00 122.02 123.82 121.00 123.59 162384 122.36       0 37939
2008-01-29 06:00:00 124.21 124.90 123.34 124.56 146030 124.28       0 33402
2008-01-30 06:00:00 124.21 126.68 123.46 123.79 208275 125.05       0 44105
2008-01-31 06:00:00 122.68 126.90 122.41 126.10 212845 124.80       0 47008

        
On Sun, Feb 24, 2008 at 2:22 PM, Adrian Dragulescu <adrian_d at eskimo.com> wrote: