Table of Contents

Статистика стратегий

Обзор

Платформа StockSharp предоставляет комплексную систему статистического анализа торговых стратегий, которая помогает трейдерам оценивать эффективность, оптимизировать параметры и принимать обоснованные решения. Система статистики собирает и обрабатывает данные из различных аспектов торговли, включая заявки, сделки, позиции и показатели прибыли/убытков.

Назначение и преимущества

Статистический анализ в торговых стратегиях выполняет несколько важных функций:

  1. Измерение производительности: Количественная оценка успешности вашей стратегии с помощью таких показателей, как чистая прибыль, максимальная просадка и коэффициент восстановления.

  2. Управление рисками: Понимание профиля риска вашей стратегии через такие показатели, как процент максимальной просадки и статистика размера позиций.

  3. Оптимизация: Поиск оптимальных параметров стратегии путем сравнения статистических показателей при различных наборах параметров.

  4. Анализ качества сделок: Анализ распределения сделок, соотношения прибыльных и убыточных сделок, среднего значения прибыли на сделку.

  5. Операционные показатели: Отслеживание операционных метрик, таких как статистика задержек и частота ошибок заявок, для выявления проблем исполнения.

Доступные статистические показатели

Интерфейс 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}");
};

Пользовательская статистика

Вы также можете создавать собственные статистические параметры, реализуя соответствующие интерфейсы:

Вот простой пример пользовательского статистического параметра:

[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 предоставляет трейдерам мощные инструменты для оценки и оптимизации своих торговых стратегий. Используя эту статистику, вы можете получить ценные сведения о производительности вашей стратегии, выявить области для улучшения и принимать решения на основе данных для повышения результатов вашей торговли.