示例#1
0
 public MarketDataHandler(string period, bool isAdjustedValue, int priorityStart, int priorityEnd)
 {
     _period          = ConvertStringToBarFrequency(period);
     _isAdjustedValue = isAdjustedValue;
     _priorityStart   = priorityStart;
     _priorityEnd     = priorityEnd;
 }
示例#2
0
        public string GetLatestStockHistoryPrices(string symbols, string frequency, string isadjustedvalue, string datasource)
        {
            try
            {
                string[]     symbolList = symbols.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                BarFrequency freq       = RestfulHelper.ConvertStringToBarFrequency(frequency);

                bool isAdjusted = false;
                if (!string.IsNullOrWhiteSpace(isadjustedvalue))
                {
                    if (!bool.TryParse(isadjustedvalue, out isAdjusted))
                    {
                        return("Error:isAdjustedValue");
                    }
                }

                IDictionary <string, StockBar> result = new MarketDataService().GetLatestStockHistoryPrices(symbolList, freq, isAdjusted, datasource);


                if (result != null && result.Count > 0)
                {
                    result.Values.ToCSV();
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                throw ex;
            }
        }
示例#3
0
        public TVCHistoryResponse GetHistoricalPrices(string symbol, BarFrequency frequency, DateTime from, DateTime to)
        {
            string             freq    = ConvertBarFrequencyToTVCResolution(frequency);
            string             result  = TVCHttpGet(string.Format(TVC_URL_HISTORY, symbol, freq, from.ToUnixDateTime(), to.ToUnixDateTime()));
            TVCHistoryResponse history = JsonConvert.DeserializeObject <TVCHistoryResponse>(result);

            return(history);
        }
示例#4
0
        public bool StoreHistoryPrices(long SID, BarFrequency period, bool isAdjustedValue, Bar[] bars)
        {
            BasicHttpBinding binding  = Utility.BuildBasicHttpBinding();
            EndpointAddress  endpoint = BuildMarketDataSkywolfHttpEndpointAddress();

            using (SkywolfClient <IMarketDataService> skywolf = new SkywolfClient <IMarketDataService>(binding, endpoint))
            {
                return(skywolf.Instance.VA_StorePrices(SID, period, isAdjustedValue, bars));
            }
        }
示例#5
0
 public TVCHistoryResponse TVC_GetHistoricalPrices(string symbol, BarFrequency frequency, DateTime from, DateTime to)
 {
     try
     {
         return((_dataGrabber[DATASOURCE_TVC] as TVCMarketDataGrabber).GetHistoricalPrices(symbol, frequency, from, to));
     }
     catch (Exception ex)
     {
         _Logger.Error(ex);
         throw ex;
     }
 }
示例#6
0
 public bool VA_StorePrices(long SID, BarFrequency frequency, bool isAdjustedValue, Bar[] bars)
 {
     try
     {
         return(new MarketDataDatabase().VA_StorePrices(SID, frequency, isAdjustedValue, bars));
     }
     catch (Exception ex)
     {
         _Logger.Error(ex);
         throw ex;
     }
 }
示例#7
0
        public static BarFrequency ConvertStringToBarFrequency(string freq)
        {
            BarFrequency result = BarFrequency.None;

            switch (freq.Trim().ToUpper())
            {
            case "MN":
                result = BarFrequency.Month1;
                break;

            case "W1":
                result = BarFrequency.Week1;
                break;

            case "D1":
                result = BarFrequency.Day1;
                break;

            case "H4":
                result = BarFrequency.Hour4;
                break;

            case "H1":
                result = BarFrequency.Hour1;
                break;

            case "M30":
                result = BarFrequency.Minute30;
                break;

            case "M15":
                result = BarFrequency.Minute15;
                break;

            case "M5":
                result = BarFrequency.Minute5;
                break;

            case "M1":
                result = BarFrequency.Minute1;
                break;

            case "T":
                result = BarFrequency.Tick;
                break;
            }

            return(result);
        }
示例#8
0
        public static string ConvertBarFrequencyToString(BarFrequency freq)
        {
            string result = string.Empty;

            switch (freq)
            {
            case BarFrequency.Month1:
                result = "MN";
                break;

            case BarFrequency.Week1:
                result = "W1";
                break;

            case BarFrequency.Day1:
                result = "D1";
                break;

            case BarFrequency.Hour4:
                result = "H4";
                break;

            case BarFrequency.Hour1:
                result = "H1";
                break;

            case BarFrequency.Minute30:
                result = "M30";
                break;

            case BarFrequency.Minute15:
                result = "M15";
                break;

            case BarFrequency.Minute5:
                result = "M5";
                break;

            case BarFrequency.Minute1:
                result = "M1";
                break;

            case BarFrequency.Tick:
                result = "T";
                break;
            }

            return(result);
        }
示例#9
0
        public TimeSeriesDataOutput RetrieveStockTimeSeriesPrices(string symbol, BarFrequency period, bool isAjustedValue, long outputCount)
        {
            BasicHttpBinding binding  = Utility.BuildBasicHttpBinding();
            EndpointAddress  endpoint = BuildMarketDataSkywolfHttpEndpointAddress();

            using (SkywolfClient <IMarketDataService> skywolf = new SkywolfClient <IMarketDataService>(binding, endpoint))
            {
                TimeSeriesDataInput input = new TimeSeriesDataInput();
                input.Frequency       = period;
                input.IsAdjustedValue = isAjustedValue;
                input.Symbol          = symbol;
                input.OutputCount     = outputCount;

                return(skywolf.Instance.GetTimeSeriesData(input, DATASOURCE));
            }
        }
示例#10
0
        public string ConvertBarFrequencyToTVCResolution(BarFrequency frequency)
        {
            string freq = "D";

            switch (frequency)
            {
            case BarFrequency.Day1:
                freq = "D";
                break;

            case BarFrequency.Hour1:
                freq = "60";
                break;

            case BarFrequency.Hour4:
                freq = "240";
                break;

            case BarFrequency.Minute1:
                freq = "1";
                break;

            case BarFrequency.Minute15:
                freq = "15";
                break;

            case BarFrequency.Minute30:
                freq = "30";
                break;

            case BarFrequency.Minute5:
                freq = "5";
                break;

            case BarFrequency.Month1:
                freq = "M";
                break;

            case BarFrequency.Week1:
                freq = "W";
                break;
            }

            return(freq);
        }
示例#11
0
        public string TVC_GetHistoricalPrices(string symbol, string frequency, string from, string to)
        {
            BarFrequency freq = RestfulHelper.ConvertStringToBarFrequency(frequency);

            DateTime startDate = DateTime.MinValue;

            if (!string.IsNullOrWhiteSpace(from))
            {
                try
                {
                    startDate = Convert.ToDateTime(from);
                }
                catch (Exception)
                {
                    return("Error:from");
                }
            }
            DateTime endDate = DateTime.Today;

            if (!string.IsNullOrWhiteSpace(to))
            {
                try
                {
                    endDate = Convert.ToDateTime(to);
                }
                catch (Exception)
                {
                    return("Error:to");
                }
            }

            try
            {
                TVCHistoryResponse response = new MarketDataService().TVC_GetHistoricalPrices(symbol, freq, startDate, endDate);
                return(JsonConvert.SerializeObject(response));
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                throw ex;
            }
        }
示例#12
0
        public string GetLatestCryptoHistoryPrices(string symbols, string market, string frequency, string datasource)
        {
            try
            {
                string[]     symbolList = symbols.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                BarFrequency freq       = RestfulHelper.ConvertStringToBarFrequency(frequency);

                IDictionary <string, CryptoBar> result = new MarketDataService().GetLatestCryptoHistoryPrices(symbolList, market, freq, datasource);


                if (result != null && result.Count > 0)
                {
                    return(result.Values.ToCSV());
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                throw ex;
            }
        }
示例#13
0
        public List <DateTime> GetDateTimes(string country, DateTime endDate, int count = 1, BarFrequency freq = BarFrequency.Day1, string type = "STK")
        {
            RefreshCache();

            List <DateTime> dateRange = new List <DateTime>();
            string          key       = country + "-" + type;

            if (_calendarFinalDates.ContainsKey(key))
            {
                DateTime startTime = _calendarStartDates[key];
                DateTime finalTime = _calendarFinalDates[key];

                if (endDate >= startTime && endDate <= finalTime)
                {
                    List <DateTime> allDateRange = null;

                    switch (freq)
                    {
                    case BarFrequency.Day1:
                        allDateRange = _marketOpenDayCache[key];
                        break;

                    case BarFrequency.Minute1:
                        allDateRange = _marketOpenMinCache[key];
                        break;
                    }

                    if (allDateRange != null)
                    {
                        DateTime endDateInRange = (from p in allDateRange
                                                   where p <= endDate
                                                   orderby p descending
                                                   select p).FirstOrDefault();

                        int endDateIdx = allDateRange.IndexOf(endDateInRange);

                        dateRange = allDateRange.GetRange(endDateIdx, count);
                    }
                }
            }

            return(dateRange);
        }
示例#14
0
        public IDictionary <string, CryptoBar> GetLatestCryptoHistoryPrices(string[] symbols, string market, BarFrequency period)
        {
            BasicHttpBinding binding  = Utility.BuildBasicHttpBinding();
            EndpointAddress  endpoint = BuildMarketDataSkywolfHttpEndpointAddress();

            using (SkywolfClient <IMarketDataService> skywolf = new SkywolfClient <IMarketDataService>(binding, endpoint))
            {
                return(skywolf.Instance.GetLatestCryptoHistoryPrices(symbols, market, period, DATASOURCE));
            }
        }
示例#15
0
        public IDictionary <string, StockBar> GetLatestStockHistoryPrices(string[] symbols, BarFrequency period, bool isAdjustedValue)
        {
            int iCount = 0;

            while (iCount < 3)
            {
                try
                {
                    BasicHttpBinding binding  = Utility.BuildBasicHttpBinding();
                    EndpointAddress  endpoint = BuildMarketDataSkywolfHttpEndpointAddress();

                    using (SkywolfClient <IMarketDataService> skywolf = new SkywolfClient <IMarketDataService>(binding, endpoint))
                    {
                        IDictionary <string, StockBar> stockBars = skywolf.Instance.GetLatestStockHistoryPrices(symbols, period, isAdjustedValue, DATASOURCE);

                        ConcurrentDictionary <string, StockBar> dictStockBars = new ConcurrentDictionary <string, StockBar>();

                        if (stockBars != null && stockBars.Count > 0)
                        {
                            foreach (var pair in stockBars)
                            {
                                dictStockBars[pair.Key] = pair.Value;
                            }
                        }

                        return(dictStockBars);
                    }
                }
                catch (Exception ex)
                {
                    if (iCount == 2)
                    {
                        throw ex;
                    }
                    iCount++;
                }
            }

            return(null);
        }
示例#16
0
        public IDictionary <string, CryptoBar> GetLatestCryptoHistoryPrices(string[] symbols, string market, BarFrequency frequency, string datasource)
        {
            if (symbols == null || symbols.Length == 0 || string.IsNullOrEmpty(market))
            {
                return(null);
            }

            IDictionary <string, CryptoBar> output = null;

            try
            {
                if (string.IsNullOrEmpty(datasource))
                {
                    datasource = DATASOURCE_DEFAULT;
                }

                datasource = datasource.Trim().ToLower();

                if (datasource == DATASOURCE_ALPHAVANTAGE)
                {
                    output = new MarketDataDatabase().VA_GetLatestCryptoPrices(symbols, market, frequency);
                }
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                throw ex;
            }

            return(output);
        }
示例#17
0
 public DataTable GetHistory(string now, string country, IEnumerable <string> symbols, string field, BarFrequency freq, int count)
 {
     throw new NotImplementedException();
 }
示例#18
0
        public string GetCryptoHistoryPrices(string symbols, string market, string frequency, string startdate, string enddate, string outputcount, string datasource)
        {
            try
            {
                string[]     symbolList = symbols.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                BarFrequency freq       = RestfulHelper.ConvertStringToBarFrequency(frequency);
                DateTime?    start      = null;

                if (!string.IsNullOrWhiteSpace(startdate))
                {
                    try
                    {
                        start = Convert.ToDateTime(startdate);
                    }
                    catch (Exception)
                    {
                        return("Error:startDate");
                    }
                }
                DateTime?end = null;
                if (!string.IsNullOrWhiteSpace(enddate))
                {
                    try
                    {
                        end = Convert.ToDateTime(enddate);
                    }
                    catch (Exception)
                    {
                        return("Error:endDate");
                    }
                }
                int count = 0;

                if (!string.IsNullOrWhiteSpace(outputcount))
                {
                    if (!int.TryParse(outputcount, out count))
                    {
                        return("Error:outputCount");
                    }
                }

                IDictionary <string, CryptoBar[]> result = new MarketDataService().GetCryptoHistoryPrices(symbolList, market, freq, start, end, count, datasource);

                StringBuilder resultBuilder = new StringBuilder();

                if (result != null && result.Count > 0)
                {
                    foreach (string s in symbolList)
                    {
                        resultBuilder.AppendLine("<symbol>");
                        resultBuilder.AppendLine(s);
                        resultBuilder.AppendLine("</symbol>");
                        CryptoBar[] cryptoBars = null;
                        resultBuilder.AppendLine("<data>");

                        if (result.TryGetValue(s, out cryptoBars) && cryptoBars != null)
                        {
                            resultBuilder.Append(cryptoBars.ToCSV());
                        }
                        resultBuilder.AppendLine("</data>");
                    }
                }

                return(resultBuilder.ToString());
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                throw ex;
            }
        }
示例#19
0
        public IDictionary <string, StockBar> GetLatestStockHistoryPrices(string[] symbols, BarFrequency frequency, bool isAdjustedValue, string datasource)
        {
            if (symbols == null || symbols.Length == 0)
            {
                return(null);
            }

            IDictionary <string, StockBar> output = null;

            try
            {
                if (string.IsNullOrEmpty(datasource))
                {
                    datasource = DATASOURCE_DEFAULT;
                }

                datasource = datasource.Trim().ToLower();

                if (datasource == DATASOURCE_ALPHAVANTAGE)
                {
                    output = new MarketDataDatabase().VA_GetLatestStockPrices(symbols, frequency, isAdjustedValue);
                }
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                throw ex;
            }

            return(output);
        }