Для изменения размера нажмите или перетащите
Кривая эквити

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

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

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

C#
_strategy.PnLChanged += () =>
{
    var data = new EquityData
    {
        Time = _strategy.Trader.MarketTime,
        Value = _strategy.PnL,
    };

    this.GuiAsync(() => _curveItems.Add(data));
};

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

При появлении новых данных, кривая будет отрисовываться на специальном графике EquityCurveChart. Чтобы начать рисовать кривую на данном графике, необходимо вызвать метод EquityCurveChartCreateCurve. Полученная коллекция заполняется данными, которые передаются во время обработки события StrategyPnLChanged.

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

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