Exemple #1
0
        public Bars ToLargerScaleInterval(BarScaleInterval scaleIntervalTo)
        {
            if (this.ScaleInterval == scaleIntervalTo)
            {
                return(this);
            }
            this.checkThrowCanConvert(scaleIntervalTo);

            Bars barsConverted = this.CloneNoBars(this.ReasonToExist + "=>[" + scaleIntervalTo + "]", scaleIntervalTo);

            if (this.Count == 0)
            {
                return(barsConverted);
            }

            Bar barFromFirst   = this[0];
            Bar barCompressing = new Bar(this.Symbol, scaleIntervalTo, barFromFirst.DateTimeOpen);              // I'm happy with RoundDateDownInitTwoAuxDates()

            barCompressing.AbsorbOHLCVfrom(barFromFirst);

            for (int i = 1; i < this.Count; i++)
            {
                Bar barEach = this[i];
                if (barEach.DateTimeOpen >= barCompressing.DateTimeNextBarOpenUnconditional)
                {
                    barsConverted.BarAppendBindStatic(barCompressing);
                    barCompressing = new Bar(this.Symbol, scaleIntervalTo, barEach.DateTimeOpen);
                    barCompressing.AbsorbOHLCVfrom(barEach);
                }
                else
                {
                    barCompressing.MergeExpandHLCVwhileCompressingManyBarsToOne(barEach);
                }
            }
            return(barsConverted);
        }
		public Bars ToLargerScaleInterval(BarScaleInterval scaleIntervalTo) {
			if (this.ScaleInterval == scaleIntervalTo) return this;
			this.checkThrowCanConvert(scaleIntervalTo);

			Bars barsConverted = this.CloneNoBars(this.ReasonToExist + "=>[" + scaleIntervalTo + "]", scaleIntervalTo);
			if (this.Count == 0) return barsConverted;
			
			Bar barFromFirst = this[0];
			Bar barCompressing = new Bar(this.Symbol, scaleIntervalTo, barFromFirst.DateTimeOpen);	// I'm happy with RoundDateDownInitTwoAuxDates()
			barCompressing.AbsorbOHLCVfrom(barFromFirst);

			for (int i = 1; i < this.Count; i++) {
				Bar barEach = this[i];
				if (barEach.DateTimeOpen >= barCompressing.DateTimeNextBarOpenUnconditional) {
					barsConverted.BarAppendBindStatic(barCompressing);
					barCompressing = new Bar(this.Symbol, scaleIntervalTo, barEach.DateTimeOpen);
					barCompressing.AbsorbOHLCVfrom(barEach);
				} else {
					barCompressing.MergeExpandHLCVwhileCompressingManyBarsToOne(barEach);
				}
			}
			return barsConverted;
		}