Esempio n. 1
0
        public void AddPoint(PointF ptScreen, bool buySide)
        {
            var ptWorld = Conversion.ScreenToWorld(new PointD(ptScreen.X, ptScreen.Y),
                                                   Owner.WorldRect, Owner.CanvasRect);
            var side = buySide ? DealType.Buy : DealType.Sell;
            // определить время с точностью до минуты
            var timeOpen     = Chart.StockSeries.GetCandleOpenTimeByIndex((int)ptWorld.X);
            var timeNext     = Chart.StockSeries.GetCandleOpenTimeByIndex((int)ptWorld.X + 1);
            var deltaMinutes = (timeNext - timeOpen).TotalMinutes;
            var time         = timeOpen.AddMinutes(deltaMinutes * (ptWorld.X - (int)ptWorld.X));
            // вход для этого выхода
            var enterMarket =
                data.FirstOrDefault(m => m.MarkerType == DealMarker.DealMarkerType.Вход && !m.exitPair.HasValue);
            // новый объект
            var dm = new DealMarker(Chart, data,
                                    DealMarker.DealMarkerType.Вход, side, ptWorld.X, ptWorld.Y, time)
            {
                Owner = this
            };

            if (Owner.Owner.Owner.AdjustObjectColorsOnCreation)
            {
                dm.AjustColorScheme(Owner.Owner.Owner);
            }
            // закрыть пару и проставить ссылку на выход из сделки
            if (enterMarket != null)
            {
                dm.MarkerType        = DealMarker.DealMarkerType.Выход;
                dm.Side              = enterMarket.Side;
                enterMarket.exitPair = dm.id;
            }

            data.Add(dm);
        }
Esempio n. 2
0
        public void AddPoint(PointF ptScreen, bool buySide)
        {
            var ptWorld = Conversion.ScreenToWorld(new PointD(ptScreen.X, ptScreen.Y),
                                                        Owner.WorldRect, Owner.CanvasRect);
            var side = buySide ? DealType.Buy : DealType.Sell;
            // определить время с точностью до минуты
            var timeOpen = Chart.StockSeries.GetCandleOpenTimeByIndex((int) ptWorld.X);
            var timeNext = Chart.StockSeries.GetCandleOpenTimeByIndex((int)ptWorld.X + 1);
            var deltaMinutes = (timeNext - timeOpen).TotalMinutes;
            var time = timeOpen.AddMinutes(deltaMinutes*(ptWorld.X - (int) ptWorld.X));
            // вход для этого выхода
            var enterMarket =
                data.FirstOrDefault(m => m.MarkerType == DealMarker.DealMarkerType.Вход && !m.exitPair.HasValue);
            // новый объект
            var dm = new DealMarker(Chart, data,
                DealMarker.DealMarkerType.Вход, side, ptWorld.X, ptWorld.Y, time) { Owner = this };
            if (Owner.Owner.Owner.AdjustObjectColorsOnCreation)
                dm.AjustColorScheme(Owner.Owner.Owner);
            // закрыть пару и проставить ссылку на выход из сделки
            if (enterMarket != null)
            {
                dm.MarkerType = DealMarker.DealMarkerType.Выход;
                dm.Side = enterMarket.Side;
                enterMarket.exitPair = dm.id;
            }

            data.Add(dm);
        }