Внесите изменения в исходники!
Atom Ответить
31.10.2013


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

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-х знаков при выводе...

Теги:


Спасибо:




7 Ответов
esper

Фотография
Программист
Дата: 31.10.2013
Ответить


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

Bond

Фотография
Курсы
Дата: 31.10.2013
Ответить


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


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

1) Сделать настраиваемой высоту областей.
2) Добавить в легенду свечей Объем
3) Сделать настраиваемой точность значений.
4) CrossHair точно ни к чему такая точность.
1.png 6,5KB (0) 2.png 3,9KB (0) 3.png 19,4KB (0) Высота.png 99,3KB (0)
Автор топика
Спасибо:

esper

Фотография
Программист
Дата: 31.10.2013
Ответить


Bond Перейти
1) Сделать настраиваемой высоту областей.

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

Bond Перейти
2) Добавить в легенду свечей Объем

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

Bond Перейти
3) Сделать настраиваемой точность значений.
4) CrossHair точно ни к чему такая точность.

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

Bond

Фотография
Курсы
Дата: 31.10.2013
Ответить


esper Перейти
Bond Перейти
1) Сделать настраиваемой высоту областей.

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

Bond Перейти
2) Добавить в легенду свечей Объем

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

Bond Перейти
3) Сделать настраиваемой точность значений.
4) CrossHair точно ни к чему такая точность.

Добавил такой таск, но в настоящее время есть более приоритетные задачи.


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 31.10.2013
Ответить


Bond Перейти

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


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

esper

Фотография
Программист
Дата: 31.10.2013
Ответить


Bond Перейти
1) Я для кого код выше привел???

Тогда поясните ваш код, что значит "// Согласуйте это свойство!"? Это именно свойство, которое вы так же можете задать когда создаете ChartArea, просто в конструкторе задается значение по умолчанию. Еще раз, это свойство дальше привязано к высоте области, но работает не совсем правильно в силу определенных особенностей.
Bond Перейти
2) Это я прекрасно знаю. См. пункт выше.

Вы привели часть кода для MsChart, хотя в багах пишете о SciChart и на скринах он же.
Bond Перейти
3),4) Вы тоже самое отвечали несколько месяцев назад другому пользователю с аналогичной проблемой. Там делов на 5 мин!

Можно ссылку на эту тему?
Спасибо:

Bond

Фотография
Курсы
Дата: 31.10.2013
Ответить


esper Перейти
Bond Перейти
1) Я для кого код выше привел???

Тогда поясните ваш код, что значит "// Согласуйте это свойство!"? Это именно свойство, которое вы так же можете задать когда создаете ChartArea, просто в конструкторе задается значение по умолчанию. Еще раз, это свойство дальше привязано к высоте области, но работает не совсем правильно в силу определенных особенностей.
Bond Перейти
2) Это я прекрасно знаю. См. пункт выше.

Вы привели часть кода для MsChart, хотя в багах пишете о SciChart и на скринах он же.
Bond Перейти
3),4) Вы тоже самое отвечали несколько месяцев назад другому пользователю с аналогичной проблемой. Там делов на 5 мин!

Можно ссылку на эту тему?


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

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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy