Ejemplo n.º 1
0
        private static Duration CalculateDuration(int barPeriod, BarStructure barStructure)
        {
            Debug.PositiveInt32(barPeriod, nameof(barPeriod));

            switch (barStructure)
            {
            case BarStructure.Tick:
                return(Duration.Zero);

            case BarStructure.Second:
                return(Duration.FromSeconds(barPeriod));

            case BarStructure.Minute:
                return(Duration.FromMinutes(barPeriod));

            case BarStructure.Hour:
                return(Duration.FromHours(barPeriod));

            case BarStructure.Day:
                return(Duration.FromDays(barPeriod));

            case BarStructure.TickImbalance:
            case BarStructure.Undefined:
            case BarStructure.Volume:
            case BarStructure.VolumeImbalance:
            case BarStructure.Dollar:
            case BarStructure.DollarImbalance:
                goto default;

            default:
                throw ExceptionFactory.InvalidSwitchArgument(barStructure, nameof(barStructure));
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BarSpecification"/> class.
        /// </summary>
        /// <param name="period">The specification period.</param>
        /// <param name="barStructure">The specification resolution.</param>
        /// <param name="priceType">The specification quote type.</param>
        /// <exception cref="ArgumentOutOfRangeException">If the period is not positive (> 0).</exception>
        public BarSpecification(
            int period,
            BarStructure barStructure,
            PriceType priceType)
        {
            Debug.PositiveInt32(period, nameof(period));

            this.Period       = period;
            this.BarStructure = barStructure;
            this.PriceType    = priceType;
            this.Duration     = CalculateDuration(period, barStructure);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Returns a bar volumes key from the given arguments.
 /// </summary>
 /// <param name="symbol">The symbol for the key.</param>
 /// <param name="barStructure">The bar structure for the key.</param>
 /// <param name="priceType">The price type for the key.</param>
 /// <returns>A key string.</returns>
 internal static string GetBarVolumesKey(Symbol symbol, BarStructure barStructure, PriceType priceType)
 {
     return($"{BarsNamespace}:{symbol.Venue.Value}:{symbol.Code}:{barStructure.ToString()}:{priceType.ToString()}:Volumes");
 }