Sha256: 00eb2357606e3ce97422bbc65d52694e4bde83c542f9e68e40cee513568247d6

Contents?: true

Size: 1.75 KB

Versions: 10

Compression:

Stored size: 1.75 KB

Contents

#!/usr/bin/env ruby
#
# This script subscribes to market data for a list of Options

require 'rubygems'
require 'bundler/setup'
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
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 = {13 => IB::Symbols::Options[:wfc20],
           15 => IB::Symbols::Options[:z50],
           17 => IB::Symbols::Options[:spy75],
           19 => IB::Symbols::Options[:spy100]}

# First, connect to IB TWS. Arbitrary :client_id is used to identify your script
ib = IB::Connection.new :client_id => 1112 #, :port => 7496 # TWS

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

# Subscribe to Ticker... events.  The code passed in the block will be executed when
# any message of that type is received, with the received message as its argument.
# In this case, we just print out the tick.
#
# (N.B. The description field is not from IB TWS. It is defined
#  locally in forex.rb, and is just arbitrary text.)
ib.subscribe(:TickPrice, :TickSize, :TickOption, :TickString) do |msg|
  puts @market[msg.ticker_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, :ticker_id => id, :contract => contract
end

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

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

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
ib-ruby-0.8.4 bin/option_data
ib-ruby-0.8.3 bin/option_data
ib-ruby-0.8.1 bin/option_data
ib-ruby-0.8.0 bin/option_data
ib-ruby-0.7.12 bin/option_data
ib-ruby-0.7.11 bin/option_data
ib-ruby-0.7.10 bin/option_data
ib-ruby-0.7.9 bin/option_data
ib-ruby-0.7.8 bin/option_data
ib-ruby-0.7.6 bin/option_data