コード例 #1
0
        /// <summary>
        /// Calculate the simple moving average
        /// </summary>
        /// <param name="startTime">The time to start the calculation from</param>
        protected void CalculateSMA(DateTime startTime)
        {
            foreach (var key in Open.Keys.Where(i => i >= startTime))
            {
                switch (AppliesTo)
                {
                case AppliesToEnum.Open:
                {
                    var val = Open.GetPreviousDataValues(key, Period).Sum() / Period;

                    Data["Buffer"][key] = val;

                    break;
                }

                case AppliesToEnum.High:
                {
                    var val = High.GetPreviousDataValues(key, Period).Sum() / Period;

                    Data["Buffer"][key] = val;

                    break;
                }

                case AppliesToEnum.Low:
                {
                    var val = Low.GetPreviousDataValues(key, Period).Sum() / Period;

                    Data["Buffer"][key] = val;

                    break;
                }

                case AppliesToEnum.Close:
                {
                    var val = Close.GetPreviousDataValues(key, Period).Sum() / Period;

                    Data["Buffer"][key] = val;

                    break;
                }

                case AppliesToEnum.MedianPrice:
                {
                    var val = High.GetPreviousDataValues(key, Period).Sum();
                    val += Low.GetPreviousDataValues(key, Period).Sum();
                    val  = val / 2;
                    val  = val / Period;

                    Data["Buffer"][key] = val;

                    break;
                }

                case AppliesToEnum.TypicalPrice:
                {
                    var val = High.GetPreviousDataValues(key, Period).Sum();
                    val += Low.GetPreviousDataValues(key, Period).Sum();
                    val += Close.GetPreviousDataValues(key, Period).Sum();
                    val  = val / 3;
                    val  = val / Period;

                    Data["Buffer"][key] = val;

                    break;
                }

                case AppliesToEnum.WeightedClosePrice:
                {
                    Data["Buffer"][key] = 0;

                    break;
                }
                }
            }
        }