ib-api 972.0

Sign up to get free protection for your applications and to get access to all the features.
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