Статистика стратегий
Обзор
Платформа StockSharp предоставляет комплексную систему статистического анализа торговых стратегий, которая помогает трейдерам оценивать эффективность, оптимизировать параметры и принимать обоснованные решения. Система статистики собирает и обрабатывает данные из различных аспектов торговли, включая заявки, сделки, позиции и показатели прибыли/убытков.
Назначение и преимущества
Статистический анализ в торговых стратегиях выполняет несколько важных функций:
Измерение производительности: Количественная оценка успешности вашей стратегии с помощью таких показателей, как чистая прибыль, максимальная просадка и коэффициент восстановления.
Управление рисками: Понимание профиля риска вашей стратегии через такие показатели, как процент максимальной просадки и статистика размера позиций.
Оптимизация: Поиск оптимальных параметров стратегии путем сравнения статистических показателей при различных наборах параметров.
Анализ качества сделок: Анализ распределения сделок, соотношения прибыльных и убыточных сделок, среднего значения прибыли на сделку.
Операционные показатели: Отслеживание операционных метрик, таких как статистика задержек и частота ошибок заявок, для выявления проблем исполнения.
Доступные статистические показатели
Интерфейс IStatisticManager в StockSharp предоставляет доступ к множеству статистических параметров, организованных по нескольким категориям:
Статистика прибыли и убытков
- Чистая прибыль
- Чистая прибыль (%)
- Максимальная прибыль
- Максимальная просадка
- Максимальная просадка (%)
- Максимальная относительная просадка
- Коэффициент восстановления
Статистика сделок
- Количество прибыльных сделок
- Количество убыточных сделок
- Общее количество сделок
- Средняя прибыль на сделку
- Средняя прибыльная сделка
- Средняя убыточная сделка
- Количество сделок в месяц/день
Статистика позиций
- Максимальная длинная позиция
- Максимальная короткая позиция
Статистика заявок
- Количество заявок
- Количество ошибок заявок
- Максимальная/минимальная задержка регистрации
- Максимальная/минимальная задержка отмены
Интеграция с классом Strategy
Класс Strategy автоматически собирает и вычисляет статистику во время выполнения. Менеджер статистики доступен через свойство StatisticManager
, которое реализует интерфейс IStatisticManager.
Основные статистические значения также представлены непосредственно в виде свойств класса Strategy:
PnL
: Значение прибыли и убытковCommission
: Общая уплаченная комиссияSlippage
: Общее проскальзываниеLatency
: Средняя задержка операций с заявками
Визуализация
StockSharp предоставляет специальный графический компонент для визуализации статистики стратегий под названием StatisticParameterGrid
, который доступен в пространстве имен StockSharp.Xaml
. Эта сетка отображает все статистические параметры в удобном для пользователя формате.
Для получения дополнительной информации о графическом компоненте см. документацию по Статистике.
Пример использования
Вот пример работы со статистикой стратегии в вашем коде:
// Создаем стратегию
var strategy = new SmaStrategy
{
// Настраиваем параметры стратегии
Security = security,
Portfolio = portfolio,
Volume = 1,
// Задаем параметры SMA
LongSma = 200,
ShortSma = 50,
};
// Подключаем стратегию к графику для визуализации
var chart = new ChartPanel();
strategy.SetChart(chart);
// Получаем доступ к менеджеру статистики
var statisticManager = strategy.StatisticManager;
// Отображаем статистику стратегии в пользовательском интерфейсе
// Предположим, что у вас есть StatisticParameterGrid, определенный в XAML как 'StatisticsGrid'
StatisticsGrid.Parameters.Clear();
StatisticsGrid.Parameters.AddRange(statisticManager.Parameters);
// Запускаем стратегию
strategy.Start();
// Когда вам нужно реагировать на изменения статистики
strategy.PnLChanged += () =>
{
Console.WriteLine($"Текущий PnL: {strategy.PnL}");
// Вы также можете получить доступ к отдельным статистическим параметрам
var netProfit = statisticManager.Parameters
.OfType<NetProfitParameter>()
.FirstOrDefault();
if (netProfit != null)
{
Console.WriteLine($"Чистая прибыль: {netProfit.Value}");
}
};
// Для отслеживания статистики позиций
strategy.PositionChanged += () =>
{
Console.WriteLine($"Текущая позиция: {strategy.Position}");
};
Пользовательская статистика
Вы также можете создавать собственные статистические параметры, реализуя соответствующие интерфейсы:
- IStatisticParameter: Базовый интерфейс для всех статистических параметров
- IPnLStatisticParameter: Для параметров, связанных с прибылью/убытками
- ITradeStatisticParameter: Для параметров, связанных со сделками
- IPositionStatisticParameter: Для параметров, связанных с позициями
- IOrderStatisticParameter: Для параметров, связанных с заявками
Вот простой пример пользовательского статистического параметра:
[Display(
ResourceType = typeof(LocalizedStrings),
Name = "Мой пользовательский показатель",
Description = "Описание моего пользовательского показателя",
GroupName = "Пользовательские параметры",
Order = 1000
)]
public class MyCustomParameter : BasePnLStatisticParameter<decimal>
{
public MyCustomParameter()
: base(StatisticParameterTypes.Custom)
{
}
public override void Add(DateTimeOffset marketTime, decimal pnl, decimal? commission)
{
// Логика пользовательского расчета
Value = /* ваш пользовательский расчет */;
}
}
// Затем добавляем его в StatisticManager вашей стратегии
strategy.StatisticManager.Parameters.Add(new MyCustomParameter());
Заключение
Система статистического анализа в StockSharp предоставляет трейдерам мощные инструменты для оценки и оптимизации своих торговых стратегий. Используя эту статистику, вы можете получить ценные сведения о производительности вашей стратегии, выявить области для улучшения и принимать решения на основе данных для повышения результатов вашей торговли.