Table of Contents

Кривая эквити

S# предусмотрена возможность построения кривых доходности (эквити) с целью дальнейшего анализа работы торгового робота. Данные для кривой получаются с помощью класса PnLManager. Данный класс производит расчёт текущего значения, оповещая робота об изменениях через событие Strategy.PnLChanged.

Для расчета параметров кривой (максимальная просадка, коэффициент Шарпа и т.д.) используется StatisticManager. Эти параметры хранятся в свойстве StatisticManager.Parameters. Каждый параметр реализует интерфейсы IPnLStatisticParameter, ITradeStatisticParameter, IOrderStatisticParameter или IPositionStatisticParameter. Если требуется особый параметр расчета, то необходимо реализовать один из этих интерфейсов и добавить параметр в StatisticManager.Parameters.

В разделе тестирования на истории показано использование Strategy.PnLChanged применительно к торговым стратегиям:

_strategy.PnLChanged += () =>
{
	var pnl = new EquityData
	{
		Time = strategy.CurrentTime,
		Value = strategy.PnL - strategy.Commission ?? 0
	};
	pnlCurve.Add(pnl);
};      
      

Менеджер статистики получается через свойство Strategy.StatisticManager.

При появлении новых данных, кривая будет отрисовываться на специальном графике EquityCurveChart. Чтобы начать рисовать кривую на данном графике, необходимо вызвать метод EquityCurveChart.CreateCurve(System.String title, System.Windows.Media.Color color, System.Windows.Media.Color secondColor, StockSharp.Charting.LineChartStyles style, System.Guid id ). Полученная коллекция заполняется данными, которые передаются во время обработки события Strategy.PnLChanged.

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

В разделе тестирования на истории показано использование визуальной панели StatisticParameterGrid, которая позволяет отображать параметры StatisticParameterGrid.Parameters.