← Zurück

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

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

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

Создаю 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 - есть ли реализованная возможность рисовать Тиковые сделки?

Спасибо!

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

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

Mikhail Sukhov
Mikhail Sukhov

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

TickCandle

AntonySS
AntonySS Autor

Михаил Сухов:

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

TickCandle

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

Mikhail Sukhov
Mikhail Sukhov

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

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

AntonySS
AntonySS Autor

Михаил Сухов:

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

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

Михаил,

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

Спасибо