Example #1
0
        public static Instrument ContractDetailsToInstrument(ContractDetails contract)
        {
            var instrument =  new Instrument
            {
                Symbol = contract.Summary.LocalSymbol,
                UnderlyingSymbol = contract.Summary.Symbol,
                Name = contract.LongName,
                OptionType = RightTypeToOptionType(contract.Summary.Right),
                Type = InstrumentTypeConverter(contract.Summary.SecurityType),
                Multiplier = contract.Summary.Multiplier == null ? 1 : int.Parse(contract.Summary.Multiplier),
                Expiration = string.IsNullOrEmpty(contract.Summary.Expiry) ? (DateTime?)null : DateTime.ParseExact(contract.Summary.Expiry, "yyyyMMdd", CultureInfo.InvariantCulture),
                Strike = (decimal)contract.Summary.Strike,
                Currency = contract.Summary.Currency,
                MinTick = (decimal)contract.MinTick,
                Industry = contract.Industry,
                Category = contract.Category,
                Subcategory = contract.Subcategory,
                IsContinuousFuture = false,
                ValidExchanges = contract.ValidExchanges
            };

            if (!string.IsNullOrEmpty(contract.Summary.PrimaryExchange))
                instrument.PrimaryExchange = new Exchange { Name = contract.Summary.PrimaryExchange };
            return instrument;
        }
Example #2
0
        private IB.ContractDetails GetContractDetails(IB.Contract contract)
        {
            IB.ContractDetails details = null;
            var requestID = GetNextRequestID();

            var manualResetEvent = new ManualResetEvent(false);

            // define our event handlers
            EventHandler <IB.ContractDetailsEventArgs> clientOnContractDetails = (sender, args) =>
            {
                // ignore other requests
                if (args.RequestId != requestID)
                {
                    return;
                }
                details = args.ContractDetails;
                _contractDetails.TryAdd(contract.Symbol, details);
                manualResetEvent.Set();
            };

            _client.ContractDetails += clientOnContractDetails;

            // make the request for data
            _client.RequestContractDetails(requestID, contract);

            // we'll wait a second, but it may not exist so just pass through
            manualResetEvent.WaitOne(1000);

            // be sure to remove our event handlers
            _client.ContractDetails -= clientOnContractDetails;

            return(details);
        }
		/// <summary>
		/// Full Constructor
		/// </summary>
		/// <param name="requestId">The ticker ID of the request to which this row is responding.</param>
		/// <param name="rank">The ranking within the response of this bar.</param>
		/// <param name="contractDetails">This structure contains a full description of the contract that was executed.</param>
		/// <param name="distance">Meaning varies based on query.</param>
		/// <param name="benchmark">Meaning varies based on query.</param>
		/// <param name="projection">Meaning varies based on query.</param>
		/// <param name="legsStr">Describes combo legs when scan is returning EFP.</param>
		public ScannerDataEventArgs(int requestId, int rank, ContractDetails contractDetails, string distance,
									string benchmark, string projection, string legsStr)
		{
			this.requestId = requestId;
			this.legsStr = legsStr;
			this.projection = projection;
			this.benchmark = benchmark;
			this.distance = distance;
			this.contractDetails = contractDetails;
			this.rank = rank;
		}
 /// <summary>
 /// Full Constructor
 /// </summary>
 /// <param name="requestId">The ticker ID of the request to which this row is responding.</param>
 /// <param name="rank">The ranking within the response of this bar.</param>
 /// <param name="contractDetails">This structure contains a full description of the contract that was executed.</param>
 /// <param name="distance">Meaning varies based on query.</param>
 /// <param name="benchmark">Meaning varies based on query.</param>
 /// <param name="projection">Meaning varies based on query.</param>
 /// <param name="legsStr">Describes combo legs when scan is returning EFP.</param>
 public ScannerDataEventArgs(int requestId, int rank, ContractDetails contractDetails, string distance,
                             string benchmark, string projection, string legsStr)
 {
     this.requestId       = requestId;
     this.legsStr         = legsStr;
     this.projection      = projection;
     this.benchmark       = benchmark;
     this.distance        = distance;
     this.contractDetails = contractDetails;
     this.rank            = rank;
 }
 /// <summary>
 /// Full Constructor
 /// </summary>
 /// <param name="requestId">Request Id</param>
 /// <param name="contractDetails">This structure contains a full description of the contract being looked up.</param>
 public ContractDetailsEventArgs(int requestId, ContractDetails contractDetails)
 {
     this.requestId       = requestId;
     this.contractDetails = contractDetails;
 }
 /// <summary>
 /// Full Constructor
 /// </summary>
 /// <param name="requestId">Request Id</param>
 /// <param name="contractDetails">This structure contains a full description of the contract being looked up.</param>
 public ContractDetailsEventArgs(int requestId, ContractDetails contractDetails)
 {
     this.requestId = requestId;
     this.contractDetails = contractDetails;
 }
 /// <summary>
 /// Full Constructor
 /// </summary>
 /// <param name="requestId">Request Id</param>
 /// <param name="contractDetails">This structure contains a full description of the bond contract being looked up.</param>
 public BondContractDetailsEventArgs(int requestId, ContractDetails contractDetails)
 {
     this.RequestId       = requestId;
     this.ContractDetails = contractDetails;
 }