ib-ruby 0.5.13 → 0.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY +4 -0
- data/VERSION +1 -1
- data/bin/global_cancel +0 -0
- data/bin/historic_data +4 -8
- data/bin/list_orders +0 -0
- data/bin/place_order +0 -0
- data/lib/ib-ruby/connection.rb +1 -1
- data/lib/ib-ruby/constants.rb +16 -2
- data/lib/ib-ruby/logger.rb +11 -6
- data/lib/ib-ruby/messages/incoming.rb +2 -2
- data/lib/ib-ruby/messages/outgoing.rb +13 -2
- data/lib/ib-ruby/models/order.rb +66 -6
- metadata +119 -109
data/HISTORY
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.14
|
data/bin/global_cancel
CHANGED
File without changes
|
data/bin/historic_data
CHANGED
@@ -10,9 +10,6 @@ require 'rubygems'
|
|
10
10
|
require 'bundler/setup'
|
11
11
|
require 'ib-ruby'
|
12
12
|
|
13
|
-
### Configurable Options
|
14
|
-
QUIET = false # if Quiet == false, status data will be printed to STDERR
|
15
|
-
|
16
13
|
# Definition of what we want data for. We have to keep track of what ticker id
|
17
14
|
# corresponds to what symbol ourselves, because the ticks don't include any other
|
18
15
|
# identifying information. The choice of ticker ids is, as far as I can tell, arbitrary.
|
@@ -34,14 +31,13 @@ ib.subscribe(:Alert) { |msg| puts msg.to_human }
|
|
34
31
|
# Note that we have to look the ticker id of each incoming message
|
35
32
|
# up in local memory to figure out what it's for.
|
36
33
|
ib.subscribe(IB::Messages::Incoming::HistoricalData) do |msg|
|
37
|
-
|
38
|
-
msg.data[:count].to_s + " items:"
|
34
|
+
puts @market[msg.data[:id]].description + ": " +
|
35
|
+
msg.data[:count].to_s + " items:"
|
39
36
|
|
40
37
|
msg.data[:results].each do |datum|
|
41
|
-
|
42
|
-
|
43
|
-
STDERR.puts " " + datum.to_s unless QUIET
|
38
|
+
puts " " + datum.to_s
|
44
39
|
end
|
40
|
+
@last_msg_time = Time.now.to_i
|
45
41
|
end
|
46
42
|
|
47
43
|
# Now we actually request historical data for the symbols we're interested in. TWS will
|
data/bin/list_orders
CHANGED
File without changes
|
data/bin/place_order
CHANGED
File without changes
|
data/lib/ib-ruby/connection.rb
CHANGED
@@ -129,7 +129,7 @@ module IB
|
|
129
129
|
subscriber_id
|
130
130
|
end
|
131
131
|
|
132
|
-
# Remove all subscribers with specific subscriber id
|
132
|
+
# Remove all subscribers with specific subscriber id (TODO: multiple ids)
|
133
133
|
def unsubscribe(subscriber_id)
|
134
134
|
|
135
135
|
subscribers.each do |message_class, message_subscribers|
|
data/lib/ib-ruby/constants.rb
CHANGED
@@ -14,7 +14,21 @@ module IB
|
|
14
14
|
'15 mins', '30 mins', '1 hour', '1 day']
|
15
15
|
|
16
16
|
# Enumeration of data types
|
17
|
-
DATA_TYPES = [:trades,
|
17
|
+
DATA_TYPES = [:trades,
|
18
|
+
:midpoint,
|
19
|
+
:bid,
|
20
|
+
:ask
|
21
|
+
#Determines the nature of data being extracted. Valid values:
|
22
|
+
# � TRADES
|
23
|
+
#� MIDPOINT
|
24
|
+
#� BID
|
25
|
+
#� ASK
|
26
|
+
#� BID_ASK
|
27
|
+
#� HISTORICAL_VOLATILITY
|
28
|
+
#� OPTION_IMPLIED_VOLATILITY
|
29
|
+
#� OPTION_VOLUME
|
30
|
+
#� OPTION_OPEN_INTEREST
|
31
|
+
]
|
18
32
|
|
19
33
|
# Valid security types (sec_type attribute of IB::Contract)
|
20
34
|
SECURITY_TYPES = {:stock => "STK",
|
@@ -79,7 +93,7 @@ module IB
|
|
79
93
|
48 => :rt_volume, # tickGeneric()
|
80
94
|
49 => :halted, # see Note 2 below.
|
81
95
|
50 => :bid_yield, # tickPrice() See Note 3 below
|
82
|
-
51 => :
|
96
|
+
51 => :ask_yield, # tickPrice() See Note 3 below
|
83
97
|
52 => :last_yield, # tickPrice() See Note 3 below
|
84
98
|
53 => :cust_option_computation, # tickOptionComputation()
|
85
99
|
54 => :trade_count, # tickGeneric()
|
data/lib/ib-ruby/logger.rb
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
require "logger"
|
2
2
|
|
3
|
-
#
|
4
|
-
def log
|
5
|
-
@@
|
6
|
-
|
7
|
-
"#{time.strftime('%
|
3
|
+
# Add universally accessible log method/accessor into Object
|
4
|
+
def log *args
|
5
|
+
@@logger ||= Logger.new(STDOUT).tap do |logger|
|
6
|
+
logger.formatter = proc do |level, time, prog, msg|
|
7
|
+
"#{time.strftime('%H:%M:%S.%3N')} #{msg}\n"
|
8
8
|
end
|
9
|
-
|
9
|
+
logger.level = Logger::INFO
|
10
|
+
end
|
11
|
+
|
12
|
+
@@logger.tap do |logger|
|
13
|
+
logger.fatal *args unless args.empty?
|
10
14
|
end
|
11
15
|
end
|
12
16
|
|
@@ -20,3 +24,4 @@ end
|
|
20
24
|
|
21
25
|
|
22
26
|
|
27
|
+
|
@@ -551,8 +551,8 @@ module IB
|
|
551
551
|
[:market_price, :decimal],
|
552
552
|
[:market_value, :decimal],
|
553
553
|
[:average_cost, :decimal],
|
554
|
-
[:unrealized_pnl, :decimal],
|
555
|
-
[:realized_pnl, :decimal],
|
554
|
+
[:unrealized_pnl, :decimal], # TODO: Check for Double.MAX_VALUE
|
555
|
+
[:realized_pnl, :decimal], # TODO: Check for Double.MAX_VALUE
|
556
556
|
[:account_name, :string]
|
557
557
|
end
|
558
558
|
|
@@ -209,7 +209,7 @@ module IB
|
|
209
209
|
|
210
210
|
# @data={:id => int: ticker_id - Must be a unique value. When the market data
|
211
211
|
# returns, it will be identified by this tag,
|
212
|
-
# :contract =>
|
212
|
+
# :contract => Models::Contract, requested contract.
|
213
213
|
# :tick_list => String: comma delimited list of requested tick groups:
|
214
214
|
# Group ID - Description - Requested Tick Types
|
215
215
|
# 100 - Option Volume (currently for stocks) - 29, 30
|
@@ -277,7 +277,18 @@ module IB
|
|
277
277
|
# '30 min'
|
278
278
|
# '1 hour'
|
279
279
|
# '1 day'
|
280
|
-
# :what_to_show => Symbol:
|
280
|
+
# :what_to_show => Symbol:
|
281
|
+
# Determines the nature of data being extracted. Valid values:
|
282
|
+
#one of :trades, :midpoint, :bid, or :ask -
|
283
|
+
# � TRADES
|
284
|
+
#� MIDPOINT
|
285
|
+
#� BID
|
286
|
+
#� ASK
|
287
|
+
#� BID_ASK
|
288
|
+
#� HISTORICAL_VOLATILITY
|
289
|
+
#� OPTION_IMPLIED_VOLATILITY
|
290
|
+
#� OPTION_VOLUME
|
291
|
+
#� OPTION_OPEN_INTEREST
|
281
292
|
# converts to "TRADES," "MIDPOINT," "BID," or "ASK."
|
282
293
|
# :use_rth => int: 0 - all data available during the time span requested
|
283
294
|
# is returned, even data bars covering time intervals where the
|
data/lib/ib-ruby/models/order.rb
CHANGED
@@ -50,22 +50,67 @@ module IB
|
|
50
50
|
:client_id, # int: The id of the client that placed this order.
|
51
51
|
:perm_id, # int: TWS id used to identify orders, remains
|
52
52
|
# the same over TWS sessions.
|
53
|
-
:action, #
|
53
|
+
:action, # String: Identifies the side: BUY/SELL/SSHORT
|
54
54
|
:total_quantity, # int: The order quantity.
|
55
|
+
|
55
56
|
:order_type, # String: Identifies the order type. Valid values are:
|
56
|
-
#
|
57
|
-
#
|
57
|
+
# Limit Risk:
|
58
|
+
# MTL Market-to-Limit
|
59
|
+
# MKT PRT Market with Protection
|
60
|
+
# QUOTE Request for Quote
|
61
|
+
# STP Stop
|
62
|
+
# STP LMT Stop Limit
|
63
|
+
# TRAIL Trailing Stop
|
64
|
+
# TRAIL LIMIT Trailing Stop Limit
|
65
|
+
# TRAIL LIT Trailing Limit if Touched
|
66
|
+
# TRAIL MIT Trailing Market If Touched
|
67
|
+
# Speed of Execution:
|
68
|
+
# MKT Market
|
69
|
+
# MIT Market-if-Touched
|
70
|
+
# MOC Market-on-Close MKTCLSL ?
|
71
|
+
# MOO Market-on-Open
|
72
|
+
# PEG MKT Pegged-to-Market
|
73
|
+
# REL Relative
|
74
|
+
# Price Improvement:
|
75
|
+
# BOX TOP Box Top
|
76
|
+
# LOC Limit-on-Close LMTCLS ?
|
77
|
+
# LOO Limit-on-Open
|
78
|
+
# LIT Limit if Touched
|
79
|
+
# PEG MID Pegged-to-Midpoint
|
80
|
+
# VWAP VWAP-Guaranteed
|
81
|
+
# Advanced Trading:
|
82
|
+
# OCA One-Cancels-All
|
83
|
+
# VOL Volatility
|
84
|
+
# SCALE Scale
|
85
|
+
# Other (no abbreviation):
|
86
|
+
# Bracket
|
87
|
+
# At Auction
|
88
|
+
# Discretionary
|
89
|
+
# Sweep-to-Fill
|
90
|
+
# Price Improvement Auction
|
91
|
+
# Block
|
92
|
+
# Hidden
|
93
|
+
# Iceberg/Reserve
|
94
|
+
# All-or-None
|
95
|
+
# Fill-or-Kill
|
96
|
+
|
58
97
|
:limit_price, # double: This is the LIMIT price, used for limit,
|
59
98
|
# stop-limit and relative orders. In all other cases
|
60
99
|
# specify zero. For relative orders with no limit price,
|
61
100
|
# also specify zero.
|
101
|
+
|
62
102
|
:aux_price, # double: This is the STOP price for stop-limit orders,
|
63
103
|
# and the offset amount for relative orders. In all other
|
64
104
|
# cases, specify zero.
|
65
105
|
#:shares_allocation, # deprecated sharesAllocation field
|
66
106
|
|
67
107
|
# Extended order fields
|
68
|
-
:tif, # String: Time
|
108
|
+
:tif, # String: Time to Market:
|
109
|
+
# DAY
|
110
|
+
# GAT Good-after-Time/Date
|
111
|
+
# GTD Good-till-Date/Time
|
112
|
+
# GTC Good-till-Canceled
|
113
|
+
# IOC Immediate-or-Cancel
|
69
114
|
:oca_group, # String: one cancels all group name
|
70
115
|
:oca_type, # int: Tells how to handle remaining orders in an OCA group
|
71
116
|
# when one order or part of an order executes. Valid values:
|
@@ -249,6 +294,21 @@ module IB
|
|
249
294
|
|
250
295
|
:warning_text # String: Displays a warning message if warranted.
|
251
296
|
|
297
|
+
# IB uses weird String with Java Double.MAX_VALUE to indicate no value here
|
298
|
+
def init_margin= val
|
299
|
+
@init_margin = val == "1.7976931348623157E308" ? nil : val
|
300
|
+
end
|
301
|
+
|
302
|
+
# IB uses weird String with Java Double.MAX_VALUE to indicate no value here
|
303
|
+
def maint_margin= val
|
304
|
+
@maint_margin = val == "1.7976931348623157E308" ? nil : val
|
305
|
+
end
|
306
|
+
|
307
|
+
# IB uses weird String with Java Double.MAX_VALUE to indicate no value here
|
308
|
+
def equity_with_loan= val
|
309
|
+
@equity_with_loan = val == "1.7976931348623157E308" ? nil : val
|
310
|
+
end
|
311
|
+
|
252
312
|
def initialize opts = {}
|
253
313
|
# Assign defaults first!
|
254
314
|
@outside_rth = false
|
@@ -377,8 +437,8 @@ module IB
|
|
377
437
|
end
|
378
438
|
|
379
439
|
def to_human
|
380
|
-
"<Order: #{
|
381
|
-
" #{
|
440
|
+
"<Order: #{order_type} #{tif} #{action} #{total_quantity} #{status} #{limit_price}" +
|
441
|
+
" id: #{id}/#{perm_id} from: #{client_id}/#{account}>"
|
382
442
|
end
|
383
443
|
end # class Order
|
384
444
|
end # module Models
|
metadata
CHANGED
@@ -2,116 +2,125 @@
|
|
2
2
|
name: ib-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.5.
|
5
|
+
version: 0.5.14
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
- Paul Legato
|
9
|
-
- arvicco
|
8
|
+
- Paul Legato
|
9
|
+
- arvicco
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2012-01-
|
15
|
-
default_executable:
|
14
|
+
date: 2012-01-28 00:00:00 Z
|
16
15
|
dependencies:
|
17
|
-
- !ruby/object:Gem::Dependency
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: bundler
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 1.0.20
|
25
|
+
type: :runtime
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 2.5.0
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: my_scripts
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id003
|
39
49
|
description: Ruby Implementation of the Interactive Brokers TWS API
|
40
50
|
email:
|
41
|
-
- pjlegato@gmail.com
|
42
|
-
- arvitallian@gmail.com
|
51
|
+
- pjlegato@gmail.com
|
52
|
+
- arvitallian@gmail.com
|
43
53
|
executables:
|
44
|
-
- account_info
|
45
|
-
- contract_details
|
46
|
-
- depth_of_market
|
47
|
-
- global_cancel
|
48
|
-
- historic_data
|
49
|
-
- historic_data_cli
|
50
|
-
- list_orders
|
51
|
-
- market_data
|
52
|
-
- option_data
|
53
|
-
- place_order
|
54
|
-
- template
|
55
|
-
- time_and_sales
|
54
|
+
- account_info
|
55
|
+
- contract_details
|
56
|
+
- depth_of_market
|
57
|
+
- global_cancel
|
58
|
+
- historic_data
|
59
|
+
- historic_data_cli
|
60
|
+
- list_orders
|
61
|
+
- market_data
|
62
|
+
- option_data
|
63
|
+
- place_order
|
64
|
+
- template
|
65
|
+
- time_and_sales
|
56
66
|
extensions: []
|
57
67
|
|
58
68
|
extra_rdoc_files: []
|
59
69
|
|
60
70
|
files:
|
61
|
-
- bin/account_info
|
62
|
-
- bin/contract_details
|
63
|
-
- bin/depth_of_market
|
64
|
-
- bin/global_cancel
|
65
|
-
- bin/historic_data
|
66
|
-
- bin/historic_data_cli
|
67
|
-
- bin/list_orders
|
68
|
-
- bin/market_data
|
69
|
-
- bin/option_data
|
70
|
-
- bin/place_order
|
71
|
-
- bin/template
|
72
|
-
- bin/time_and_sales
|
73
|
-
- lib/ib-ruby
|
74
|
-
- lib/ib-ruby/
|
75
|
-
- lib/ib-ruby/
|
76
|
-
- lib/ib-ruby/
|
77
|
-
- lib/ib-ruby/messages
|
78
|
-
- lib/ib-ruby/
|
79
|
-
- lib/ib-ruby/
|
80
|
-
- lib/ib-ruby/
|
81
|
-
- lib/ib-ruby/
|
82
|
-
- lib/ib-ruby/
|
83
|
-
- lib/ib-ruby/
|
84
|
-
- lib/ib-ruby/models/
|
85
|
-
- lib/ib-ruby/models/
|
86
|
-
- lib/ib-ruby/models/
|
87
|
-
- lib/ib-ruby/models.rb
|
88
|
-
- lib/ib-ruby/
|
89
|
-
- lib/ib-ruby/
|
90
|
-
- lib/ib-ruby/
|
91
|
-
- lib/ib-ruby/
|
92
|
-
- lib/ib-ruby/symbols/
|
93
|
-
- lib/ib-ruby/symbols.rb
|
94
|
-
- lib/ib-ruby/
|
95
|
-
- lib/ib-ruby.rb
|
96
|
-
- spec/ib-
|
97
|
-
- spec/
|
98
|
-
- spec/ib-ruby/
|
99
|
-
- spec/ib-ruby/models/
|
100
|
-
- spec/ib-
|
101
|
-
- spec/
|
102
|
-
- tasks/common.rake
|
103
|
-
- tasks/doc.rake
|
104
|
-
- tasks/gem.rake
|
105
|
-
- tasks/git.rake
|
106
|
-
- tasks/spec.rake
|
107
|
-
- tasks/version.rake
|
108
|
-
- Rakefile
|
109
|
-
- README.md
|
110
|
-
- LICENSE
|
111
|
-
- VERSION
|
112
|
-
- HISTORY
|
113
|
-
- .gitignore
|
114
|
-
has_rdoc: true
|
71
|
+
- bin/account_info
|
72
|
+
- bin/contract_details
|
73
|
+
- bin/depth_of_market
|
74
|
+
- bin/global_cancel
|
75
|
+
- bin/historic_data
|
76
|
+
- bin/historic_data_cli
|
77
|
+
- bin/list_orders
|
78
|
+
- bin/market_data
|
79
|
+
- bin/option_data
|
80
|
+
- bin/place_order
|
81
|
+
- bin/template
|
82
|
+
- bin/time_and_sales
|
83
|
+
- lib/ib-ruby.rb
|
84
|
+
- lib/ib-ruby/connection.rb
|
85
|
+
- lib/ib-ruby/constants.rb
|
86
|
+
- lib/ib-ruby/logger.rb
|
87
|
+
- lib/ib-ruby/messages.rb
|
88
|
+
- lib/ib-ruby/models.rb
|
89
|
+
- lib/ib-ruby/socket.rb
|
90
|
+
- lib/ib-ruby/symbols.rb
|
91
|
+
- lib/ib-ruby/version.rb
|
92
|
+
- lib/ib-ruby/messages/incoming.rb
|
93
|
+
- lib/ib-ruby/messages/outgoing.rb
|
94
|
+
- lib/ib-ruby/models/bar.rb
|
95
|
+
- lib/ib-ruby/models/combo_leg.rb
|
96
|
+
- lib/ib-ruby/models/contract.rb
|
97
|
+
- lib/ib-ruby/models/execution.rb
|
98
|
+
- lib/ib-ruby/models/model.rb
|
99
|
+
- lib/ib-ruby/models/order.rb
|
100
|
+
- lib/ib-ruby/models/contract/bag.rb
|
101
|
+
- lib/ib-ruby/models/contract/option.rb
|
102
|
+
- lib/ib-ruby/symbols/forex.rb
|
103
|
+
- lib/ib-ruby/symbols/futures.rb
|
104
|
+
- lib/ib-ruby/symbols/options.rb
|
105
|
+
- lib/ib-ruby/symbols/stocks.rb
|
106
|
+
- spec/ib-ruby_spec.rb
|
107
|
+
- spec/spec_helper.rb
|
108
|
+
- spec/ib-ruby/connection_spec.rb
|
109
|
+
- spec/ib-ruby/models/combo_leg_spec.rb
|
110
|
+
- spec/ib-ruby/models/contract_spec.rb
|
111
|
+
- spec/ib-ruby/models/order_spec.rb
|
112
|
+
- tasks/common.rake
|
113
|
+
- tasks/doc.rake
|
114
|
+
- tasks/gem.rake
|
115
|
+
- tasks/git.rake
|
116
|
+
- tasks/spec.rake
|
117
|
+
- tasks/version.rake
|
118
|
+
- Rakefile
|
119
|
+
- README.md
|
120
|
+
- LICENSE
|
121
|
+
- VERSION
|
122
|
+
- HISTORY
|
123
|
+
- .gitignore
|
115
124
|
homepage: https://github.com/pjlegato/ib-ruby
|
116
125
|
licenses: []
|
117
126
|
|
@@ -119,30 +128,31 @@ post_install_message:
|
|
119
128
|
rdoc_options: []
|
120
129
|
|
121
130
|
require_paths:
|
122
|
-
- lib
|
131
|
+
- lib
|
123
132
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
133
|
none: false
|
125
134
|
requirements:
|
126
|
-
|
127
|
-
|
128
|
-
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: "0"
|
129
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
139
|
none: false
|
131
140
|
requirements:
|
132
|
-
|
133
|
-
|
134
|
-
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: "0"
|
135
144
|
requirements: []
|
136
145
|
|
137
146
|
rubyforge_project:
|
138
|
-
rubygems_version: 1.
|
147
|
+
rubygems_version: 1.8.15
|
139
148
|
signing_key:
|
140
149
|
specification_version: 3
|
141
150
|
summary: Ruby Implementation of the Interactive Brokers TWS API
|
142
151
|
test_files:
|
143
|
-
- spec/ib-
|
144
|
-
- spec/
|
145
|
-
- spec/ib-ruby/
|
146
|
-
- spec/ib-ruby/models/
|
147
|
-
- spec/ib-
|
148
|
-
- spec/
|
152
|
+
- spec/ib-ruby_spec.rb
|
153
|
+
- spec/spec_helper.rb
|
154
|
+
- spec/ib-ruby/connection_spec.rb
|
155
|
+
- spec/ib-ruby/models/combo_leg_spec.rb
|
156
|
+
- spec/ib-ruby/models/contract_spec.rb
|
157
|
+
- spec/ib-ruby/models/order_spec.rb
|
158
|
+
has_rdoc:
|