Несколько осей на графике
Колеги , посмотрите пожалуйста что не так в моем коде , хочу на график выводить и цену, сделки и PnL . Вижу только цену:
версия 4.2.2.2:
Code
public PnLChartWindow()
{
this.InitializeComponent();
_area = new ChartArea();
Curve.Areas.Add(_area);
Curve.IsAutoScroll = true;
_area.XAxises[0].AutoRange = true;
_area.YAxises.Add(new ChartAxis()
{
Id = "Y1",
AxisAlignment = ChartAxisAlignment.Left
});
_PriceElem = new ChartIndicatorElement
{
Indicator = new SimpleMovingAverage(),
Title = "Price",
Color = Colors.Black,
YAxisId = "Y",
XAxisId = "X"
};
_area.Elements.Add(_PriceElem);
_tradeElem = new ChartTradeElement()
{
YAxisId = "Y",
XAxisId = "X"
};
_area.Elements.Add(_tradeElem);
_PnLElem = new ChartIndicatorElement
{
Indicator = new SimpleMovingAverage(),
Title = "PnL",
Color = Colors.Green,
YAxisId = "Y1",
XAxisId = "X"
};
_area.Elements.Add(_PnLElem);
// и подписываемся на событие изменения времени, чтобы обновить ProgressBar
Connector.NewTrades += DrawTrade;
Connector.NewMyTrades += DrawMyTrade;
}
private void DrawTrade(IEnumerable<Trade> trades)
{
this.GuiAsync(() => Curve.ProcessValues(Herd.Security.LastTrade.Time, new Dictionary<IChartElement, object>
{
{ _PriceElem, new ChartIndicatorValue(_PriceElem.Indicator, Price) { IsFormed = true } },
{_PnLElem, new ChartIndicatorValue(_PnLElem.Indicator, RUB_P_L) { IsFormed = true }},
}));
}
private void DrawMyTrade(IEnumerable<MyTrade> trades)
{
foreach (var trade in trades)
{
this.GuiAsync(() => Curve.ProcessValues(trade.Trade.Time , new Dictionary<IChartElement, object>
{
{_tradeElem, trade}
}));
}
}
причем если без привязки к осям то все графики видно , но некрасиво , нужно для PnL привязку к другой оси Y.