/// <summary> /// Request historical data. Data will be delivered through the HistoricalDataReceived event. /// </summary> /// <returns>An ID uniquely identifying this historical data request. -1 if there was an error.</returns> public int RequestHistoricalData(HistoricalDataRequest request) { if (request == null) { RaiseEvent(Error, this, new ErrorArgs(-1, "Historical Data Request Failed: Request cannot be null.")); return(-1); } if (request.EndingDate < request.StartingDate) { RaiseEvent(Error, this, new ErrorArgs(-1, "Historical Data Request Failed: Starting date must be after ending date.")); return(-1); } if (request.Instrument == null) { RaiseEvent(Error, this, new ErrorArgs(-1, "Historical Data Request Failed: Instrument cannot be null.")); return(-1); } if (!ClientRunningAndIsConnected) { RaiseEvent(Error, this, new ErrorArgs(-1, "Could not request historical data - not connected.")); return(-1); } if (!request.RTHOnly && request.Frequency >= BarSize.OneDay && request.DataLocation != DataLocation.ExternalOnly) { RaiseEvent( Error, this, new ErrorArgs( -1, "Warning: Requesting low-frequency data outside RTH should be done with DataLocation = ExternalOnly, data from local storage will be incorrect.")); } request.RequestID = Interlocked.Increment(ref requestCount); lock (pendingHistoricalRequestsLock) { PendingHistoricalRequests.Add(request); } historicalDataRequests.Enqueue(request); return(request.RequestID); }
/// <summary> /// Request historical data. Data will be delivered through the HistoricalDataReceived event. /// </summary> /// <returns>An ID uniquely identifying this historical data request. -1 if there was an error.</returns> public int RequestHistoricalData(HistoricalDataRequest request) { //make sure the request is valid if (request.EndingDate < request.StartingDate) { RaiseEvent(Error, this, new ErrorArgs(-1, "Historical Data Request Failed: Starting date must be after ending date.")); return(-1); } if (request.Instrument == null) { RaiseEvent(Error, this, new ErrorArgs(-1, "Historical Data Request Failed: null Instrument.")); return(-1); } if (!Connected) { RaiseEvent(Error, this, new ErrorArgs(-1, "Could not request historical data - not connected.")); return(-1); } if (!request.RTHOnly && request.Frequency >= BarSize.OneDay && request.DataLocation != DataLocation.ExternalOnly) { RaiseEvent(Error, this, new ErrorArgs(-1, "Warning: Requesting low-frequency data outside RTH should be done with DataLocation = ExternalOnly, data from local storage will be incorrect.")); } request.RequestID = _requestCount++; lock (_pendingHistoricalRequestsLock) { PendingHistoricalRequests.Add(request); } _historicalDataRequests.Enqueue(request); return(request.RequestID); }