← Zurück

Внесите изменения в исходники!

Михаил, ПОЖАЛУЙСТА, внесите изменения в исходники.

SciChartTradeAnnotationBase.cs:


namespace StockSharp.Xaml
{
	using System;

	using Abt.Controls.SciChart;

	using Ecng.Common;

	using StockSharp.BusinessEntities;

	class SciChartTradeAnnotationBase : CustomAnnotation
	{
		private readonly MyTrade _trade;

		public SciChartTradeAnnotationBase(MyTrade trade)
		{
			if (trade == null)
				throw new ArgumentException("trade");

			_trade = trade;
		}

		public string BuySell
		{
			get { return _trade.Trade.OrderDirection.To<string>(); }
		}

		public string TradeVolume
		{
			get { return _trade.Trade.Volume.To<string>(); }
		}

		public string TradePrice
		{
			get { return Math.Round(_trade.Trade.Price, 3).To<string>(); } // Округление до 3-х знаков!
		}
	}
}

ChartArea.cs:


namespace StockSharp.Xaml
{
	using System.Collections.Generic;
	using System.ComponentModel;
	using System.Linq;

	using Ecng.Collections;
	using Ecng.Serialization;

	/// <summary>
	/// Область графика.
	/// </summary>
	[DisplayName("Область графика")]
	public class ChartArea : ChartPart<ChartArea>
	{
		private sealed class ChartElementCollection : BaseList<IChartElement>
		{
		}

		/// <summary>
		/// Создать <see cref="ChartArea"/>.
		/// </summary>
		public ChartArea()
		{
			Elements = new ChartElementCollection();

            Height = 100; // Константа!!!!! Ниже задается значение, задаете, пожалуйста, переменную.
			IsAligned = true;
		}

		private string _title;

		/// <summary>
		/// Название области графика.
		/// </summary>
		[DisplayName("Название")]
		[Description("Название области графика.")]
		[Category("Основное")]
		public string Title
		{
			get { return _title; }
			set
			{
				_title = value;
				RaisePropertyChanged("Title");
			}
		}

		private bool _axisValuesPosition;

		/// <summary>
		/// Расположить значения оси справа.
		/// </summary>
		[DisplayName("Значения оси справа")]
		[Description("Расположить значения оси справа.")]
		[Category("Основное")]
		public bool AxisValuesPosition
		{
			// True - справа (по умолчанию)
			// False - слева
			get { return _axisValuesPosition; }
			set
			{
				_axisValuesPosition = value;
				RaisePropertyChanged("AxisValuesPosition");
			}
		}

		/// <summary>
		/// Высота области.
		/// </summary>
		[Browsable(false)]
		public float Height { get; set; } // Согласуйте это свойство!

		private bool _isAligned;


Chart.xaml.cs:


...............
else
							{
								if (tuple.Second == null || 

tuple.Second.XValue != chartTime)
								{
									var point = new DataPoint

(chartTime, new[]
									{
										(double)candle.LowPrice,
										(double)candle.HighPrice,
										(double)candle.OpenPrice,
										(double)candle.ClosePrice,
                                  (double)candle.TotalVolume // Добавьте, пожалуйста, объем!
									})
									{
										BorderColor = WinColor.DarkSlateGray,
										ToolTip = "{0}{6}O = {1}{6}H = {2}{6}L = {3}{6}C = {4}{6}V = {5}"
											.Put

(candle.OpenTime, candle.OpenPrice, candle.HighPrice, candle.LowPrice, candle.ClosePrice, candle.TotalVolume, Environment.NewLine),							Color = chartCandles.ColorPriceUp.ToWin(),
										BackSecondaryColor = chartCandles.ColorPriceDown.ToWin(),
									};

									tuple.First.Points.Add(point);

									tuple.Second = point;
								}
......................

var tradesElem = elem as ChartTradeElement;

						if (tradesElem != null)
						{
							var trade = (MyTrade)pair.Value;

							var tuple = _tradeSeries[tradesElem];

							if (trade == null)
							{
								tuple.Item1.Points.Add(new DataPoint
								{
									XValue = chartTime,
									YValues = new double[1],
									IsEmpty = true,
								});

								tuple.Item2.Points.Add(new DataPoint
								{
									XValue = chartTime,
									YValues = new double[1],
									IsEmpty = true,
								});
							}
							else
							{
								var point = new DataPoint
								{
									XValue = chartTime,
									YValues = new[] { (double) Math.Round(trade.Trade.Price, 3) }, // Округление до трех знаков после запятой!
									ToolTip = trade.ToString(),
								};
.......................

else
							{
								var point = new DataPoint
								{
									XValue = chartTime,
                                    YValues = new[] { (double)Math.Round(order.Price, 3) }, // Округление до трех знаков после запятой!
									ToolTip = order.ToString(),
								};

								var main = order.Direction == OrderDirections.Buy ? tuple.Item1 : tuple.Item2;
								var oppos = order.Direction == OrderDirections.Buy ? tuple.Item2 : tuple.Item1;

								main.Points.Add(point);
								oppos.Points.Add(new DataPoint
								{
									XValue = chartTime,
									YValues = new double[1],
									IsEmpty = true,
								});

								UpdateMinMax(order.Price);
							}
........................

И я к сожалению не нашел свойства CrossHair для Chart. Там тоже миллион знаков после запятой. Пожалуйста, округлите их тоже максимум до 3-х знаков при выводе...

War dieses Thema hilfreich?

Thema teilen

Kommentare (7)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

esper
esper

Давайте начнем с проблемы, что именно не так сейчас? Зачем мне округлять данные до 3-х знаков, если я торгую валюту и там используется 5-6 знаков?

Bond
Bond Autor

esper: Давайте начнем с проблемы, что именно не так сейчас? Зачем мне округлять данные до 3-х знаков, если я торгую валюту и там используется 5-6 знаков?

Значит нужно сделать этот параметр настраиваемым. Потому что в большинстве такая точность не нужна и графики начинают плохо читаться.

  1. Сделать настраиваемой высоту областей.
  2. Добавить в легенду свечей Объем
  3. Сделать настраиваемой точность значений.
  4. CrossHair точно ни к чему такая точность.
esper
esper

Bond:

  1. Сделать настраиваемой высоту областей. Насколько я помню, эта бага связана с особенностью текущей версии SciChart.

Bond: 2) Добавить в легенду свечей Объем Объем показывается отдельной серией в виде индикатора. Все индикаторы области автоматически показыаются как в легенде, так и в тултипе. Для каждой области своя легенда и тултип.

Bond: 3) Сделать настраиваемой точность значений. 4) CrossHair точно ни к чему такая точность. Добавил такой таск, но в настоящее время есть более приоритетные задачи.

Bond
Bond Autor

esper:

Bond:

  1. Сделать настраиваемой высоту областей. Насколько я помню, эта бага связана с особенностью текущей версии SciChart.

Bond: 2) Добавить в легенду свечей Объем Объем показывается отдельной серией в виде индикатора. Все индикаторы области автоматически показыаются как в легенде, так и в тултипе. Для каждой области своя легенда и тултип.

Bond: 3) Сделать настраиваемой точность значений. 4) CrossHair точно ни к чему такая точность. Добавил такой таск, но в настоящее время есть более приоритетные задачи.

  1. Я для кого код выше привел???
  2. Это я прекрасно знаю. См. пункт выше. 3),4) Вы тоже самое отвечали несколько месяцев назад другому пользователю с аналогичной проблемой. Там делов на 5 мин! Больше похоже на отмазку... Если ничего не делать, то проблемы никуда не денутся.
Mikhail Sukhov
Mikhail Sukhov

Bond:

  1. Я для кого код выше привел???
  2. Это я прекрасно знаю. См. пункт выше. 3),4) Вы тоже самое отвечали несколько месяцев назад другому пользователю с аналогичной проблемой. Там делов на 5 мин! Больше похоже на отмазку... Если ничего не делать, то проблемы никуда не денутся.

Немного ясности внесу. Сейчас готовим версию 4.2. У нас feature freeze. Приоритетная задача - это 4.2. Предположительно еще один месяц на доведение, паблишинт и баг фикс. После этого месяца сразу к вашим таскам. Они висят у меня на стене перед глазами.🙄

esper
esper

Bond:

  1. Я для кого код выше привел??? Тогда поясните ваш код, что значит "// Согласуйте это свойство!"? Это именно свойство, которое вы так же можете задать когда создаете ChartArea, просто в конструкторе задается значение по умолчанию. Еще раз, это свойство дальше привязано к высоте области, но работает не совсем правильно в силу определенных особенностей. Bond:
  2. Это я прекрасно знаю. См. пункт выше. Вы привели часть кода для MsChart, хотя в багах пишете о SciChart и на скринах он же. Bond: 3),4) Вы тоже самое отвечали несколько месяцев назад другому пользователю с аналогичной проблемой. Там делов на 5 мин! Можно ссылку на эту тему?
Bond
Bond Autor

esper:

Bond:

  1. Я для кого код выше привел??? Тогда поясните ваш код, что значит "// Согласуйте это свойство!"? Это именно свойство, которое вы так же можете задать когда создаете ChartArea, просто в конструкторе задается значение по умолчанию. Еще раз, это свойство дальше привязано к высоте области, но работает не совсем правильно в силу определенных особенностей. Bond:
  2. Это я прекрасно знаю. См. пункт выше. Вы привели часть кода для MsChart, хотя в багах пишете о SciChart и на скринах он же. Bond: 3),4) Вы тоже самое отвечали несколько месяцев назад другому пользователю с аналогичной проблемой. Там делов на 5 мин! Можно ссылку на эту тему?

Я просто описал проблемы, которые есть. Про некоторые из них я раньше упоминал. Программирование это такая наука, где одну и туже задачу можно решить разными способами. Вы специалист лучше меня. Если есть проблема, я уверен с ней можно разобраться так или иначе.

П.С. Ссылка на один из постов