819: def load
820: @order = Datatypes::Order.new
821: @contract = Datatypes::Contract.new
822:
823: autoload([:version, :int])
824:
825: @order.id = @socket.read_int
826:
827: @contract.symbol = @socket.read_string
828: @contract.sec_type = @socket.read_string
829: @contract.expiry = @socket.read_string
830: @contract.strike = @socket.read_decimal
831: @contract.right = @socket.read_string
832: @contract.exchange = @socket.read_string
833: @contract.currency = @socket.read_string
834:
835: @contract.local_symbol = @socket.read_string if @data[:version] >= 2
836:
837: @order.action = @socket.read_string
838: @order.total_quantity = @socket.read_int
839: @order.order_type = @socket.read_string
840: @order.limit_price = @socket.read_decimal
841: @order.aux_price = @socket.read_decimal
842: @order.tif = @socket.read_string
843: @order.oca_group = @socket.read_string
844: @order.account = @socket.read_string
845: @order.open_close = @socket.read_string
846: @order.origin = @socket.read_int
847: @order.order_ref = @socket.read_string
848:
849: @order.client_id = @socket.read_int if @data[:version] >= 3
850:
851: if @data[:version] >= 4
852: @order.perm_id = @socket.read_int
853: @order.ignore_rth = (@socket.read_int == 1)
854: @order.hidden = (@socket.read_int == 1)
855: @order.discretionary_amount = @socket.read_decimal
856: end
857:
858: @order.good_after_time = @socket.read_string if @data[:version] >= 5
859: @order.shares_allocation = @socket.read_string if @data[:version] >= 6
860:
861: if @data[:version] >= 7
862: @order.fa_group = @socket.read_string
863: @order.fa_method = @socket.read_string
864: @order.fa_percentage = @socket.read_string
865: @order.fa_profile = @socket.read_string
866: end
867:
868: @order.good_till_date = @socket.read_string if @data[:version] >= 8
869:
870: if @data[:version] >= 9
871: @order.rule_80A = @socket.read_string
872: @order.percent_offset = @socket.read_decimal
873: @order.settling_firm = @socket.read_string
874: @order.short_sale_slot = @socket.read_int
875: @order.designated_location = @socket.read_string
876: @order.auction_strategy = @socket.read_int
877: @order.starting_price = @socket.read_decimal
878: @order.stock_ref_price = @socket.read_decimal
879: @order.delta = @socket.read_decimal
880: @order.stock_range_lower = @socket.read_decimal
881: @order.stock_range_upper = @socket.read_decimal
882: @order.display_size = @socket.read_int
883: @order.rth_only = @socket.read_boolean
884: @order.block_order = @socket.read_boolean
885: @order.sweep_to_fill = @socket.read_boolean
886: @order.all_or_none = @socket.read_boolean
887: @order.min_quantity = @socket.read_int
888: @order.oca_type = @socket.read_int
889: @order.eTrade_only = @socket.read_boolean
890: @order.firm_quote_only = @socket.read_boolean
891: @order.nbbo_price_cap = @socket.read_decimal
892: end
893:
894: if @data[:version] >= 10
895: @order.parent_id = @socket.read_int
896: @order.trigger_method = @socket.read_int
897: end
898:
899: if @data[:version] >= 11
900: @order.volatility = @socket.read_decimal
901: @order.volatility_type = @socket.read_int
902:
903: if @data[:version] == 11
904: @order.delta_neutral_order_type = ( @socket.read_int == 0 ? "NONE" : "MKT" )
905: else
906: @order.delta_neutral_order_type = @socket.read_string
907: @order.delta_neutral_aux_price = @socket.read_decimal
908: end
909:
910: @order.continuous_update = @socket.read_int
911: if @server_version == 26
912: @order.stock_range_lower = @socket.read_decimal
913: @order.stock_range_upper = @socket.read_decimal
914: end
915:
916: @order.reference_price_type = @socket.read_int
917: end
918:
919:
920: end