public QuoteSeries GetHistoricalQuotes(IHistoricalDataProvider provider, Instrument instrument, DateTime datetime1, DateTime datetime2) { if (provider.IsDisconnected) { provider.Connect(); } DataNotifier @class = new DataNotifier(); string text = Guid.NewGuid().ToString(); lock (this.dictionary_0) this.dictionary_0.Add(text, @class); provider.Send(new HistoricalDataRequest(instrument, datetime1, datetime2, DataObjectType.Quote) { RequestId = text }); @class.ReadyEvent.WaitOne(); lock (this.dictionary_0) this.dictionary_0.Remove(text); var qs = new QuoteSeries(""); foreach (var data in @class.Data) { var objs = data.Objects; for (int i = 0; i < objs.Length; i++) { qs.Add((Quote)objs[i]); } } return(qs); }
public HistoricalDataEventArgs(string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base() { this.RequestId = requestId; this.Instrument = instrument; this.Provider = provider; this.DataLength = dataLength; }
public void SetProvider(IHistoricalDataProvider provider) { this.tlNlxfyMLv = provider; foreach (HistoricalDataType historicalDataType in Enum.GetValues(typeof(HistoricalDataType))) { if ((provider.DataType & historicalDataType) == historicalDataType) { this.j4UkPEuPyL.Items.Add((object)historicalDataType); } } if (provider.BarSizes.Length == 0) { this.UkjlhoxVlP.DropDownStyle = ComboBoxStyle.Simple; } else { this.UkjlhoxVlP.DropDownStyle = ComboBoxStyle.DropDownList; List <int> list = new List <int>((IEnumerable <int>)provider.BarSizes); list.Sort(); foreach (int num in list) { this.UkjlhoxVlP.Items.Add((object)num); } } this.ItskcDWUqc.Minimum = 1; this.ItskcDWUqc.Value = 1; this.ItskcDWUqc.Maximum = provider.MaxConcurrentRequests != -1 ? provider.MaxConcurrentRequests : 5; this.HV3kzfxOak.Text = this.ItskcDWUqc.Value.ToString(); this.Text = string.Format(RNaihRhYEl0wUmAftnB.aYu7exFQKN(20846), (object)provider.Name); }
public void SetProvider(IHistoricalDataProvider provider) { this.provider = provider; foreach (HistoricalDataType historicalDataType in Enum.GetValues(typeof(HistoricalDataType))) { if ((int)(byte)(provider.DataType & historicalDataType) == (byte)historicalDataType) { this.cbxDataTypes.Items.Add(historicalDataType); } } List <long> list = new List <long>(); if (provider.BarSizes.Length == 0) { list.Add(1L); list.Add(2L); list.Add(3L); list.Add(5L); list.Add(10L); list.Add(15L); list.Add(20L); list.Add(30L); list.Add(60L); list.Add(120L); list.Add(180L); list.Add(300L); list.Add(600L); list.Add(900L); list.Add(1200L); list.Add(1800L); list.Add(3600L); list.Add(7200L); list.Add(10800L); list.Add(21600L); } else { foreach (long num in provider.BarSizes) { list.Add(num); } } list.Sort(); foreach (long barSize in list) { this.cbxBarSize.Items.Add(new BarSizeItem(barSize)); } this.trbMaxRequests.Minimum = 1; this.trbMaxRequests.Value = 1; this.trbMaxRequests.Maximum = provider.MaxConcurrentRequests != -1 ? provider.MaxConcurrentRequests : 5; this.tbxMaxRequests.Text = this.trbMaxRequests.Value.ToString(); this.Text = string.Format("Download Historical Data - {0}", provider.Name); if (this.cbxDataTypes.Items.Count <= 0) { return; } this.cbxDataTypes.SelectedIndex = 0; }
public static QuoteArray GetHistoricalQuotes(IHistoricalDataProvider provider, Instrument instrument, DateTime datetime1, DateTime datetime2) { ArrayList arrayList = DataManager.r6ZT8iFUv(provider, instrument, DataManager.EDataSeries.Quote, datetime1, datetime2, -1L); QuoteArray quoteArray = new QuoteArray(); foreach (Quote quote in arrayList) { quoteArray.Add(quote); } return(quoteArray); }
public static TradeArray GetHistoricalTrades(IHistoricalDataProvider provider, Instrument instrument, DateTime datetime1, DateTime datetime2) { ArrayList arrayList = DataManager.r6ZT8iFUv(provider, instrument, DataManager.EDataSeries.Trade, datetime1, datetime2, -1L); TradeArray tradeArray = new TradeArray(); foreach (Trade trade in arrayList) { tradeArray.Add(trade); } return(tradeArray); }
public static DailySeries GetHistoricalDailies(IHistoricalDataProvider provider, Instrument instrument, DateTime date1, DateTime date2) { ArrayList arrayList = DataManager.r6ZT8iFUv(provider, instrument, DataManager.EDataSeries.Daily, date1, date2, -1L); DailySeries dailySeries = new DailySeries(); foreach (Daily daily in arrayList) { dailySeries.Add(daily); } return(dailySeries); }
public static BarSeries GetHistoricalBars(IHistoricalDataProvider provider, Instrument instrument, DateTime datetime1, DateTime datetime2, long barSize) { ArrayList arrayList = DataManager.r6ZT8iFUv(provider, instrument, DataManager.EDataSeries.Bar, datetime1, datetime2, barSize); BarSeries barSeries = new BarSeries(); foreach (Bar bar in arrayList) { barSeries.Add(bar); } return(barSeries); }
public static BarSeries GetHistoricalBars(string provider, Instrument instrument, DateTime begin, DateTime end, int size) { BarSeries barSeries = new BarSeries(); if (FreeQuant.Providers.ProviderManager.HistoricalDataProviders.Contains(provider)) { IHistoricalDataProvider provider1 = FreeQuant.Providers.ProviderManager.HistoricalDataProviders[provider]; foreach (FreeQuant.Data.Bar bar in size != 86400 ? (FreeQuant.Series.TimeSeries)FreeQuant.Instruments.DataManager.GetHistoricalBars(provider1, instrument.instrument, begin, end, (long)size) : (FreeQuant.Series.TimeSeries)FreeQuant.Instruments.DataManager.GetHistoricalDailies(provider1, instrument.instrument, begin, end)) { barSeries.series.Add(bar); } } return(barSeries); }
public TickSeries GetHistoricalTicks(IHistoricalDataProvider provider, TickType type, Instrument instrument, DateTime dateTime1, DateTime dateTime2) { if (provider.IsDisconnected) { provider.Connect(); } DataNotifier @class = new DataNotifier(); string text = Guid.NewGuid().ToString(); lock (this.dictionary_0) { this.dictionary_0.Add(text, @class); } HistoricalDataRequest request = null; switch (type) { case TickType.Bid: request = new HistoricalDataRequest(instrument, dateTime1, dateTime2, DataObjectType.Bid); break; case TickType.Ask: request = new HistoricalDataRequest(instrument, dateTime1, dateTime2, DataObjectType.Ask); break; case TickType.Trade: request = new HistoricalDataRequest(instrument, dateTime1, dateTime2, DataObjectType.Trade); break; } request.RequestId = text; provider.Send(request); @class.ReadyEvent.WaitOne(); lock (this.dictionary_0) { this.dictionary_0.Remove(text); } var ts = new TickSeries("", ""); foreach (var data in @class.Data) { var objs = data.Objects; foreach (var tick in objs) { ts.Add((Tick)tick); } } return(ts); }
public ImportHistoricalDataWidget(string providerName) { this.Build(); this.instruments = new HashSet <Instrument>(); // this.taskItems = new Dictionary<string, ImportTaskViewItem>(); this.requests = new List <HistoricalDataRequest>(); this.workingRequests = new HashSet <string>(); this.lastQuotes = new Dictionary <string, Quote>(); var f = Framework.Current; this.provider = f.ProviderManager.GetProvider(providerName) as IHistoricalDataProvider; f.EventManager.Dispatcher.HistoricalData += new HistoricalDataEventHandler(this.OnHistoricalData); f.EventManager.Dispatcher.HistoricalDataEnd += new HistoricalDataEndEventHandler(this.OnHistoricalDataEnd); }
private static ArrayList r6ZT8iFUv(IHistoricalDataProvider provider, Instrument instrument, DataManager.EDataSeries dataType, DateTime beginDate, DateTime endDate, long barSize) { if (provider == null) { throw new ArgumentNullException("Provider is null"); } if (instrument == null) { throw new ArgumentNullException("Instrument is null"); } if (!provider.IsConnected) { provider.Connect(10000); if (!provider.IsConnected) { throw new InvalidOperationException("Provider cannot make a connection"); } } HistoricalDataRequest request = new HistoricalDataRequest(); request.Instrument = instrument; switch (dataType) { case DataManager.EDataSeries.Daily: request.DataType = HistoricalDataType.Daily; break; case DataManager.EDataSeries.Trade: request.DataType = HistoricalDataType.Trade; break; case DataManager.EDataSeries.Quote: request.DataType = HistoricalDataType.Quote; break; case DataManager.EDataSeries.Bar: request.DataType = HistoricalDataType.Bar; request.BarSize = barSize; break; } request.BeginDate = beginDate; request.EndDate = endDate; return(new HistoricalDataGetter(provider, request).GetData()); }
public TickSeries GetHistoricalTrades(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2) { HistoricalDataRequest request = new HistoricalDataRequest(instrument, dateTime1, dateTime2, 4); provider.Send(request); this.handle = new ManualResetEventSlim(false); this.handle.Wait(); TickSeries tickSeries = new TickSeries(""); if (this.historicalData != null) { foreach (HistoricalData current in this.historicalData) { DataObject[] objects = current.Objects; for (int i = 0; i < objects.Length; i++) { DataObject dataObject = objects[i]; tickSeries.Add((Trade)dataObject); } } } this.historicalData = null; return tickSeries; }
public static BarSeries GetHistoricalBars(string provider, Instrument instrument, DateTime begin, DateTime end, int size) { BarSeries barSeries = new BarSeries(); if (SmartQuant.Providers.ProviderManager.HistoricalDataProviders.Contains(provider)) { IHistoricalDataProvider provider2 = SmartQuant.Providers.ProviderManager.HistoricalDataProviders[provider]; SmartQuant.Series.BarSeries barSeries2; if (size == 86400) { barSeries2 = SmartQuant.Instruments.DataManager.GetHistoricalDailies(provider2, instrument.instrument, begin, end); } else { barSeries2 = SmartQuant.Instruments.DataManager.GetHistoricalBars(provider2, instrument.instrument, begin, end, (long)size); } foreach (SmartQuant.Data.Bar bar in barSeries2) { barSeries.series.Add(bar); } } return(barSeries); }
public BarSeries GetHistoricalBars(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2, BarType barType, long barSize) { if (provider.IsDisconnected) { provider.Connect(); } DataManager.DataNotifier @class = new DataManager.DataNotifier(); string text = Guid.NewGuid().ToString(); lock (this.dictionary_0) { this.dictionary_0.Add(text, @class); } provider.Send(new HistoricalDataRequest(instrument, dateTime1, dateTime2, 6) { RequestId = text, BarType = new BarType?(barType), BarSize = new long?(barSize) }); @class.ReadyEvent.WaitOne(); lock (this.dictionary_0) { this.dictionary_0.Remove(text); } var bs = new BarSeries("", "", -1, -1); foreach (var data in @class.Data) { var objs = data.Objects; for (int i = 0; i < objs.Length; i++) { bs.Add((Bar)objs[i]); } } return(bs); }
public List <Fundamental> GetHistoricalFundamentals(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2) { if (provider.IsDisconnected) { provider.Connect(); } var @class = new DataNotifier(); var guid = Guid.NewGuid().ToString(); lock (this.dictionary_0) { this.dictionary_0.Add(guid, @class); } provider.Send(new HistoricalDataRequest(instrument, dateTime1, dateTime2, DataObjectType.Fundamental) { RequestId = guid }); @class.ReadyEvent.WaitOne(); lock (this.dictionary_0) { this.dictionary_0.Remove(guid); } return(@class.Data.SelectMany(current => current.Objects).Cast <Fundamental>().ToList()); }
public TickSeries GetHistoricalTrades(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2) { HistoricalDataRequest request = new HistoricalDataRequest(instrument, dateTime1, dateTime2, 4); provider.Send(request); this.handle = new ManualResetEventSlim(false); this.handle.Wait(); TickSeries tickSeries = new TickSeries(""); if (this.historicalData != null) { foreach (HistoricalData current in this.historicalData) { DataObject[] objects = current.Objects; for (int i = 0; i < objects.Length; i++) { DataObject dataObject = objects[i]; tickSeries.Add((Trade)dataObject); } } } this.historicalData = null; return(tickSeries); }
public HistoricalDataErrorEventArgs(string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength, string message) : base(requestId, instrument, provider, dataLength) { this.Message = message; }
public HistoricalDataGetter(IHistoricalDataProvider provider, HistoricalDataRequest request) { this.provider = provider; this.request = request; }
public HistoricalBarEventArgs(Bar bar, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base(requestId, instrument, provider, dataLength) { this.Bar = bar; }
public HistoricalQuoteEventArgs(Quote quote, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base(requestId, instrument, provider, dataLength) { this.Quote = quote; }
public static async Task <IEnumerable <DataLoadResult> > GetData(this IHistoricalDataProvider provider, MarketSeriesBase series, DateTime?startDate, DateTime endDate, bool cacheOnly = false, bool writeCache = true, TimeSpan?maxOutOfDate = null, int totalDesiredBars = 0, bool forceRetrieve = false, bool forceReretrieveEmptyData = false, CancellationToken?cancellationToken = null) { logger.LogTrace($"[GetData] {series} {startDate} - {endDate}"); await series.DataLock.WaitAsync().ConfigureAwait(false); try { if (!startDate.HasValue) { startDate = endDate; } if (!maxOutOfDate.HasValue) { maxOutOfDate = HistoricalDataUtils.GetDefaultMaxOutOfDate(series); } List <DataLoadResult> results = new List <DataLoadResult>(); DateTime nextChunkDate; if (series.HasAccount && series.Account.IsBacktesting) { nextChunkDate = DateTime.FromBinary(Math.Min(series.Account.BacktestEndDate.ToBinary(), series.OpenTime.First().ToBinary())); } else { if (cacheOnly) { nextChunkDate = endDate; if (nextChunkDate == default(DateTime)) { nextChunkDate = startDate.Value; } } else { nextChunkDate = DateTime.UtcNow + TimeSpan.FromMinutes(1); } } DataLoadResult dataLoadResult = null; int giveUpAfterNoData = GetGiveUpAfterNoData(series.TimeFrame); do { if (nextChunkDate == default(DateTime)) { break; } DateTime chunkStart; DateTime chunkEnd; HistoricalDataCacheFile.GetChunkRange(series.TimeFrame, nextChunkDate, out chunkStart, out chunkEnd); dataLoadResult = await provider.GetDataForChunk(series, chunkStart, chunkEnd, cacheOnly, writeCache, forceReretrieveEmptyData : forceReretrieveEmptyData, cancellationToken : cancellationToken).ConfigureAwait(false); results.Add(dataLoadResult); nextChunkDate = chunkStart - TimeSpan.FromMinutes(1); if (!dataLoadResult.IsAvailable) { giveUpAfterNoData--; } else { giveUpAfterNoData = GetGiveUpAfterNoData(series.TimeFrame); } //Debug.WriteLine($"[data {series}] {dataLoadResult}" + (cacheOnly?" (CACHE ONLY)":"")); } while (giveUpAfterNoData > 0 && ((nextChunkDate != default(DateTime) && nextChunkDate > startDate.Value) || series.Count < totalDesiredBars) ); return(results); } finally { series.DataLock.Release(); } }
protected override void OnInit() { this.provider = (IHistoricalDataProvider)this.args[0]; this.framework.EventManager.Dispatcher.HistoricalData += new HistoricalDataEventHandler(this.Dispatcher_HistoricalData); this.framework.EventManager.Dispatcher.HistoricalDataEnd += new HistoricalDataEndEventHandler(this.Dispatcher_HistoricalDataEnd); }
public TickSeries GetHistoricalTrades(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2) => GetHistoricalTicks(provider, TickType.Trade, instrument, dateTime1, dateTime2);
public QuoteSeries GetHistoricalQuotes(IHistoricalDataProvider provider, Instrument instrument) => GetHistoricalQuotes(provider, instrument, DateTime.MinValue, DateTime.MaxValue);
public List<Fundamental> GetHistoricalFundamentals(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2) { if (provider.IsDisconnected) { provider.Connect(); } var @class = new DataNotifier(); var guid = Guid.NewGuid().ToString(); lock (this.dictionary_0) { this.dictionary_0.Add(guid, @class); } provider.Send(new HistoricalDataRequest(instrument, dateTime1, dateTime2, DataObjectType.Fundamental) { RequestId = guid }); @class.ReadyEvent.WaitOne(); lock (this.dictionary_0) { this.dictionary_0.Remove(guid); } return @class.Data.SelectMany(current => current.Objects).Cast<Fundamental>().ToList(); }
public TickSeries GetHistoricalTicks(IHistoricalDataProvider provider, TickType type, Instrument instrument, DateTime dateTime1, DateTime dateTime2) { if (provider.IsDisconnected) provider.Connect(); DataNotifier @class = new DataNotifier(); string text = Guid.NewGuid().ToString(); lock (this.dictionary_0) { this.dictionary_0.Add(text, @class); } HistoricalDataRequest request = null; switch (type) { case TickType.Bid: request = new HistoricalDataRequest(instrument, dateTime1, dateTime2, DataObjectType.Bid); break; case TickType.Ask: request = new HistoricalDataRequest(instrument, dateTime1, dateTime2, DataObjectType.Ask); break; case TickType.Trade: request = new HistoricalDataRequest(instrument, dateTime1, dateTime2, DataObjectType.Trade); break; } request.RequestId = text; provider.Send(request); @class.ReadyEvent.WaitOne(); lock (this.dictionary_0) { this.dictionary_0.Remove(text); } var ts = new TickSeries("", ""); foreach (var data in @class.Data) { var objs = data.Objects; foreach (var tick in objs) ts.Add((Tick)tick); } return ts; }
protected override void OnInit() { this.provider = (IHistoricalDataProvider) this.args[0]; this.framework.EventManager.Dispatcher.HistoricalData += new HistoricalDataEventHandler(this.Dispatcher_HistoricalData); this.framework.EventManager.Dispatcher.HistoricalDataEnd += new HistoricalDataEndEventHandler(this.Dispatcher_HistoricalDataEnd); }
public HistoricalMarketDepthEventArgs(MarketDepth marketDepth, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base(requestId, instrument, provider, dataLength) { this.MarketDepth = marketDepth; }
private static ArrayList r6ZT8iFUv(IHistoricalDataProvider provider, Instrument instrument, DataManager.EDataSeries dataType, DateTime beginDate, DateTime endDate, long barSize) { if (provider == null) throw new ArgumentNullException("Provider is null"); if (instrument == null) throw new ArgumentNullException("Instrument is null"); if (!provider.IsConnected) { provider.Connect(10000); if (!provider.IsConnected) throw new InvalidOperationException("Provider cannot make a connection"); } HistoricalDataRequest request = new HistoricalDataRequest(); request.Instrument = instrument; switch (dataType) { case DataManager.EDataSeries.Daily: request.DataType = HistoricalDataType.Daily; break; case DataManager.EDataSeries.Trade: request.DataType = HistoricalDataType.Trade; break; case DataManager.EDataSeries.Quote: request.DataType = HistoricalDataType.Quote; break; case DataManager.EDataSeries.Bar: request.DataType = HistoricalDataType.Bar; request.BarSize = barSize; break; } request.BeginDate = beginDate; request.EndDate = endDate; return new HistoricalDataGetter(provider, request).GetData(); }
/// <summary> /// Load data from cache if available, or else retrieve from source. /// </summary> /// <param name="provider"></param> /// <param name="series"></param> /// <param name="chunkStart"></param> /// <param name="chunkEnd"></param> /// <param name="cacheOnly"></param> /// <param name="writeCache">If true, write any retrieved data to cache</param> /// <param name="maxOutOfDate"></param> /// <param name="forceRetrieve"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public static async Task <DataLoadResult> GetDataForChunk(this IHistoricalDataProvider provider, MarketSeriesBase series, DateTime chunkStart, DateTime chunkEnd, bool cacheOnly = false, bool writeCache = true, TimeSpan?maxOutOfDate = null, bool forceRetrieve = false, bool forceReretrieveEmptyData = false, CancellationToken?cancellationToken = null) { logger.LogTrace($"[GetDataForChunk] {series} {chunkStart}"); if (!maxOutOfDate.HasValue) { maxOutOfDate = HistoricalDataUtils.GetDefaultMaxOutOfDate(series); } if (chunkStart >= series.DataStartDate && chunkEnd <= series.DataEndDate) { var chunkEndPastLast = chunkEnd - series.OpenTime.LastValue; if (chunkEndPastLast <= TimeSpan.Zero) { //logger.LogTrace($"[{series}] Already contains data for {chunkStart} - {chunkEnd}"); return(DataLoadResult.AlreadyLoaded); } var nowPastLast = DateTime.UtcNow - series.OpenTime.LastValue; if (!forceRetrieve && nowPastLast < maxOutOfDate) { //logger.LogTrace($"[{series}] Already contains data for {chunkStart} - {chunkEnd} (Only slightly out of date: {nowPastLast})"); return(DataLoadResult.AlreadyLoaded); } } var cacheFile = await HistoricalDataCacheFile.GetCacheFile(series, chunkStart).ConfigureAwait(false); DataLoadResult result = cacheFile.DataLoadResult; bool isUpToDateAfterClose = series.CloseTime.HasValue && cacheFile.QueryDate > series.CloseTime.Value; if (!forceRetrieve && (!forceReretrieveEmptyData || !cacheFile.EmptyData) && cacheFile.IsPersisted && (isUpToDateAfterClose || cacheFile.OutOfDateTimeSpan < maxOutOfDate.Value) //&& (chunkEnd > DateTime.UtcNow || !result.IsPartial) ) { //Debug.WriteLine($"[cache available {series}] Chunk {chunkStart}"); if (!cacheOnly) { if (result.Bars == null) { result.Bars = new List <TimedBar>(); } ImportData(series, result); //if (series is MarketSeries) // TOC#7 OLD //{ // var s = series as MarketSeries; // if (s != null) { s.Add(cacheFile.Bars, result.StartDate, result.EndDate); } //} //else if (series is MarketSeries) // TOC#7 //{ // var s = series as MarketTickSeries; // if (s != null) { s.Add(cacheFile.Ticks, result.StartDate, result.EndDate); } //} } } else { var str = forceRetrieve ? "FORCE RETRIEVE" : (forceReretrieveEmptyData && cacheFile.EmptyData) ? "RERETRIEVE EMPTY DATA" : "CACHE MISS"; logger.LogInformation($"[{series} {str}] Retrieving chunk {chunkStart} "); #if DEBUG logger.LogTrace($"<<<cache debug>>> cacheFile.IsPersisted {cacheFile.IsPersisted}, isUpToDateAfterClose {isUpToDateAfterClose}, cacheFile.OutOfDateTimeSpan < maxOutOfDate.Value {cacheFile.OutOfDateTimeSpan < maxOutOfDate.Value} "); #endif var loader = new object(); try { series.OnLoadingStarted(loader); result = await provider.RetrieveDataForChunk(series, chunkStart, cacheOnly, writeCache, cancellationToken : cancellationToken).ConfigureAwait(false); if (result.Faulted) { throw new Exception("Retrieve data for chunk failed"); } //if (LinkWithAccountData && Account != null && ResultBars.Count > 0) if (!cacheOnly) { ImportData(series, result); } } finally { series.OnLoadingFinished(loader); } if (writeCache) { if (!result.Faulted) { //UpdateProgress(0.98, "Writing data into cache"); // FUTURE: Async? TaskManager.OnFireAndForget(HistoricalDataCacheFile.SaveCacheFile(result), name: $"Save cache for {series.SymbolCode} from {chunkStart} - {chunkEnd}"); } } else { logger.LogTrace("WRITECACHE OFF"); } } return(result); }
public void SetProvider(IHistoricalDataProvider provider) { this.tlNlxfyMLv = provider; foreach (HistoricalDataType historicalDataType in Enum.GetValues(typeof (HistoricalDataType))) { if ((provider.DataType & historicalDataType) == historicalDataType) this.j4UkPEuPyL.Items.Add((object) historicalDataType); } if (provider.BarSizes.Length == 0) { this.UkjlhoxVlP.DropDownStyle = ComboBoxStyle.Simple; } else { this.UkjlhoxVlP.DropDownStyle = ComboBoxStyle.DropDownList; List<int> list = new List<int>((IEnumerable<int>) provider.BarSizes); list.Sort(); foreach (int num in list) this.UkjlhoxVlP.Items.Add((object) num); } this.ItskcDWUqc.Minimum = 1; this.ItskcDWUqc.Value = 1; this.ItskcDWUqc.Maximum = provider.MaxConcurrentRequests != -1 ? provider.MaxConcurrentRequests : 5; this.HV3kzfxOak.Text = this.ItskcDWUqc.Value.ToString(); this.Text = string.Format(RNaihRhYEl0wUmAftnB.aYu7exFQKN(20846), (object) provider.Name); }
internal HistoricalDataProvider(IHistoricalDataProvider provider) : base(provider) { }
internal HistoricalDataProvider(IHistoricalDataProvider provider) : base((IProvider)provider) { }
public HistoricalTradeEventArgs(Trade trade, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base(requestId, instrument, provider, dataLength) { this.Trade = trade; }
public static BarSeries GetHistoricalBars(IHistoricalDataProvider provider, Instrument instrument, DateTime datetime1, DateTime datetime2, long barSize) { ArrayList arrayList = DataManager.r6ZT8iFUv(provider, instrument, DataManager.EDataSeries.Bar, datetime1, datetime2, barSize); BarSeries barSeries = new BarSeries(); foreach (Bar bar in arrayList) barSeries.Add(bar); return barSeries; }
public static TradeArray GetHistoricalTrades(IHistoricalDataProvider provider, Instrument instrument, DateTime datetime1, DateTime datetime2) { ArrayList arrayList = DataManager.r6ZT8iFUv(provider, instrument, DataManager.EDataSeries.Trade, datetime1, datetime2, -1L); TradeArray tradeArray = new TradeArray(); foreach (Trade trade in arrayList) tradeArray.Add(trade); return tradeArray; }
public BarSeries GetHistoricalBars(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2, BarType barType, long barSize) { if (provider.IsDisconnected) provider.Connect(); DataManager.DataNotifier @class = new DataManager.DataNotifier(); string text = Guid.NewGuid().ToString(); lock (this.dictionary_0) { this.dictionary_0.Add(text, @class); } provider.Send(new HistoricalDataRequest(instrument, dateTime1, dateTime2, 6) { RequestId = text, BarType = new BarType?(barType), BarSize = new long?(barSize) }); @class.ReadyEvent.WaitOne(); lock (this.dictionary_0) { this.dictionary_0.Remove(text); } var bs = new BarSeries("", "", -1, -1); foreach (var data in @class.Data) { var objs = data.Objects; for (int i = 0; i < objs.Length; i++) bs.Add((Bar)objs[i]); } return bs; }
public void SetProvider(IHistoricalDataProvider provider) { this.provider = provider; foreach (HistoricalDataType historicalDataType in Enum.GetValues(typeof (HistoricalDataType))) { if ((int) (byte) (provider.DataType & historicalDataType) == (byte)historicalDataType) this.cbxDataTypes.Items.Add(historicalDataType); } List<long> list = new List<long>(); if (provider.BarSizes.Length == 0) { list.Add(1L); list.Add(2L); list.Add(3L); list.Add(5L); list.Add(10L); list.Add(15L); list.Add(20L); list.Add(30L); list.Add(60L); list.Add(120L); list.Add(180L); list.Add(300L); list.Add(600L); list.Add(900L); list.Add(1200L); list.Add(1800L); list.Add(3600L); list.Add(7200L); list.Add(10800L); list.Add(21600L); } else { foreach (long num in provider.BarSizes) list.Add(num); } list.Sort(); foreach (long barSize in list) this.cbxBarSize.Items.Add(new BarSizeItem(barSize)); this.trbMaxRequests.Minimum = 1; this.trbMaxRequests.Value = 1; this.trbMaxRequests.Maximum = provider.MaxConcurrentRequests != -1 ? provider.MaxConcurrentRequests : 5; this.tbxMaxRequests.Text = this.trbMaxRequests.Value.ToString(); this.Text = string.Format("Download Historical Data - {0}", provider.Name); if (this.cbxDataTypes.Items.Count <= 0) return; this.cbxDataTypes.SelectedIndex = 0; }
public static DailySeries GetHistoricalDailies(IHistoricalDataProvider provider, Instrument instrument, DateTime date1, DateTime date2) { ArrayList arrayList = DataManager.r6ZT8iFUv(provider, instrument, DataManager.EDataSeries.Daily, date1, date2, -1L); DailySeries dailySeries = new DailySeries(); foreach (Daily daily in arrayList) dailySeries.Add(daily); return dailySeries; }
public static QuoteArray GetHistoricalQuotes(IHistoricalDataProvider provider, Instrument instrument, DateTime datetime1, DateTime datetime2) { ArrayList arrayList = DataManager.r6ZT8iFUv(provider, instrument, DataManager.EDataSeries.Quote, datetime1, datetime2, -1L); QuoteArray quoteArray = new QuoteArray(); foreach (Quote quote in arrayList) quoteArray.Add(quote); return quoteArray; }
public QuoteSeries GetHistoricalQuotes(IHistoricalDataProvider provider, Instrument instrument, DateTime datetime1, DateTime datetime2) { if (provider.IsDisconnected) provider.Connect(); DataNotifier @class = new DataNotifier(); string text = Guid.NewGuid().ToString(); lock (this.dictionary_0) this.dictionary_0.Add(text, @class); provider.Send(new HistoricalDataRequest(instrument, datetime1, datetime2, DataObjectType.Quote) { RequestId = text }); @class.ReadyEvent.WaitOne(); lock (this.dictionary_0) this.dictionary_0.Remove(text); var qs = new QuoteSeries(""); foreach (var data in @class.Data) { var objs = data.Objects; for (int i = 0; i < objs.Length; i++) qs.Add((Quote)objs[i]); } return qs; }
public override void Run() { // Prepare running. Console.WriteLine("Prepare running in {0} mode...", framework.StrategyManager.Mode); // Get trading instruments. Instrument ins1 = InstrumentManager.Instruments["IF1612"]; // Create SMA Crossover with Loading data on start strategy. // and add trading instruments. DoubleMA_Crossover smaCrossoverLOS = new DoubleMA_Crossover(framework, "SMACrossoverLOS"); smaCrossoverLOS.Instruments.Add(ins1); // Set strategy as main. strategy = smaCrossoverLOS; Console.WriteLine("Prepare running in {0} mode...", framework.StrategyManager.Mode); // 开始时间是前一个交易日,这个地方要按自己策略的实际情况进行调整 DateTime startDate = DateTime.Now.DayOfWeek == DayOfWeek.Monday ? DateTime.Now.AddDays(-3).Date : DateTime.Now.AddDays(-1).Date; DateTime historicalData1EndTime = startDate; // 取本地的数据的最后时间 DataSeries ins1DataSeries = framework.DataManager.GetDataSeries(ins1, DataObjectType.Trade); if (ins1DataSeries != null && ins1DataSeries.Count > 0) { historicalData1EndTime = ins1DataSeries.DateTime2; } // 以两个时间的最大值为起点 historicalData1EndTime = new DateTime(Math.Max(historicalData1EndTime.Ticks, startDate.Ticks)); // Load and save historical trades from QuantBase provider. IHistoricalDataProvider quantBase = framework.ProviderManager.GetHistoricalDataProvider(94); if (quantBase.Status == ProviderStatus.Disconnected) { quantBase.Connect(); } // 等待连接成功,订阅太快了不行 while (!quantBase.IsConnected) { Thread.Sleep(1000); } // Load historical trades. Console.WriteLine("Load historical data."); TickSeries ins1TickSeries = framework.DataManager.GetHistoricalTrades(quantBase, ins1, historicalData1EndTime, DateTime.Now); Console.WriteLine("Save historical data."); // Save historical trades. foreach (Trade trade in ins1TickSeries) { framework.DataManager.Save(ins1, trade); } // Set DataSimulator's dates. DataSimulator.DateTime1 = startDate; DataSimulator.DateTime2 = DateTime.Now; // Set null for event filter. framework.EventManager.Filter = null; // Set property for suspend trading during simulation. DoubleMA_Crossover.SuspendTrading = true; // Add 5 minute bars (300 seconds) for trading instruments. BarFactory.Add(ins1, SmartQuant.BarType.Time, barSize); // Run in simulation. Console.WriteLine("Run in Backtest mode."); // Save current strategy mode. StrategyMode mode = framework.StrategyManager.Mode; // Set backtest mode. framework.StrategyManager.Mode = StrategyMode.Backtest; StartStrategy(StrategyMode.Backtest); // Run. Console.WriteLine("Run in {0} mode.", framework.StrategyManager.Mode); // Restore strategy mode. framework.StrategyManager.Mode = mode; // Get provider for realtime. Provider quantRouter = framework.ProviderManager.GetProvider(99) as Provider; if (quantRouter.Status == ProviderStatus.Disconnected) { quantRouter.Connect(); } while (!quantRouter.IsConnected) { Thread.Sleep(1000); } // Set property for trading. DoubleMA_Crossover.SuspendTrading = false; if (framework.StrategyManager.Mode == StrategyMode.Paper) { // Set QuantRouter as data provider. strategy.DataProvider = quantRouter as IDataProvider; } else if (framework.StrategyManager.Mode == StrategyMode.Live) { // Set QuantRouter as data and execution provider. strategy.DataProvider = quantRouter as IDataProvider; strategy.ExecutionProvider = quantRouter as IExecutionProvider; } StartStrategy(framework.StrategyManager.Mode); }