示例#1
0
        private void SessionOnSymbolLookupReceived(OEC.API.SymbolLookupCriteria criteria, ContractList contracts)
        {
            foreach (var contract in contracts)
            {
                ProcessContract(contract, contract.CurrentPrice, 0);
            }

            SendOutMessage(new SecurityLookupResultMessage());
        }
示例#2
0
        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);
		}
示例#4
0
        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);
        }