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]; } }
/// <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(); }
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]; } }
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]; } }