示例#1
0
        /// <summary>
        /// Set the Filler Strategy to Custom Value
        /// </summary>
        /// <param name="bidAskValue"></param>
        /// <returns>BidAskQuery</returns>
        public BidAskQuery WithFillCustomValue(BidAskValue bidAskValue)
        {
            _queryParamaters.FillerKindType = FillerKindType.CustomValue;
            _queryParamaters.FillerConfig.FillerBidAskDV = bidAskValue;

            return(this);
        }
示例#2
0
        /// <summary>
        /// BidAsk AddData
        /// </summary>
        /// <remarks>
        /// Add Data on to the curve with Instant
        /// </remarks>
        /// <returns>AddBidAskOperationResult</returns>
        public AddBidAskOperationResult AddData(Instant time, string product, BidAskValue value)
        {
            if (!_entity.OriginalGranularity.IsTimeGranularity())
            {
                throw new BidAskException("This MarketData has Date granularity. Use AddData(LocalDate date...)");
            }

            return(_addBidAsk(time.InUtc().LocalDateTime, product, value));
        }
示例#3
0
        /// <summary>
        /// BidAsk AddData
        /// </summary>
        /// <remarks>
        /// Add Data on to the curve with localDate
        /// </remarks>
        /// <returns>AddBidAskOperationResult</returns>
        public AddBidAskOperationResult AddData(LocalDate localDate, string product, BidAskValue value)
        {
            if (_entity.OriginalGranularity.IsTimeGranularity())
            {
                throw new BidAskException("This MarketData has Time granularity. Use AddData(Instant time...)");
            }

            return(_addBidAsk(localDate.AtMidnight(), product, value));
        }
示例#4
0
        private AddBidAskOperationResult _addBidAsk(LocalDateTime reportTime, string product, BidAskValue value)
        {
            //Relative products
            if (Regex.IsMatch(product, @"\+\d+$"))
            {
                throw new NotSupportedException("Relative Products are not supported");
            }

            if (_entity.OriginalGranularity.IsTimeGranularity())
            {
                var period = ArtesianUtils.MapTimePeriod(_entity.OriginalGranularity);
                if (!reportTime.IsStartOfInterval(period))
                {
                    throw new BidAskException("Trying to insert Report Time {0} with the wrong format to BidAsk {1}. Should be of period {2}", reportTime, _identifier, period);
                }
            }
            else
            {
                var period = ArtesianUtils.MapDatePeriod(_entity.OriginalGranularity);
                if (!reportTime.IsStartOfInterval(period))
                {
                    throw new BidAskException("Trying to insert Report Time {0} with wrong the format to BidAsk {1}. Should be of period {2}", reportTime, _identifier, period);
                }
            }


            if (BidAsks.Any(row => row.ReportTime == reportTime && row.Product.Equals(product)))
            {
                return(AddBidAskOperationResult.ProductAlreadyPresent);
            }

            BidAsks.Add(new BidAskElement(reportTime, product, value));
            return(AddBidAskOperationResult.BidAskAdded);
        }
示例#5
0
 /// <summary>
 /// BidAskElement constructor
 /// </summary>
 public BidAskElement(LocalDateTime reportTime, string product, BidAskValue value)
 {
     ReportTime = reportTime;
     Product    = product;
     Value      = value;
 }