private bool SetTickerMetadata(long tickerId, ITimeSeriesMetadata metadata, SqlConnection conn) { bool result = false; SqlCommand cmd = new SqlCommand(); //first checking if TS exists string spName = "[SP_Set_Ticker_Metadata]"; cmd.CommandText = schema + "." + spName; cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = conn; var paramTickerSymbol = new SqlParameter("@IN_Ticker_Id", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Current, tickerId); cmd.Parameters.Add(paramTickerSymbol); var paramTickerMeta = new SqlParameter("@IN_Ticker_Metadata", SqlDbType.Structured); paramTickerMeta.Value = ConvertToTickerMetadata(metadata); paramTickerMeta.TypeName = "TYPE_Ticker_Metadata"; paramTickerMeta.Direction = ParameterDirection.Input; cmd.Parameters.Add(paramTickerMeta); cmd.ExecuteNonQuery(); result = true; return(result); }
private DataTable ConvertToTickerMetadata(ITimeSeriesMetadata data) { DataTable dtFilingData = DataAccessTypes.CreateTickerMetadataTable(); foreach (var k in data.Values.Keys) { DataRow rowFilingData = dtFilingData.NewRow(); rowFilingData["Key"] = k; rowFilingData["Value"] = data.Values[k]; dtFilingData.Rows.Add(rowFilingData); } return(dtFilingData); }
public IQuotesSourceGetQuotesResult GetQuotes(IQuotesSourceGetQuotesParams getQuotesParams) { List <string> tickers = new List <string>(getQuotesParams.Tickers); // if no tickers were provided - importing al available if (tickers.Count == 0) { tickers.AddRange(_tickers.Keys); } DMFX.BLS.Api.BLSApi blsApi = new DMFX.BLS.Api.BLSApi(); IQuotesSourceGetQuotesResult result = new BLSSourceGetQuotesResult(); foreach (var t in tickers) { IQuotesSourceCanImportParams canImportParams = CreateCanImportParams(); canImportParams.Tickers.Add(t); IQuotesSourceCanImportResult canImportRes = CanImport(canImportParams); if (canImportRes.Success) { try { var response = blsApi.Download(_tickers[t].Bls_Code, getQuotesParams.PeriodStart, getQuotesParams.PeriodEnd); IQuotesData qd = new BaseQuotesData(); qd.Country = getQuotesParams.Country; qd.Ticker = _tickers[t].Ticker_Symbol; qd.Name = _tickers[t].Ticker_Name; qd.TimeFrame = GetTimeFrame(response.Timeframe); qd.AgencyCode = s_agencyCode; qd.Unit = EUnit.Value; qd.Type = ETimeSeriesType.Indicator; // adding value records foreach (var q in response.Quotes) { ITimeSeriesRecord tsr = new CustomTimeseriesRecord(qd.Ticker, q.PeriodEnd, q.Value); qd.AddRecord(tsr); } // adding metadata if (_tickers[t].Metadata != null && _tickers[t].Metadata.Count > 0) { ITimeSeriesMetadata metadata = qd.CreateQuotesMetadata(); metadata.Values = _tickers[t].Metadata; qd.Metadata = metadata; } result.QuotesData.Add(qd); } catch (Exception ex) { result.Success = false; result.AddError(EErrorCodes.QuotesSourceFail, EErrorType.Error, ex.Message); } } } result.Success = result.QuotesData.Count > 0; if (result.Success && result.QuotesData.Count <= getQuotesParams.Tickers.Count) { result.AddError(EErrorCodes.QuotesNotFound, EErrorType.Warning, "Not all quotes were found"); } else if (!result.Success) { result.AddError(EErrorCodes.QuotesNotFound, EErrorType.Error, "Requested tickers are not supported or quotes for them not found"); } return(result); }