Beispiel #1
0
        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);
        }
Beispiel #2
0
 public HistoricalDataEventArgs(string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base()
 {
     this.RequestId  = requestId;
     this.Instrument = instrument;
     this.Provider   = provider;
     this.DataLength = dataLength;
 }
Beispiel #3
0
 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 HistoricalDataEventArgs(string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base()
		{
			this.RequestId = requestId;
			this.Instrument = instrument;
			this.Provider = provider;
			this.DataLength = dataLength;
		}
Beispiel #5
0
        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;
        }
Beispiel #6
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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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());
        }
Beispiel #14
0
		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;
		}
Beispiel #15
0
        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);
        }
Beispiel #16
0
        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);
        }
Beispiel #17
0
        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());
        }
Beispiel #18
0
        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;
 }
Beispiel #20
0
 public HistoricalDataGetter(IHistoricalDataProvider provider, HistoricalDataRequest request)
 {
     this.provider = provider;
     this.request = request;
 }
Beispiel #21
0
		public HistoricalBarEventArgs(Bar bar, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base(requestId, instrument, provider, dataLength)
		{
			this.Bar = bar; 
		}
Beispiel #22
0
 public HistoricalDataGetter(IHistoricalDataProvider provider, HistoricalDataRequest request)
 {
     this.provider = provider;
     this.request  = request;
 }
		public HistoricalQuoteEventArgs(Quote quote, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength)
			: base(requestId, instrument, provider, dataLength)
		{
			this.Quote = quote; 
		}
Beispiel #24
0
        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();
            }
        }
Beispiel #25
0
 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);
 }
Beispiel #26
0
 public TickSeries GetHistoricalTrades(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2) => GetHistoricalTicks(provider, TickType.Trade, instrument, dateTime1, dateTime2);
Beispiel #27
0
 public QuoteSeries GetHistoricalQuotes(IHistoricalDataProvider provider, Instrument instrument) => GetHistoricalQuotes(provider, instrument, DateTime.MinValue, DateTime.MaxValue);
Beispiel #28
0
 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();
 }
Beispiel #29
0
        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;
 }
Beispiel #32
0
        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 HistoricalBarEventArgs(Bar bar, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength) : base(requestId, instrument, provider, dataLength)
 {
     this.Bar = bar;
 }
Beispiel #34
0
 public HistoricalQuoteEventArgs(Quote quote, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength)
     : base(requestId, instrument, provider, dataLength)
 {
     this.Quote = quote;
 }
Beispiel #35
0
        /// <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);
        }
Beispiel #36
0
 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 HistoricalMarketDepthEventArgs(MarketDepth marketDepth, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength)
			: base(requestId, instrument, provider, dataLength)
		{
			this.MarketDepth = marketDepth;
		}
Beispiel #38
0
 internal HistoricalDataProvider(IHistoricalDataProvider provider) : base(provider)
 {
 }
Beispiel #39
0
		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; 
		}
Beispiel #41
0
 public TickSeries GetHistoricalTrades(IHistoricalDataProvider provider, Instrument instrument, DateTime dateTime1, DateTime dateTime2) => GetHistoricalTicks(provider, TickType.Trade, instrument, dateTime1, dateTime2);
		public HistoricalDataErrorEventArgs(string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength, string message)
			: base(requestId, instrument, provider, dataLength)
		{
			this.Message = message; 
		}
Beispiel #43
0
 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;
 }
Beispiel #44
0
 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;
 }
Beispiel #45
0
        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;
        }
Beispiel #46
0
    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;
    }
Beispiel #47
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;
 }
Beispiel #48
0
 public QuoteSeries GetHistoricalQuotes(IHistoricalDataProvider provider, Instrument instrument) => GetHistoricalQuotes(provider, instrument, DateTime.MinValue, DateTime.MaxValue);
Beispiel #49
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;
 }
Beispiel #50
0
        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 HistoricalTradeEventArgs(Trade trade, string requestId, IFIXInstrument instrument, IHistoricalDataProvider provider, int dataLength)
     : base(requestId, instrument, provider, dataLength)
 {
     this.Trade = trade;
 }
Beispiel #52
0
        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);
        }