Sha256: dde4990b7df11347f04c0353549b963ea62f0ac9f0f5862ca92c8c04206f30d9

Contents?: true

Size: 1.68 KB

Versions: 8

Compression:

Stored size: 1.68 KB

Contents

#!/usr/bin/env ruby
#
# This script connects to IB API and subscribes to market data for specific symbols

require 'pathname'
LIB_DIR = (Pathname.new(__FILE__).dirname + '../lib/').realpath.to_s
$LOAD_PATH.unshift LIB_DIR unless $LOAD_PATH.include?(LIB_DIR)

require 'rubygems'
require 'bundler/setup'
require 'ib-ruby'

# Definition of what we want market data for.  We have to keep track of what ticker id
# corresponds to what symbol ourselves, because the ticks don't include any other
# identifying information. The choice of ticker ids is, as far as I can tell, arbitrary.
@market = {123 => IB::Symbols::Forex[:gbpusd],
           456 => IB::Symbols::Forex[:eurusd],
           789 => IB::Symbols::Forex[:usdcad]}

# First, connect to IB TWS.
ib = IB::Connection.new

## Subscribe to TWS alerts/errors
ib.subscribe(:Alert) { |msg| puts msg.to_human }

# Subscribe to TickerPrice and TickerSize events.  The code passed in the block will
# be executed when a message of that type is received, with the received message as its
# argument. In this case, we just print out the tick. NB: The description field is not
# from IB TWS. It is defined locally in forex.rb, and is just arbitrary text.
ib.subscribe(:TickPrice, :TickSize) do |msg|
  puts @market[msg.data[:id]].description + ": " + msg.to_human
end

# Now we actually request market data for the symbols we're interested in.
@market.each_pair do |id, contract|
  ib.send_message :RequestMarketData, :id => id, :contract => contract
end

puts "\nSubscribed to market data"
puts "\n******** Press <Enter> to cancel... *********\n\n"
gets
puts "Cancelling market data subscription.."

@market.each_pair { |id, _| ib.send_message :CancelMarketData, :id => id }

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ib-ruby-0.5.14 bin/market_data
ib-ruby-0.5.13 bin/market_data
ib-ruby-0.5.12 bin/market_data
ib-ruby-0.5.11 bin/market_data
ib-ruby-0.5.10 bin/market_data
ib-ruby-0.5.9 bin/market_data
ib-ruby-0.5.7 bin/market_data
ib-ruby-0.5.2 bin/market_data