Пример #1
0
        private void MergeCycle(double[] ODATE, int[] NEWDATE, double[] CLOSE, double[] ADJCLOSE, double[] ht, double[] htCycle, MergeCycleType mct, bool DoAdjust)
        {
            int Last = -1;
            int j    = -1;

            for (int i = 0; i < ODATE.Length; i++)
            {
                double Factor = 1;
                if (DoAdjust)
                {
                    Factor = ADJCLOSE[i] / CLOSE[i];
                }
                if (Last != NEWDATE[i])
                {
                    j++;
                    htCycle[j] = ht[i] * Factor;
                }
                else
                {
                    if (mct == MergeCycleType.HIGH)
                    {
                        htCycle[j] = Math.Max(htCycle[j], ht[i] * Factor);
                    }
                    else if (mct == MergeCycleType.LOW)
                    {
                        htCycle[j] = Math.Min(htCycle[j], ht[i] * Factor);
                    }
                    else if (mct == MergeCycleType.CLOSE)
                    {
                        htCycle[j] = ht[i] * Factor;
                    }
                    else if (mct == MergeCycleType.ADJCLOSE)
                    {
                        htCycle[j] = ht[i] / Factor;
                    }
                    else if (mct != MergeCycleType.OPEN)
                    {
                        htCycle[j] += ht[i] * Factor;
                    }
                }
                Last = NEWDATE[i];
            }
        }
Пример #2
0
 /// <summary>
 /// Set the groupping method for DataType, sample SetGroupping("DATE",MergeCycleType.SUM);
 /// </summary>
 /// <param name="DataType"></param>
 /// <param name="mct"></param>
 public void SetGroupping(string DataType, MergeCycleType mct)
 {
     htGroupping[DataType] = mct;
     htAllCycle.Clear();
 }
Пример #3
0
        private void MergeCycle(double[] ODATE, int[] NEWDATE, double[] CLOSE, double[] ADJCLOSE, double[] ht, double[] htCycle, MergeCycleType mct, bool DoAdjust)
        {
            int Last = -1;
            int j    = -1;

            for (int i = 0; i < ODATE.Length; i++)
            {
                double Factor = 1;
                if (DoAdjust && ADJCLOSE != null)
                {
                    Factor = ADJCLOSE[i] / CLOSE[i];
                }
                double d = ht[i] * Factor;
                if (Factor != 1)
                {
                    d = Math.Round(d, 2);
                }
                if (Last != NEWDATE[i])
                {
                    j++;
                    htCycle[j] = d;
                }
                else
                {
                    if (!double.IsNaN(d))
                    {
                        if (mct == MergeCycleType.HIGH)
                        {
                            htCycle[j] = Max(htCycle[j], d);
                        }
                        else if (mct == MergeCycleType.LOW)
                        {
                            htCycle[j] = Min(htCycle[j], d);
                        }
                        else if (mct == MergeCycleType.CLOSE)
                        {
                            htCycle[j] = d;
                        }
                        else if (mct == MergeCycleType.ADJCLOSE)
                        {
                            htCycle[j] = ht[i];
                        }
                        else if (mct == MergeCycleType.OPEN)
                        {
                            htCycle[j] = First(htCycle[j], d);
                        }
                        else
                        {
                            htCycle[j] = Sum(htCycle[j], d);
                        }
                    }
                }
                Last = NEWDATE[i];
            }
        }
Пример #4
0
        private void MergeCycle(double[] ODATE, int[] NEWDATE, double[] CLOSE, double[] ADJCLOSE, double[] ht, double[] htCycle, MergeCycleType mct, bool DoAdjust)
        {
            int num   = -1;
            int index = -1;

            for (int i = 0; i < ODATE.Length; i++)
            {
                double num4 = 1.0;
                if (DoAdjust && (ADJCLOSE != null))
                {
                    num4 = ADJCLOSE[i] / CLOSE[i];
                }
                double d = ht[i] * num4;
                if (num != NEWDATE[i])
                {
                    index++;
                    htCycle[index] = d;
                }
                else if (!double.IsNaN(d))
                {
                    if (mct == MergeCycleType.HIGH)
                    {
                        htCycle[index] = this.Max(htCycle[index], d);
                    }
                    else if (mct == MergeCycleType.LOW)
                    {
                        htCycle[index] = this.Min(htCycle[index], d);
                    }
                    else if (mct == MergeCycleType.CLOSE)
                    {
                        htCycle[index] = d;
                    }
                    else if (mct == MergeCycleType.ADJCLOSE)
                    {
                        htCycle[index] = ht[i] / num4;
                    }
                    else if (mct == MergeCycleType.OPEN)
                    {
                        htCycle[index] = this.First(htCycle[index], d);
                    }
                    else
                    {
                        htCycle[index] = this.Sum(htCycle[index], d);
                    }
                }
                num = NEWDATE[i];
            }
        }