ib-ruby 0.9.1 → 0.9.2

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/.gitignore CHANGED
@@ -39,3 +39,5 @@ tmp
39
39
 
40
40
  # 'scratch' files
41
41
  test_code.rb
42
+ test_historic_data.rb
43
+
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Ruby Implementation of the Interactive Brokers Trader Workstation (TWS) API v.965-967.
4
4
 
5
- Copyright (C) 2006-2012 Paul Legato, Wes Devauld, and Ar Vicco.
5
+ Copyright (C) 2006-2013 Paul Legato, Wes Devauld, and Ar Vicco.
6
6
 
7
7
  https://github.com/ib-ruby/ib-ruby
8
8
 
@@ -212,7 +212,7 @@ If you want to contribute to ib-ruby development:
212
212
  8. Push to the branch (git push origin my-new-feature)
213
213
  9. Go to your Github fork and create new Pull Request via Github GUI
214
214
 
215
- ... then proceed from step 6 for more code modifications...
215
+ ... then proceed from step 5 for more code modifications...
216
216
 
217
217
  ## LICENSE:
218
218
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.1
1
+ 0.9.2
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
- # This script converts given migration file into a Rails scaffold command
3
+ # This dev helper script converts any migration file into a Rails scaffold command
4
4
 
5
5
  output = STDOUT
6
6
  ARGV.each do |file_name|
@@ -19,7 +19,7 @@ ARGV.each do |file_name|
19
19
  field, type = Regexp.last_match(2), Regexp.last_match(1)
20
20
  if type == 'references'
21
21
  field, type = field + '_id', 'integer'
22
- end
22
+ end
23
23
  output.print "#{field}:#{type} "
24
24
  end
25
25
  end
@@ -25,7 +25,7 @@ module IB
25
25
  end
26
26
  end
27
27
 
28
- # Create new Flex query with options:
28
+ # Create new Flex query with options:
29
29
  # :token => 1111111111111111111111111111111111 # CHANGE to your actual token!
30
30
  # :query_id => 11111 # CHANGE to actual query id!
31
31
  # :format => :xml (default) / :csv
@@ -55,7 +55,7 @@ module IB
55
55
  :text_ok => @format != :xml)
56
56
 
57
57
  # If Status is specified, returned xml contains only error message, not actual report
58
- if report.is_a?(Hash) && report['Status'] == 'Fail'
58
+ if report.is_a?(Hash) && report['Status'] =~ /Fail|Warn/
59
59
  error_code = report['ErrorCode'].to_i
60
60
  error_message = "#{error_code}: #{report['ErrorMessage']}"
61
61
 
@@ -7,7 +7,7 @@ module IB
7
7
  # :time - The date-time stamp of the start of the bar. The format is offset in
8
8
  # seconds from the beginning of 1970, same format as the UNIX epoch time
9
9
  # :bar - received RT Bar
10
- RealTimeBar = def_message 50,
10
+ RealTimeBar = def_message [50, 3],
11
11
  [:request_id, :int],
12
12
  [:bar, :time, :int],
13
13
  [:bar, :open, :decimal],
@@ -23,7 +23,7 @@ module IB
23
23
  end
24
24
 
25
25
  def to_human
26
- "<RealTimeBar: #{request_id} #{time}, #{bar}>"
26
+ "<RealTimeBar: #{request_id} #{bar}>"
27
27
  end
28
28
  end # RealTimeBar
29
29
 
@@ -14,16 +14,28 @@ module IB
14
14
  ## Empty messages (no data)
15
15
 
16
16
  # Request the open orders that were placed from THIS client. Each open order
17
- # will be fed back through the OpenOrder and OrderStatus messages.
17
+ # will be fed back through the OpenOrder and OrderStatus messages ONCE.
18
18
  # NB: Client with a client_id of 0 will also receive the TWS-owned open orders.
19
19
  # These orders will be associated with the client and a new orderId will be
20
20
  # generated. This association will persist over multiple API and TWS sessions.
21
21
  RequestOpenOrders = def_message 5
22
22
 
23
23
  # Request the open orders placed from all clients and also from TWS. Each open
24
- # order will be fed back through the OpenOrder and OrderStatus messages.
24
+ # order will be fed back through the OpenOrder and OrderStatus messages ONCE.
25
+ # Note this does not re-bind those Orders to requesting Client!
26
+ # Use RequestAutoOpenOrders to request such re-binding.
25
27
  RequestAllOpenOrders = def_message 16
26
28
 
29
+ # Request that newly created TWS orders be implicitly associated with this client.
30
+ # When a new TWS order is created, the order will be associated with this client
31
+ # and automatically fed back through the OpenOrder and OrderStatus messages.
32
+ # It is a 'continuous' request such that it gets turned 'on' when called with a
33
+ # TRUE auto_bind parameter. When it's called with FALSE auto_bind, new TWS orders
34
+ # will not bind to this client going forward. Note that TWS orders can only be
35
+ # bound to clients with a client_id of 0. TODO: how to properly test this?
36
+ # data = { :auto_bind => boolean }
37
+ RequestAutoOpenOrders = def_message 15, :auto_bind
38
+
27
39
  # Requests an XML document that describes the valid parameters that a scanner
28
40
  # subscription can have (for outgoing RequestScannerSubscription message).
29
41
  RequestScannerParameters = def_message 24
@@ -48,8 +60,6 @@ module IB
48
60
  ## Data format is: @data ={ :id => local_id of order to cancel }
49
61
  CancelOrder = def_message 4
50
62
 
51
- ## These messages contain just one or two extra fields:
52
-
53
63
  # Request the next valid ID that can be used when placing an order. Responds with
54
64
  # NextValidId message, and the id returned is that next valid Id for orders.
55
65
  # That ID will reflect any autobinding that has occurred (which generates new
@@ -60,8 +70,6 @@ module IB
60
70
  RequestNewsBulletins = def_message 12, :all_messages
61
71
  # data = { :log_level => int }
62
72
  SetServerLoglevel = def_message 14, :log_level
63
- # data = { :auto_bind => boolean }
64
- RequestAutoOpenOrders = def_message 15, :auto_bind
65
73
  # data = { :fa_data_type => int }
66
74
  RequestFA = def_message 18, :fa_data_type
67
75
  # data = { :fa_data_type => int, :xml => String }
@@ -75,7 +83,7 @@ module IB
75
83
  :account_code)
76
84
 
77
85
  # data => { :id => request_id (int), :contract => Contract }
78
- #
86
+ #
79
87
  # Special case for options: "wildcards" in the Contract fields retrieve Option chains
80
88
  # strike = 0 means all strikes
81
89
  # right = "" meanns both call and put
@@ -13,16 +13,16 @@ module IB
13
13
  error ":data_type must be one of #{DATA_TYPES.inspect}", :args
14
14
  end
15
15
 
16
- size = data[:bar_size] || data[:size]
17
- bar_size = BAR_SIZES.invert[size] || size
18
- unless BAR_SIZES.keys.include?(bar_size)
19
- error ":bar_size must be one of #{BAR_SIZES.inspect}", :args
20
- end
16
+ #size = data[:bar_size] || data[:size]
17
+ #bar_size = BAR_SIZES.invert[size] || size
18
+ # unless BAR_SIZES.keys.include?(bar_size)
19
+ # error ":bar_size must be one of #{BAR_SIZES.inspect}", :args
20
+ # end
21
21
 
22
22
  contract = data[:contract].is_a?(IB::Contract) ?
23
23
  data[:contract] : IB::Contract.from_ib_ruby(data[:contract])
24
24
 
25
- [data_type, bar_size, contract]
25
+ [data_type, nil, contract]
26
26
  end
27
27
  end
28
28
 
@@ -44,6 +44,14 @@ module IB
44
44
  RequestRealTimeBars = def_message 50, BarRequestMessage
45
45
 
46
46
  class RequestRealTimeBars
47
+ def parse data
48
+ data_type, bar_size, contract = super data
49
+
50
+ size = data[:bar_size] || data[:size]
51
+ bar_size = size.to_i
52
+ [data_type, bar_size, contract]
53
+ end
54
+
47
55
  def encode
48
56
  data_type, bar_size, contract = parse @data
49
57
 
@@ -150,6 +158,17 @@ module IB
150
158
  RequestHistoricalData = def_message [20, 4], BarRequestMessage
151
159
 
152
160
  class RequestHistoricalData
161
+ def parse data
162
+ data_type, bar_size, contract = super data
163
+
164
+ size = data[:bar_size] || data[:size]
165
+ bar_size = BAR_SIZES.invert[size] || size
166
+ unless BAR_SIZES.keys.include?(bar_size)
167
+ error ":bar_size must be one of #{BAR_SIZES.inspect}", :args
168
+ end
169
+ [data_type, bar_size, contract]
170
+ end
171
+
153
172
  def encode
154
173
  data_type, bar_size, contract = parse @data
155
174
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: ib-ruby
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.9.1
5
+ version: 0.9.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Paul Legato
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-15 00:00:00.000000000 Z
13
+ date: 2013-02-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler