private void SessionOnSymbolLookupReceived(OEC.API.SymbolLookupCriteria criteria, ContractList contracts) { foreach (var contract in contracts) { ProcessContract(contract, contract.CurrentPrice, 0); } SendOutMessage(new SecurityLookupResultMessage()); }
private void SessionOnSymbolLookupReceived(OEC.API.SymbolLookupCriteria criteria, ContractList contracts) { var transId = _lookups.TryGetValue(criteria); foreach (var contract in contracts) { ProcessContract(contract, contract.CurrentPrice, transId); } SendOutMessage(new SecurityLookupResultMessage { OriginalTransactionId = transId }); }
private void ProcessSecurityLookup(SecurityLookupMessage message) { var criteria = new OEC.API.SymbolLookupCriteria { SearchText = message.SecurityId.SecurityCode, ContractType = ContractType.Electronic, Mode = SymbolLookupMode.AnyInclusion, }; if (!message.SecurityId.BoardCode.IsEmpty()) { var exchange = _client.Exchanges[message.SecurityId.BoardCode]; if (exchange != null) criteria.Exchange = exchange; } if (!message.UnderlyingSecurityCode.IsEmpty()) { var contract = _client.BaseContracts[message.UnderlyingSecurityCode]; if (contract != null) criteria.BaseContract = contract; } switch (message.SecurityType) { case SecurityTypes.Index: criteria.ContractKinds.AddRange(new[] { ContractKind.EquityIndex, ContractKind.Continuous, ContractKind.CustomCompound, ContractKind.FutureCompound, ContractKind.GenericCompound, ContractKind.OptionsCompound }); break; case SecurityTypes.Stock: criteria.ContractKinds.AddRange(new[] { ContractKind.Equity }); break; case SecurityTypes.Bond: criteria.ContractKinds.AddRange(new[] { ContractKind.Bond }); break; case SecurityTypes.Forward: criteria.ContractKinds.AddRange(new[] { ContractKind.ForexForward }); break; case SecurityTypes.Currency: criteria.ContractKinds.AddRange(new[] { ContractKind.Forex, ContractKind.ForexForward }); break; case SecurityTypes.Future: criteria.ContractKinds.AddRange(new[] { ContractKind.Future, ContractKind.Continuous, ContractKind.FutureCompound }); break; case SecurityTypes.Option: criteria.OptionsRequired = true; switch (message.OptionType) { case OptionTypes.Call: criteria.OptionType = SymbolLookupCriteriaOptionType.Call; break; case OptionTypes.Put: criteria.OptionType = SymbolLookupCriteriaOptionType.Put; break; case null: criteria.OptionType = SymbolLookupCriteriaOptionType.All; break; default: throw new ArgumentOutOfRangeException(); } criteria.ContractKinds.AddRange(new[] { ContractKind.Option, ContractKind.EquityOption, ContractKind.OptionsCompound }); break; case SecurityTypes.Fund: criteria.ContractKinds.AddRange(new[] { ContractKind.MutualFund }); break; case null: criteria.OptionType = SymbolLookupCriteriaOptionType.All; break; default: throw new ArgumentOutOfRangeException("message", message.SecurityType, LocalizedStrings.Str2117); } _client.SymbolLookup(criteria); }
private void ProcessSecurityLookup(SecurityLookupMessage message) { var criteria = new OEC.API.SymbolLookupCriteria { SearchText = message.SecurityId.SecurityCode, ContractType = ContractType.Electronic, Mode = SymbolLookupMode.AnyInclusion, }; if (!message.SecurityId.BoardCode.IsEmpty()) { var exchange = _client.Exchanges[message.SecurityId.BoardCode]; if (exchange != null) { criteria.Exchange = exchange; } } if (!message.UnderlyingSecurityCode.IsEmpty()) { var contract = _client.BaseContracts[message.UnderlyingSecurityCode]; if (contract != null) { criteria.BaseContract = contract; } } switch (message.SecurityType) { case SecurityTypes.Index: criteria.ContractKinds.AddRange(new[] { ContractKind.EquityIndex, ContractKind.Continuous, ContractKind.CustomCompound, ContractKind.FutureCompound, ContractKind.GenericCompound, ContractKind.OptionsCompound }); break; case SecurityTypes.Stock: criteria.ContractKinds.AddRange(new[] { ContractKind.Equity }); break; case SecurityTypes.Bond: criteria.ContractKinds.AddRange(new[] { ContractKind.Bond }); break; case SecurityTypes.Forward: criteria.ContractKinds.AddRange(new[] { ContractKind.ForexForward }); break; case SecurityTypes.Currency: criteria.ContractKinds.AddRange(new[] { ContractKind.Forex, ContractKind.ForexForward }); break; case SecurityTypes.Future: criteria.ContractKinds.AddRange(new[] { ContractKind.Future, ContractKind.Continuous, ContractKind.FutureCompound }); break; case SecurityTypes.Option: criteria.OptionsRequired = true; switch (message.OptionType) { case OptionTypes.Call: criteria.OptionType = SymbolLookupCriteriaOptionType.Call; break; case OptionTypes.Put: criteria.OptionType = SymbolLookupCriteriaOptionType.Put; break; case null: criteria.OptionType = SymbolLookupCriteriaOptionType.All; break; default: throw new ArgumentOutOfRangeException(); } criteria.ContractKinds.AddRange(new[] { ContractKind.Option, ContractKind.EquityOption, ContractKind.OptionsCompound }); break; case SecurityTypes.Fund: criteria.ContractKinds.AddRange(new[] { ContractKind.MutualFund }); break; case null: criteria.OptionType = SymbolLookupCriteriaOptionType.All; break; default: throw new ArgumentOutOfRangeException(nameof(message), message.SecurityType, LocalizedStrings.Str2117); } _client.SymbolLookup(criteria); }