Chart 4.2.3.8 - отображение свечей и индикаторов в разных ChartArea
Atom Ответить
15.06.2014


Добрый вечер!

Столкнулся с проблемой временной шкалой при отображении графиков и индикаторов.

Создаю 3 ChartArea на графике CandlesChart
- candlesDealsArea для отображения свечей и собственных сделок
- indicatorOneArea для отображения индикатора "Один"
- indicatorTwoArea для отображения индикатора "Два"
Код
			
		var candlesDealsArea = new ChartArea();
		var indicatorOneArea = new ChartArea();
		var indicatorTwoArea = new ChartArea();

		_candlesElem = new ChartCandleElement();
		candlesDealsArea.Elements.Add(_candlesElem);

		_myTradesElem = new ChartTradeElement();
		candlesDealsArea.Elements.Add(_myTradesElem);

		_indicatorOneElem = new ChartIndicatorElement { Indicator = IndicatorOne };
		indicatorOneArea.Elements.Add(_indicatorOneElem);

		_indicatorTwoElem = new ChartIndicatorElement { Indicator = IndicatorTwo };
		indicatorTwoArea.Elements.Add(_indicatorTwoElem);

		CandlesChart.Areas.Add(candlesDealsArea);
		CandlesChart.Areas.Add(indicatorOneArea);
		CandlesChart.Areas.Add(indicatorTwoArea);


Далее, если я рисую свечи и значения индикаторов следующим образом, то все работает отлично - все графики отображаются синхронно по временной оси (x-axis):
Код

		strategy.NewCandle += (candle) =>
		{
			private var chartDict = new Dictionary<IChartElement, object>
			{
				{_candlesElem, currentCandle},
				{_indicatorOneElem, new ChartIndicatorValue(IndicatorOne, IIndicatorOneValue) },
				{_indicatorTwoElem, new ChartIndicatorValue(IndicatorTwo, IIndicatorTwoValue) },
			};

			CandlesChart.GuiAsync(() => CandlesChart.ProcessValues(candle.OpenTime, chartDict));
        }

		strategy.NewMyTrades += (myTrades) =>
		{
			foreach (var myTrade in myTrades)
			{
				var chartDict = new Dictionary<IChartElement, object>
				{
					{_myTradesElem, myTrade}
				};
                CandlesChart.GuiAsync(() => CandlesChart.ProcessValues(myTrade.Trade.Time, chartDict));
			}
		};


Но, мне необходимо обновлять значения индикаторов чаще, чем рисуются свечи, поэтому для меня схема выше не подходит (разве что рисовать свечи чаще).
Поэтому я хочу сделать например вот так:
Код

				strategy.NewCandle += (candle) =>
				{
					var chartDict = new Dictionary<IChartElement, object>
					{
						{_candlesElem, currentCandle},
					};
                                        
					CandlesChart.GuiAsync(() => CandlesChart.ProcessValues(candle.OpenTime, chartDict));
                                
				}

				strategy.NewTrade += (trade) =>
				{
					var chartDict = new Dictionary<IChartElement, object>
					{
						{_indicatorOneElem, new ChartIndicatorValue(IndicatorOne, IIndicatorOneValue) },
					};
                                        
					CandlesChart.GuiAsync(() => CandlesChart.ProcessValues(trade.Time, chartDict));
				}

				strategy.PositionChanged += () =>
				{
					var chartDict = new Dictionary<IChartElement, object>
					{
						{_indicatorTwoElem, new ChartIndicatorValue(IndicatorTwo, IIndicatorTwoValue) },
					};

					CandlesChart.GuiAsync(() => CandlesChart.ProcessValues(strategy.CurrentTime, chartDict));
				}

				strategy.NewMyTrades += (myTrades) =>
				{
					foreach (var myTrade in myTrades)
					{
						var chartDict = new Dictionary<IChartElement, object>
						{
							{_myTradesElem, myTrade}
						};
                                                
						CandlesChart.GuiAsync(() => CandlesChart.ProcessValues(myTrade.Trade.Time, chartDict));
					}
				};

тут возникает проблема - у каждого графика своя временная ось (кроме собственных сделок, т.к. они отображаются в одной области со свечами), что неудобно так как хочется знать значения того или иного индикатора во время определенной свечи.

Вопрос - как сделать одну временную ось и при этом обновлять элементы НЕ одновременно?

Вопрос 2 - есть ли реализованная возможность рисовать Тиковые сделки?

Спасибо!



Спасибо:




4 Ответов
Mikhail Sukhov

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


AntonySS Перейти

Вопрос 2 - есть ли реализованная возможность рисовать Тиковые сделки?


TickCandle
Спасибо:

AntonySS

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


Михаил Сухов Перейти
AntonySS Перейти

Вопрос 2 - есть ли реализованная возможность рисовать Тиковые сделки?


TickCandle


Михаил, я не совсем верно выразился, про TickCandle я знаю и активно использую, я имел ввиду график отображения именно отдельных тиков с их объемами в виде "пузырей" (один тик в виде свечки не информативен)
Автор топика
Спасибо:

Mikhail Sukhov

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


AntonySS Перейти

Михаил, я не совсем верно выразился, про TickCandle я знаю и активно использую, я имел ввиду график отображения именно отдельных тиков с их объемами в виде "пузырей" (один тик в виде свечки не информативен)


Рисуейте индикатор объема тогда ввиде пузыря.
Спасибо: AntonySS

AntonySS

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


Михаил Сухов Перейти
AntonySS Перейти

Михаил, я не совсем верно выразился, про TickCandle я знаю и активно использую, я имел ввиду график отображения именно отдельных тиков с их объемами в виде "пузырей" (один тик в виде свечки не информативен)


Рисуейте индикатор объема тогда ввиде пузыря.


Михаил,

В общем я так и предполагал, думал может уже готовое решение есть.

Спасибо
Автор топика
Спасибо:


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

loading
clippy