Esempio n. 1
0
        public string GetToolTip()
        {
            DealMarker enter = MarkerType == DealMarkerType.Вход
                    ? this
                    : markers.Find(m => m.exitPair.HasValue ? m.exitPair.Value == id : false);
            DealMarker exit =
                MarkerType == DealMarkerType.Вход
                ? exitPair.HasValue ? markers.Find(m => m.id == exitPair.Value) : null
                : this;

            string strPriceExit = "?", strTimeExit = "?", strResult = "-";
            string strPriceEnter = enter.Price.ToString("f4");
            string strTimeEnter  = enter.Time.ToString("dd.MM.yy HH:mm");

            if (exit != null)
            {
                strPriceExit = exit.Price.ToString("f4");
                strTimeExit  = exit.Time.ToString("dd.MM.yy HH:mm");
                var delta       = (int)enter.Side * (exit.Price - enter.Price);
                var deltaPoints = DalSpot.Instance.GetPointsValue(owner.Symbol, (decimal)delta);
                strResult = deltaPoints.ToString("f1");
            }
            var sb = new StringBuilder();

            sb.AppendLine(string.Format("{0} - {1}", strPriceEnter, strPriceExit));
            sb.AppendLine(string.Format("{0} - {1}", strTimeEnter, strTimeExit));
            sb.AppendLine(string.Format("{0} пп", strResult));
            return(sb.ToString());
        }
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);
        }
Esempio n. 3
0
        public override IChartInteractiveObject LoadObject(XmlElement objectNode, CandleChartControl owner, bool trimObjectsOutOfHistory = false)
        {
            var obj = new DealMarker(Chart, data);

            obj.LoadFromXML(objectNode, owner);
            obj.Owner = this;
            data.Add(obj);
            return(obj);
        }
Esempio n. 4
0
 public override IChartInteractiveObject LoadObject(XmlElement objectNode, CandleChartControl owner, bool trimObjectsOutOfHistory = false)
 {
     var obj = new DealMarker(Chart, data);
     obj.LoadFromXML(objectNode, owner);
     obj.Owner = this;
     data.Add(obj);
     return obj;
 }
Esempio n. 5
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);
        }
        private void ShowOrders(List<MarketOrder> orders, CandleChartControl chart)
        {
            var markers = new List<DealMarker>();
            foreach (var order in orders)
            {
                var isSo = !string.IsNullOrEmpty(order.Comment) &&
                    (order.Comment.Contains("stopout") || order.Comment.Contains("[so]"));
                var candleIndex = chart.chart.StockSeries.GetDoubleIndexByTime(order.TimeEnter);

                var title = string.Format("#{0} {1} {2} @ {3}",
                    order.ID, order.Side > 0 ? "BUY" : "SELL", order.Symbol,
                    order.PriceExit.Value.ToStringUniformPriceFormat(true));

                var resultComment = !order.IsClosed
                    ? ""
                    : string.Format(" - {0}, {1} USD",
                        order.PriceExit.Value.ToStringUniformPriceFormat(true),
                        order.ResultDepo.ToStringUniformMoneyFormat());
                var comment = string.Format("#{0} {1} {2} {3} @{4}{5}",
                    order.ID, order.Side > 0 ? "BUY" : "SELL", order.Volume, order.Symbol,
                    order.PriceEnter.ToStringUniformPriceFormat(true), resultComment);

                var enterSign = new DealMarker(chart.chart, markers,
                    DealMarker.DealMarkerType.Вход, (DealType) order.Side, candleIndex, order.PriceEnter,
                    order.TimeEnter)
                {
                    Comment = comment,
                    ColorText = isSo ? Color.Red : Color.Black,
                    Name = title
                };
                markers.Add(enterSign);
                chart.seriesMarker.data.Add(enterSign);

                if (order.TimeExit.HasValue)
                {
                    var candleExitIndex = chart.chart.StockSeries.GetDoubleIndexByTime(order.TimeExit.Value);
                    var exitSign = new DealMarker(chart.chart, markers,
                        DealMarker.DealMarkerType.Выход, (DealType) order.Side, candleExitIndex, order.PriceExit.Value,
                        order.TimeExit.Value)
                    {
                        Comment = comment,
                        ColorText = isSo ? Color.Red : Color.Black,
                        Name = title
                    };
                    enterSign.exitPair = exitSign.id;
                    markers.Add(exitSign);
                    chart.seriesMarker.data.Add(exitSign);
                }
            }
        }