Пример #1
0
        public iBars(IBarsData barsData)
        {
            _barsData = barsData;

            ISession session = barsData as ISession;

            if (session == null)
            {
                throw (new ArgumentException("Parameter is not a ISession", "barsData"));
            }
            _sessionSource = new SessionSource(session.Session);

            int bLenght = Math.Min(Math.Max(300, _barsData.Count), 2000);

            _buffer = new Bar[bLenght];
            Trace.WriteLine(string.Format("Initialize bars buffer: size={0}", bLenght));

            _fxClose    = new FxClose(this);
            _fxHigh     = new FxHigh(this);
            _fxLow      = new FxLow(this);
            _fxOpen     = new FxOpen(this);
            _fxMedian   = new FxMedian(this);
            _fxTypical  = new FxTypical(this);
            _fxWeighted = new FxWeighted(this);
        }
Пример #2
0
 internal RateData(iBars ibars, ValueType valueType)
 {
     _barsData  = ibars._barsData;
     _owner     = ibars;
     _items     = new ItemCollection(this, ibars.BarsData, valueType);
     _valueType = valueType;
 }
Пример #3
0
        /// <summary>
        /// Пример:
        /// iMACD macd = new i
        ///
        /// </summary>
        /// <param name="barsData"></param>

        public void CreateInstance(IBarsData barsData)
        {
            // iMACD macd = new iMACD(
            if (this.Constructors.Length == 0)
            {
                throw(new Exception(string.Format("Public constructor in {0} not found", this.ClassType.FullName)));
            }

            // ClassConstructor constructor = Constructors[if];
        }
Пример #4
0
        public void CreateInstance(IBarsData data)
        {
            object[] parameters = CreateParameters(_parameters, data);

            _currentInstance = Activator.CreateInstance(_indicatorType, parameters) as Indicator;

            foreach (IndFunctionInfo finfo in _functions)
            {
                finfo.JoinFunction(_currentInstance);
            }
        }
Пример #5
0
        public IFunction CreateInstance(IBarsData data)
        {
            IFunction instance = null;

            //if (_type == typeof(Close)) {
            //  instance = new Close(data);
            //} else {
            //  object[] parameters = IndicatorInfo.CreateParameters(_parameters, data);

            //  instance = Activator.CreateInstance(_type, parameters) as IFunction;
            //}
            return(instance);
        }
Пример #6
0
        protected override void OnCalculateScale()
        {
            int countTick  = this.Owner.Owner.Symbol.Ticks.Count;
            int beginIndex = this.Owner.HorizontalScale.Position;

            if (_savedCountTick == countTick && _savedPosition == beginIndex && _savedWidth == this.Owner.Width)
            {
                return;
            }
            _savedCountTick = countTick;
            _savedPosition  = beginIndex;
            _savedWidth     = this.Owner.Width;

            int       endIndex = beginIndex + this.Owner.HorizontalScale.CountBarView;
            IBarsData bars     = this.Owner.Owner.Bars;
            int       countBar = bars.Count;


            endIndex = Math.Min(endIndex, countBar);
            if (endIndex - beginIndex == 0)
            {
                return;
            }

            iBars ibars = this.Owner.Owner.iBars;

            float min = float.MaxValue;
            float max = float.MinValue;

            for (int i = beginIndex; i < endIndex; i++)
            {
                Bar bar = ibars.GetBar(i);
                min = Math.Min(bar.Low, min);
                max = Math.Max(bar.High, max);
            }
            this.Owner.VerticalScale.SetScaleValue(min, max, this.Owner.Owner.Symbol.Digits);
        }
Пример #7
0
        protected override void OnCalculateScale()
        {
            IBarsData bars = this.Owner.Owner.Bars;

            if (_currentIV == null ||
                _currentIV.TimeFrame.Second != this.Owner.Owner.Bars.TimeFrame.Second)
            {
                _views.TryGetValue(bars.TimeFrame.Second, out _currentIV);
                if (_currentIV == null)
                {
                    ParameterCollection inputs = new ParameterCollection();
                    inputs.AddRange(_classBuilder.Parameters);

                    Parameter iBarsParam = inputs["iBars"];

                    if (iBarsParam == null)
                    {
                        iBarsParam = new Parameter(this.iBars, "iBars");
                        inputs.Add(iBarsParam);
                    }

                    iBarsParam.Value = this.iBars;

                    Indicator indicator = _classBuilder.CreateInstance(inputs.ToArray()) as Indicator;

                    PropertyInfo[] properties = _classBuilder.ClassType.GetProperties();

                    List <FunctionViewInfo> functions = new List <FunctionViewInfo>();
                    foreach (PropertyInfo property in properties)
                    {
                        FunctionViewInfo fview = new FunctionViewInfo(property);
                        if ((int)fview.Error == -1)
                        {
                            functions.Add(fview);
                            fview.Join(indicator);
                        }
                    }
                    _currentIV = new IndicatorView(bars.TimeFrame, indicator, functions.ToArray());
                    _views.Add(bars.TimeFrame.Second, _currentIV);
                }
                _savedCountTick = -1;
            }

            int countTick  = this.Owner.Owner.Symbol.Ticks.Count;
            int beginIndex = this.Owner.HorizontalScale.Position;

            if (_savedCountTick == countTick && _savedPosition == beginIndex && _savedWidth == this.Owner.Width)
            {
                return;
            }
            _savedCountTick = countTick;
            _savedPosition  = beginIndex;
            _savedWidth     = this.Owner.Width;

            int cntBarW  = this.Owner.HorizontalScale.CountBarView;
            int endIndex = beginIndex + cntBarW;
            int countBar = bars.Count;

            this.iBars.Limit = this.LimitCompute;
            this.iBars.SetLimit(beginIndex, cntBarW);

            endIndex = Math.Min(endIndex, countBar);
            if (endIndex - beginIndex == 0)
            {
                return;
            }

            float min = float.MaxValue;
            float max = float.MinValue;

            FunctionViewInfo[] fvs = _currentIV.FunctionsView;
            float val = float.NaN;

            for (int j = 0; j < fvs.Length; j++)
            {
                Function f = fvs[j].Function as Function;
                f.NativeCompute();
                for (int i = beginIndex; i < endIndex; i++)
                {
                    val = f.NativeGetItem(i);
                    if (!float.IsNaN(val))
                    {
                        min = Math.Min(min, val);
                        max = Math.Max(max, val);
                    }
                }
            }
            this.Owner.VerticalScale.SetScaleValue(min, max, this.Owner.Owner.Symbol.Digits);
        }
Пример #8
0
 public ItemCollection(RateData owner, IBarsData bars, ValueType valueType)
 {
     _owner     = owner;
     _bars      = bars;
     _valueType = valueType;
 }
Пример #9
0
        protected override void OnPaint(ChartGraphics g)
        {
            int       beginIndex = this.Owner.HorizontalScale.Position;
            int       endIndex   = beginIndex + this.Owner.HorizontalScale.CountBarView;
            IBarsData bars       = this.Owner.Owner.Bars;
            int       countBar   = bars.Count;

            endIndex = Math.Min(endIndex, countBar);
            g.SelectPen(this.Color);
            GdiBrush brushUp   = g.SelectBrush(ColorUp);
            GdiBrush brushDown = g.SelectBrush(ColorDown);

            int barWidth = 0;

            switch (this.Owner.HorizontalScale.Zoom)
            {
            case ChartBox.ChartHorizontalScale.HorizontalZoom.Smaller:
            case ChartBox.ChartHorizontalScale.HorizontalZoom.Small:
                barWidth = 0;
                break;

            case ChartBox.ChartHorizontalScale.HorizontalZoom.Medium:
                barWidth = 2;
                break;

            case ChartBox.ChartHorizontalScale.HorizontalZoom.Larger:
                barWidth = 4;
                break;

            case ChartBox.ChartHorizontalScale.HorizontalZoom.Large:
                barWidth = 10;
                break;

            case ChartBox.ChartHorizontalScale.HorizontalZoom.BigLarge:
                barWidth = 24;
                break;
            }

            iBars ibars = this.Owner.Owner.iBars;

            for (int i = beginIndex; i < endIndex; i++)
            {
                Bar bar = ibars.GetBar(i);

                int x     = this.Owner.HorizontalScale.GetX(i);
                int yLow  = this.GetY(bar.Low);
                int yHigh = this.GetY(bar.High);

                if (_barsStyle != FigureBarsStyle.Line)
                {
                    g.DrawLine(x, yLow, x, yHigh);

                    if (barWidth == 0)
                    {
                        continue;
                    }

                    int yClose = this.GetY(bar.Close);
                    int yOpen  = this.GetY(bar.Open);

                    int barWD = barWidth / 2;

                    int x1 = x - barWD, h = 0, y = 0;

                    if (bar.Close > bar.Open)
                    {
                        h = yOpen - yClose;
                        y = yClose;
                        g.FillRectangleExt(brushUp, x1, y, barWidth, h);
                    }
                    else if (bar.Close < bar.Open)
                    {
                        h = yClose - yOpen;
                        y = yOpen;
                        g.FillRectangleExt(brushDown, x1, y, barWidth, h);
                    }

                    if (h > 0)
                    {
                        g.DrawRectangle(x1, y, barWidth, h);
                    }
                }
                else
                {
                }
            }
        }
Пример #10
0
        public static object[] CreateParameters(ParameterCollection parameterInfoCollection, IBarsData data)
        {
            object[] retParameters = new object[parameterInfoCollection.Count];
            int      i             = 0;

            foreach (Parameter param in parameterInfoCollection)
            {
                //if (param.FunctionDataType != null) {

                //  FunctionInfo fi = new FunctionInfo(param.FunctionDataType);
                //  retParameters[i] = fi.CreateInstance(data);
                //} else {
                //  retParameters[i] = param.Value;
                //}

                i++;
            }
            return(retParameters);
        }