ib-api 972.0

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.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +50 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +16 -0
  7. data/Gemfile.lock +105 -0
  8. data/Guardfile +24 -0
  9. data/LICENSE +674 -0
  10. data/README.md +65 -0
  11. data/Rakefile +11 -0
  12. data/VERSION +1 -0
  13. data/api.gemspec +43 -0
  14. data/bin/console +95 -0
  15. data/bin/console.yml +3 -0
  16. data/bin/setup +8 -0
  17. data/changelog.md +7 -0
  18. data/example/README.md +76 -0
  19. data/example/account_info +54 -0
  20. data/example/account_positions +30 -0
  21. data/example/account_summary +88 -0
  22. data/example/cancel_orders +74 -0
  23. data/example/fa_accounts +25 -0
  24. data/example/fundamental_data +40 -0
  25. data/example/historic_data_cli +186 -0
  26. data/example/list_orders +45 -0
  27. data/example/portfolio_csv +81 -0
  28. data/example/scanner_data +62 -0
  29. data/example/template +19 -0
  30. data/example/tick_data +28 -0
  31. data/lib/extensions/class-extensions.rb +87 -0
  32. data/lib/ib-api.rb +7 -0
  33. data/lib/ib/base.rb +103 -0
  34. data/lib/ib/base_properties.rb +160 -0
  35. data/lib/ib/connection.rb +450 -0
  36. data/lib/ib/constants.rb +393 -0
  37. data/lib/ib/errors.rb +44 -0
  38. data/lib/ib/logger.rb +26 -0
  39. data/lib/ib/messages.rb +99 -0
  40. data/lib/ib/messages/abstract_message.rb +101 -0
  41. data/lib/ib/messages/incoming.rb +251 -0
  42. data/lib/ib/messages/incoming/abstract_message.rb +116 -0
  43. data/lib/ib/messages/incoming/account_value.rb +78 -0
  44. data/lib/ib/messages/incoming/alert.rb +34 -0
  45. data/lib/ib/messages/incoming/contract_data.rb +102 -0
  46. data/lib/ib/messages/incoming/delta_neutral_validation.rb +23 -0
  47. data/lib/ib/messages/incoming/execution_data.rb +50 -0
  48. data/lib/ib/messages/incoming/historical_data.rb +84 -0
  49. data/lib/ib/messages/incoming/market_depths.rb +44 -0
  50. data/lib/ib/messages/incoming/next_valid_id.rb +18 -0
  51. data/lib/ib/messages/incoming/open_order.rb +277 -0
  52. data/lib/ib/messages/incoming/order_status.rb +85 -0
  53. data/lib/ib/messages/incoming/portfolio_value.rb +78 -0
  54. data/lib/ib/messages/incoming/real_time_bar.rb +32 -0
  55. data/lib/ib/messages/incoming/scanner_data.rb +54 -0
  56. data/lib/ib/messages/incoming/ticks.rb +268 -0
  57. data/lib/ib/messages/outgoing.rb +437 -0
  58. data/lib/ib/messages/outgoing/abstract_message.rb +88 -0
  59. data/lib/ib/messages/outgoing/account_requests.rb +112 -0
  60. data/lib/ib/messages/outgoing/bar_requests.rb +250 -0
  61. data/lib/ib/messages/outgoing/place_order.rb +209 -0
  62. data/lib/ib/messages/outgoing/request_marketdata.rb +99 -0
  63. data/lib/ib/messages/outgoing/request_tick_data.rb +21 -0
  64. data/lib/ib/model.rb +4 -0
  65. data/lib/ib/models.rb +14 -0
  66. data/lib/ib/server_versions.rb +114 -0
  67. data/lib/ib/socket.rb +185 -0
  68. data/lib/ib/support.rb +160 -0
  69. data/lib/ib/version.rb +6 -0
  70. data/lib/models/ib/account.rb +85 -0
  71. data/lib/models/ib/account_value.rb +33 -0
  72. data/lib/models/ib/bag.rb +55 -0
  73. data/lib/models/ib/bar.rb +31 -0
  74. data/lib/models/ib/combo_leg.rb +105 -0
  75. data/lib/models/ib/condition.rb +245 -0
  76. data/lib/models/ib/contract.rb +415 -0
  77. data/lib/models/ib/contract_detail.rb +108 -0
  78. data/lib/models/ib/execution.rb +67 -0
  79. data/lib/models/ib/forex.rb +13 -0
  80. data/lib/models/ib/future.rb +15 -0
  81. data/lib/models/ib/index.rb +15 -0
  82. data/lib/models/ib/option.rb +78 -0
  83. data/lib/models/ib/option_detail.rb +55 -0
  84. data/lib/models/ib/order.rb +519 -0
  85. data/lib/models/ib/order_state.rb +152 -0
  86. data/lib/models/ib/portfolio_value.rb +64 -0
  87. data/lib/models/ib/stock.rb +16 -0
  88. data/lib/models/ib/underlying.rb +34 -0
  89. data/lib/models/ib/vertical.rb +96 -0
  90. data/lib/requires.rb +12 -0
  91. metadata +203 -0
@@ -0,0 +1,209 @@
1
+ module IB
2
+ module Messages
3
+ module Outgoing
4
+
5
+ # Data format is { :id => int: local_id,
6
+ # :contract => Contract,
7
+ # :order => Order }
8
+ PlaceOrder = def_message [3, 45] ## ServerVersion > 145: def_message[ 0,45 ]
9
+ ## server-version is not known at compilation time
10
+ ## Method call has to be replaced then
11
+ ## Max-Client_ver --> 144!!
12
+
13
+ class PlaceOrder
14
+
15
+ def encode
16
+ # server_version = Connection.current.server_version
17
+ order = @data[:order]
18
+ contract = @data[:contract]
19
+ error "contract has to be specified" unless contract.is_a? IB::Contract
20
+ [super[0..-1],
21
+ # [ [3,45, @data[:local_id] ],
22
+ contract.serialize_short(:primary_exchange, :sec_id_type),
23
+
24
+ # main order fields
25
+ (order.side == :short ? 'SSHORT' : order.side == :short_exempt ? 'SSHORTX' : order.side.to_sup),
26
+ order.total_quantity,
27
+ order[:order_type], # Internal code, 'LMT' instead of :limit
28
+ order.limit_price,
29
+ order.aux_price,
30
+ order[:tif],
31
+ order.oca_group,
32
+ order.account,
33
+ order.open_close.to_sup[0],
34
+ order[:origin], # translates :customer, :firm to 0,1
35
+ order.order_ref,
36
+ order.transmit,
37
+ order.parent_id,
38
+ order.block_order || false,
39
+ order.sweep_to_fill || false,
40
+ order.display_size,
41
+ order[:trigger_method],
42
+ order.outside_rth || false, # was: ignore_rth
43
+ order.hidden || false,
44
+ contract.serialize_legs(:extended),
45
+
46
+
47
+ if contract.bag?
48
+ [
49
+ ## Support for per-leg prices in Order
50
+ [contract.combo_legs.size] + contract.combo_legs.map { |_| nil }, #(&:price) ,
51
+ ## Support for combo routing params in Order
52
+ order.combo_params.empty? ? 0 : [order.combo_params.size] + order.combo_params.to_a
53
+ ]
54
+ else
55
+ []
56
+ end,
57
+
58
+
59
+ "", # deprecated shares_allocation field
60
+ order.discretionary_amount,
61
+ order.good_after_time,
62
+ order.good_till_date,
63
+ [ order.fa_group,
64
+ order.fa_method,
65
+ order.fa_percentage,
66
+ order.fa_profile ] ,
67
+ order.model_code || "",
68
+ order[:short_sale_slot] || 0 , # 0 only for retail, 1 or 2 for institution (Institutional)
69
+ order.designated_location, # only populate when short_sale_slot == 2 (Institutional)
70
+ order.exempt_code,
71
+ order[:oca_type],
72
+ order[:rule_80a], #.to_sup[0..0],
73
+ order.settling_firm,
74
+ order.all_or_none || false,
75
+ order.min_quantity || "",
76
+ order.percent_offset || '',
77
+ order.etrade_only || false,
78
+ order.firm_quote_only || false,
79
+ order.nbbo_price_cap || "",
80
+ order[:auction_strategy],
81
+ order.starting_price,
82
+ order.stock_ref_price || "",
83
+ order.delta || "",
84
+ order.stock_range_lower || "",
85
+ order.stock_range_upper || "",
86
+ order.override_percentage_constraints || false,
87
+ if order.volatility.present?
88
+ [ order.volatility , # Volatility orders
89
+ order[:volatility_type] || 2 ] # default: annual volatility
90
+ else
91
+ ["",""]
92
+ end,
93
+ # Support for delta neutral orders with parameters
94
+ if order.delta_neutral_order_type && order.delta_neutral_order_type != :none
95
+ [order[:delta_neutral_order_type],
96
+ order.delta_neutral_aux_price || "",
97
+ order.delta_neutral_con_id,
98
+ order.delta_neutral_settling_firm,
99
+ order.delta_neutral_clearing_account,
100
+ order[:delta_neutral_clearing_intent],
101
+ order.delta_neutral_open_close,
102
+ order.delta_neutral_short_sale,
103
+ order.delta_neutral_short_sale_slot,
104
+ order.delta_neutral_designated_location ]
105
+ else
106
+ ['', '']
107
+ end,
108
+
109
+ order.continuous_update, # Volatility orders
110
+ order[:reference_price_type] || "", # Volatility orders
111
+
112
+ order.trail_stop_price || "", # TRAIL_STOP_LIMIT stop price
113
+ order.trailing_percent || "", # Support for trailing percent
114
+
115
+ order.scale_init_level_size || "", # Scale Orders
116
+ order.scale_subs_level_size || "", # Scale Orders
117
+ order.scale_price_increment || "", # Scale Orders
118
+
119
+ # Support for extended scale orders parameters
120
+ if order.scale_price_increment && order.scale_price_increment > 0
121
+ [order.scale_price_adjust_value || "",
122
+ order.scale_price_adjust_interval || "",
123
+ order.scale_profit_offset || "",
124
+ order.scale_auto_reset, # default: false,
125
+ order.scale_init_position || "",
126
+ order.scale_init_fill_qty || "",
127
+ order.scale_random_percent # default: false,
128
+ ]
129
+ else
130
+ []
131
+ end,
132
+
133
+ order.scale_table, # v 69
134
+ order.active_start_time || "" , # v 69
135
+ order.active_stop_time || "" , # v 69
136
+
137
+ # Support for hedgeType
138
+ order.hedge_type, # MIN_SERVER_VER_HEDGE_ORDERS
139
+ order.hedge_param || [],
140
+
141
+ order.opt_out_smart_routing, # MIN_SERVER_VER_OPT_OUT_SMART_ROUTING
142
+
143
+ order.clearing_account ,
144
+ order.clearing_intent ,
145
+ order.not_held ,
146
+ contract.serialize_under_comp,
147
+ order.serialize_algo(),
148
+ order.what_if,
149
+ order.serialize_misc_options, # MIN_SERVER_VER_LINKING
150
+ order.solicided , # MIN_SERVER_VER_ORDER_SOLICITED
151
+ order.random_size , # MIN_SERVER_VER_RANDOMIZE_SIZE_AND_PRICE
152
+ order.random_price , # MIN_SERVER_VER_RANDOMIZE_SIZE_AND_PRICE
153
+ ( order[:type] == 'PEG BENCH' ? [ # pegged_to_benchmark v. 102
154
+ order.reference_contract_id,
155
+ order.is_pegged_change_amount_decrease,
156
+ order.pegged_change_amount,
157
+ order.reference_change_amount,
158
+ order.reference_exchange_id ] : [] ),
159
+ order.serialize_conditions , # serialisation of conditions outsourced to model file
160
+ order.adjusted_order_type ,
161
+ order.trigger_price ,
162
+ order.limit_price_offset ,
163
+ order.adjusted_stop_price ,
164
+ order.adjusted_stop_limit_price ,
165
+ order.adjusted_trailing_amount ,
166
+ order.adjustable_trailing_unit ,
167
+ order.ext_operator , # MIN_SERVER_VER_EXT_OPERATOR:
168
+ order.soft_dollar_tier_name,
169
+ order.soft_dollar_tier_value,
170
+ order.soft_dollar_tier_display_name,
171
+ # order.serialize_soft_dollar_tier() , # MIN_SERVER_VER_SOFT_DOLLAR_TIER
172
+ order.cash_qty , # MIN_SERVER_VER_CASH_QTY /111)
173
+ # if server_version >= 138 # :min_server_ver_decision_maker
174
+ [ order.mifid_2_decision_maker, order.mifid_2_decision_algo],
175
+ # end ,
176
+ # if server_version >= 139 # min_server_ver_mifid_execution
177
+ [ order.mifid_2_execution_maker, order.mifid_2_execution_algo ],
178
+ # end,
179
+ # if server_version >= 141 # min_server_ver_auto_price_for_hedge
180
+ order.dont_use_auto_price_for_hedge,
181
+ # end,
182
+ # if server_version >= 145 # min_server_ver_order_container
183
+ order.is_O_ms_container,
184
+ # end,
185
+ # if server_version >= 148 # min_server_ver_d_peg_orders
186
+ order.discretionary_up_to_limit_price
187
+ # end ]
188
+ ]
189
+ #
190
+ #
191
+ #
192
+ # if self.serverVersion() >= MIN_SERVER_VER_AUTO_PRICE_FOR_HEDGE:141
193
+ # flds.append(make_field(order.dontUseAutoPriceForHedge))
194
+ #
195
+ # if self.serverVersion() >= MIN_SERVER_VER_ORDER_CONTAINER:145
196
+ # flds.append(make_field(order.isOmsContainer))
197
+ #
198
+ # if self.serverVersion() >= MIN_SERVER_VER_D_PEG_ORDERS: 148
199
+ # flds.append(make_field(order.discretionaryUpToLimitPrice))
200
+ #
201
+ #
202
+
203
+ end
204
+ end # PlaceOrder
205
+
206
+
207
+ end # module Outgoing
208
+ end # module Messages
209
+ end # module IB
@@ -0,0 +1,99 @@
1
+
2
+ module IB
3
+ module Messages
4
+ module Outgoing
5
+ extend Messages # def_message macros
6
+
7
+
8
+ # @data={:id => int: ticker_id - Must be a unique value. When the market data
9
+ # returns, it will be identified by this tag,
10
+ # if omitted, id-autogeneration process is performed
11
+ # :contract => IB::Contract, requested contract.
12
+ # :tick_list => String: comma delimited list of requested tick groups:
13
+ # Group ID - Description - Requested Tick Types
14
+ # 100 - Option Volume (currently for stocks) - 29, 30
15
+ # 101 - Option Open Interest (currently for stocks) - 27, 28
16
+ # 104 - Historical Volatility (currently for stocks) - 23
17
+ # 105 - Average Opt Volume, # new 971
18
+ # 106 - Option Implied Volatility (impvolat) - 24
19
+ # 107 (climpvlt) # new 971
20
+ # 125 (Bond analytic data) # new 971
21
+ # 162 - Index Future Premium - 31
22
+ # 165 - Miscellaneous Stats - 15, 16, 17, 18, 19, 20, 21
23
+ # 166 (CScreen) # new 971,
24
+ # 221/220 - Creditman, Mark Price (used in TWS P&L computations) - 37
25
+ # 225 - Auction values (volume, price and imbalance) - 34, 35, 36
26
+ # 232/221(Pl-price ) # new 971
27
+ # 233 - RTVolume - 48
28
+ # 236 - Shortable (inventory) - 46
29
+ # 256 - Inventory - ?
30
+ # 258 - Fundamental Ratios - 47
31
+ # 291 - (ivclose)
32
+ # 292 - (Wide News)
33
+ # 293 - (TradeCount)
34
+ # 295 - (VolumeRate)
35
+ # 318 - (iLastRTHT-Trade)
36
+ # 370 - (Participation Monitor)
37
+ # 375 - RTTrdVolumne
38
+ # 377 - CttTickTag
39
+ # 381 - IB-Rate
40
+ # 384 - RfdTickRespTag
41
+ # 387 - DMM
42
+ # 388 - Issuer Fundamentals
43
+ # 391 - IBWarrantImplVolCompeteTick
44
+ # 405 - Index Capabilities
45
+ # 407 - Futures Margins
46
+ # 411 - Realtime Historical Volatility - 58
47
+ # 428 - Monetary Close
48
+ # 439 - MonitorTicTag
49
+ # 456/59 - IB Dividends
50
+ # 459 - RTCLOSE
51
+ # 460 - Bond Factor Multiplier
52
+ # 499 - Fee and Rebate Ratge
53
+ # 506 - midptiv
54
+ #
55
+ # 511(hvolrt10 (per-underlying)),
56
+ # 512(hvolrt30 (per-underlying)),
57
+ # 513(hvolrt50 (per-underlying)),
58
+ # 514(hvolrt75 (per-underlying)),
59
+ # 515(hvolrt100 (per-underlying)),
60
+ # 516(hvolrt150 (per-underlying)),
61
+ # 517(hvolrt200 (per-underlying)),
62
+ # 521(fzmidptiv),
63
+ # 545(vsiv),
64
+ # 576(EtfNavBidAsk(navbidask)),
65
+ # 577(EtfNavLast(navlast)),
66
+ # 578(EtfNavClose(navclose)),
67
+ # 584(Average Opening Vol.),
68
+ # 585(Average Closing Vol.),
69
+ # 587(Pl Price Delayed),
70
+ # 588(Futures Open Interest),
71
+ # 595(Short-Term Volume X Mins),
72
+ # 608(EMA N),
73
+ # 614(EtfNavMisc(hight/low)),
74
+ # 619(Creditman Slow Mark Price),
75
+ # 623(EtfFrozenNavLast(fznavlast) ## updated 2018/1/21
76
+ #
77
+ # :snapshot => bool: Check to return a single snapshot of market data and
78
+ # have the market data subscription canceled. Do not enter any
79
+ # :tick_list values if you use snapshot.
80
+ #
81
+ # :regulatory_snapshot => bool - With the US Value Snapshot Bundle for stocks,
82
+ # regulatory snapshots are available for 0.01 USD each.
83
+ # :mktDataOptions => (TagValueList) For internal use only.
84
+ # Use default value XYZ.
85
+ #
86
+ RequestMarketData =
87
+ def_message [1, 11], :request_id,
88
+ [:contract, :serialize_short, :primary_exchange], # include primary exchange in request
89
+ [:contract, :serialize_legs, []],
90
+ [:contract, :serialize_under_comp, []],
91
+ [:tick_list, lambda do |tick_list|
92
+ tick_list.is_a?(Array) ? tick_list.join(',') : (tick_list || '')
93
+ end, []],
94
+ [:snapshot, false],
95
+ [:regulatory_snapshot, false],
96
+ [:mkt_data_options, "XYZ"]
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,21 @@
1
+
2
+ module IB
3
+ module Messages
4
+ module Outgoing
5
+ extend Messages # def_message macros
6
+
7
+
8
+
9
+ RequestTickByTickData =
10
+ def_message [0, 97], :request_id, # autogenerated if not specified
11
+ [:contract, :serialize_short, :primary_exchange], # include primary exchange in request
12
+ :tick_type, # a string supported: "Last", "AllLast", "BidAsk" or "MidPoint".
13
+ # Server_version >= 140
14
+ :number_of_ticks, # int
15
+ :ignore_size # bool
16
+
17
+ CancelTickByTickData =
18
+ def_message [0, 98], :request_id
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,4 @@
1
+ # lightweigth tables are used
2
+ require 'ib/base_properties'
3
+ require 'ib/base'
4
+ IB::Model = IB::Base
@@ -0,0 +1,14 @@
1
+ require 'ib/model'
2
+
3
+ require 'models/ib/account'
4
+ require 'models/ib/account_value'
5
+ require 'models/ib/contract_detail'
6
+ require 'models/ib/underlying'
7
+ require 'models/ib/contract'
8
+ require 'models/ib/order_state'
9
+ require 'models/ib/portfolio_value'
10
+ require 'models/ib/order'
11
+ require 'models/ib/combo_leg'
12
+ require 'models/ib/execution'
13
+ require 'models/ib/bar'
14
+ require 'models/ib/condition'
@@ -0,0 +1,114 @@
1
+ =begin
2
+ taken from the python-client code
3
+
4
+ Copyright (C) 2016 Interactive Brokers LLC. All rights reserved. This code is
5
+ subject to the terms and conditions of the IB API Non-Commercial License or the
6
+ IB API Commercial License, as applicable.
7
+
8
+
9
+
10
+ The known server versions.
11
+ =end
12
+
13
+ known_servers = {
14
+ #min_server_ver_real_time_bars => 34,
15
+ #min_server_ver_scale_orders => 35,
16
+ #min_server_ver_snapshot_mkt_data => 35,
17
+ #min_server_ver_sshort_combo_legs => 35,
18
+ #min_server_ver_what_if_orders => 36,
19
+ #min_server_ver_contract_conid => 37,
20
+ :min_server_ver_pta_orders => 39,
21
+ :min_server_ver_fundamental_data => 40,
22
+ :min_server_ver_under_comp => 40,
23
+ :min_server_ver_contract_data_chain => 40,
24
+ :min_server_ver_scale_orders2 => 40,
25
+ :min_server_ver_algo_orders => 41,
26
+ :min_server_ver_execution_data_chain => 42,
27
+ :min_server_ver_not_held => 44,
28
+ :min_server_ver_sec_id_type => 45,
29
+ :min_server_ver_place_order_conid => 46,
30
+ :min_server_ver_req_mkt_data_conid => 47,
31
+ :min_server_ver_req_calc_implied_volat => 49,
32
+ :min_server_ver_req_calc_option_price => 50,
33
+ :min_server_ver_sshortx_old => 51,
34
+ :min_server_ver_sshortx => 52,
35
+ :min_server_ver_req_global_cancel => 53,
36
+ :min_server_ver_hedge_orders => 54,
37
+ :min_server_ver_req_market_data_type => 55,
38
+ :min_server_ver_opt_out_smart_routing => 56,
39
+ :min_server_ver_smart_combo_routing_params => 57,
40
+ :min_server_ver_delta_neutral_conid => 58,
41
+ :min_server_ver_scale_orders3 => 60,
42
+ :min_server_ver_order_combo_legs_price => 61,
43
+ :min_server_ver_trailing_percent => 62,
44
+ :min_server_ver_delta_neutral_open_close => 66,
45
+ :min_server_ver_positions => 67,
46
+ :min_server_ver_account_summary => 67,
47
+ :min_server_ver_trading_class => 68,
48
+ :min_server_ver_scale_table => 69,
49
+ :min_server_ver_linking => 70,
50
+ :min_server_ver_algo_id => 71,
51
+ :min_server_ver_optional_capabilities => 72,
52
+ :min_server_ver_order_solicited => 73,
53
+ :min_server_ver_linking_auth => 74,
54
+ :min_server_ver_primaryexch => 75,
55
+ :min_server_ver_randomize_size_and_price => 76,
56
+ :min_server_ver_fractional_positions => 101,
57
+ :min_server_ver_pegged_to_benchmark => 102,
58
+ :min_server_ver_models_support => 103,
59
+ :min_server_ver_sec_def_opt_params_req => 104,
60
+ :min_server_ver_ext_operator => 105,
61
+ :min_server_ver_soft_dollar_tier => 106,
62
+ :min_server_ver_req_family_codes => 107,
63
+ :min_server_ver_req_matching_symbols => 108,
64
+ :min_server_ver_past_limit => 109,
65
+ :min_server_ver_md_size_multiplier => 110,
66
+ :min_server_ver_cash_qty => 111,
67
+ :min_server_ver_req_mkt_depth_exchanges => 112,
68
+ :min_server_ver_tick_news => 113,
69
+ :min_server_ver_req_smart_components => 114,
70
+ :min_server_ver_req_news_providers => 115,
71
+ :min_server_ver_req_news_article => 116,
72
+ :min_server_ver_req_historical_news => 117,
73
+ :min_server_ver_req_head_timestamp => 118,
74
+ :min_server_ver_req_histogram => 119,
75
+ :min_server_ver_service_data_type => 120,
76
+ :min_server_ver_agg_group => 121,
77
+ :min_server_ver_underlying_info => 122,
78
+ :min_server_ver_cancel_headtimestamp => 123,
79
+ :min_server_ver_synt_realtime_bars => 124,
80
+ :min_server_ver_cfd_reroute => 125,
81
+ :min_server_ver_market_rules => 126,
82
+ :min_server_ver_pnl => 127,
83
+ :min_server_ver_news_query_origins => 128,
84
+ :min_server_ver_unrealized_pnl => 129,
85
+ :min_server_ver_historical_ticks => 130,
86
+ :min_server_ver_market_cap_price => 131,
87
+ :min_server_ver_pre_open_bid_ask => 132,
88
+ :min_server_ver_real_expiration_date => 134,
89
+ :min_server_ver_realized_pnl => 135,
90
+ :min_server_ver_last_liquidity => 136,
91
+ :min_server_ver_tick_by_tick => 137,
92
+ :min_server_ver_decision_maker => 138,
93
+ :min_server_ver_mifid_execution => 139,
94
+ :min_server_ver_tick_by_tick_ignore_size => 140,
95
+ :min_server_ver_auto_price_for_hedge => 141,
96
+ :min_server_ver_what_if_ext_fields => 142,
97
+ :min_server_ver_scanner_generic_opts => 143,
98
+ :min_server_ver_api_bind_order => 144,
99
+ :min_server_ver_order_container => 145, ### > Version Field in Order dropped
100
+ :min_server_ver_smart_depth => 146,
101
+ :min_server_ver_remove_null_all_casting => 147,
102
+ :min_server_ver_d_peg_orders => 148
103
+
104
+
105
+
106
+
107
+ }
108
+ # 100+ messaging */
109
+ # 100 = enhanced handshake, msg length prefixes
110
+
111
+ MIN_CLIENT_VER = 100
112
+ MAX_CLIENT_VER = 137 #known_servers[:min_server_ver_d_peg_orders]
113
+
114
+ # imessages/outgoing/request_tick_Data is prepared for change to ver. 140 , its commented for now