class IB::Messages::Outgoing::PlaceOrder
Public Instance Methods
encode()
click to toggle source
Calls superclass method
# File lib/ib/messages/outgoing/place_order.rb, line 12 def encode order = @data[:order] contract = @data[:contract] [super, contract.serialize_long(:con_id, :sec_id), # main order fields (order.side == :short ? 'SSHORT' : order.side == :short_exempt ? 'SSHORTX' : order.side.to_sup), order.quantity, order[:order_type], # Internal code, 'LMT' instead of :limit order.limit_price, order.aux_price, order[:tif], order.oca_group, order.account, order.open_close.to_sup[0..0], order[:origin], order.order_ref, order.transmit, order.parent_id, order.block_order || false, order.sweep_to_fill || false, order.display_size, order[:trigger_method], order.outside_rth || false, # was: ignore_rth order.hidden || false, contract.serialize_legs(:extended), if contract.bag? [ ## Support for per-leg prices in Order [contract.legs.size] + contract.legs.map { |_| nil }, ## Support for combo routing params in Order order.combo_params.empty? ? 0 : [order.combo_params.size] + order.combo_params.to_a ] else [] end, '', # deprecated shares_allocation field order.discretionary_amount, order.good_after_time, order.good_till_date, order.fa_group, order.fa_method, order.fa_percentage, order.fa_profile, order[:short_sale_slot], # 0 only for retail, 1 or 2 for institution (Institutional) order.designated_location, # only populate when short_sale_slot == 2 (Institutional) order.exempt_code, order[:oca_type], order[:rule_80a], #.to_sup[0..0], order.settling_firm, order.all_or_none || false, order.min_quantity, order.percent_offset, order.etrade_only || false, order.firm_quote_only || false, order.nbbo_price_cap, order[:auction_strategy], order.starting_price, order.stock_ref_price, order.delta, order.stock_range_lower, order.stock_range_upper, order.override_percentage_constraints || false, order.volatility, # Volatility orders order[:volatility_type], # Volatility orders # Support for delta neutral orders with parameters if order.delta_neutral_order_type && order.delta_neutral_order_type != :none [order[:delta_neutral_order_type], order.delta_neutral_aux_price, order.delta_neutral_con_id, order.delta_neutral_settling_firm, order.delta_neutral_clearing_account, order[:delta_neutral_clearing_intent] ] else ['', ''] end, order.continuous_update, # Volatility orders order[:reference_price_type], # Volatility orders order.trail_stop_price, # TRAIL_STOP_LIMIT stop price order.trailing_percent, # Support for trailing percent order.scale_init_level_size, # Scale Orders order.scale_subs_level_size, # Scale Orders order.scale_price_increment, # Scale Orders # Support for extended scale orders parameters if order.scale_price_increment && order.scale_price_increment > 0 [order.scale_price_adjust_value, order.scale_price_adjust_interval, order.scale_profit_offset, order.scale_auto_reset || false, order.scale_init_position, order.scale_init_fill_qty, order.scale_random_percent || false ] else [] end, # Support for hedgeType order.hedge_type, # MIN_SERVER_VER_HEDGE_ORDERS order.hedge_param || [], order.opt_out_smart_routing || false, # MIN_SERVER_VER_OPT_OUT_SMART_ROUTING order.clearing_account, order.clearing_intent, order.not_held || false, contract.serialize_under_comp, order.serialize_algo(), order.what_if] end