Several message-calls use :id
, :ticker_id
or :request_id
to distinguish between separate requests.
You can either specify the id
or delegate it to IB-Ruby.
To delegate, omit the specification of an :id
of any kind.
ib = IB::Connection.new( host: 'localhost:7697' )
ib.subscribe( :ContractData ) {|m| puts m.contract.as_table }
ib.subscribe(:ContractDataEnd) {|m| puts "finished with request-id: #{ m.request_id }" }
ib.activate_plugin 'symbols'
ib.try_connection!
ib.send_message :RequestContractData, contract: IB::Symbols::Stocks.aapl
=> 171
┌───────┬────────┬────────┬──────────┬───────────────┬───────┬────────┬──────────┐
│ │ symbol │ con_id │ exchange │ trading-class │ right │ strike │ currency │
╞═══════╪════════╪════════╪══════════╪═══════════════╪═══════╪════════╪══════════╡
│ Stock │ AAPL │ 265598 │ SMART │ NMS │ │ │ USD │
└───────┴────────┴────────┴──────────┴───────────────┴───────┴────────┴──────────┘
finished with request-id: 171
The :send_message
-method returns the generated »request_id«.
If request_id
is included in the parameter list to :send_message
, the autogeneration mechanism is overridden.
Examples using this feature
List of Messages supporting auto-generated request_id’s
:RequestAccountSummary
:RequestPositionsMulti
:RequestAccountUpdatesMulti
:RequestContractDetails = :RequestContractData
:RequestExecutions
:RequestFundamentalData
:RequestHeadTimeStamp
:RequestHistogramData
:RequestHistoricalData
:RequestRealTimeBars
:RequestCalculateImpliedVolatility = :CalculateImpliedVolatility
= :RequestImpliedVolatility
:RequestCalculateOptionPrice = :CalculateOptionPrice
= :RequestOptionPrice
:RequestScannerSubscription
:RequestSecurityDefinitionOptionParameters = :ReqSecDefOptParams
= :RequestOptionChainDefinition