Предложение по улучшению алгоритма расчета параметров Equity

Предложение по улучшению алгоритма расчета параметров Equity
Atom
16.11.2011
Camill


  1. Сейчас максимальная просадка считается с учетом бумажной прибыли/убытков. В результате стратегия, которая совершила прибыльный трейд, но не зафиксировала часть прибыли, выглядит так же, как и стратегия, совершившая убыточный трейд, а это совсем не одно и то же.

  2. Нет даты максимальной просадки, неудобно искать.

  3. Хотелось бы видеть всю историю просадок, или хотя бы какую-нибудь статистику, а не только одну максимальную.

В связи с этим вопрос: кто-нибудь еще в этом заинтересован и есть ли у кого-нибудь наработки или идеи по реализации?




Спасибо:


Alexander

Фотография
Дата: 16.11.2011
Ответить


Готовы взяться за реализацию?

Спасибо:

Camill

Фотография
Дата: 16.11.2011
Ответить


Готов, но хотелось бы сначала прощупать почву. Вдруг все уже написано до нас.

Спасибо:

Camill

Фотография
Дата: 18.11.2011
Ответить


Как я понимаю, всем фиолетово.

Тогда просьба к разработчикам - посоветуйте, как правильно добавить параметры к существующему EquityManager.

Навскидку я бы отнаследовался от него, переопределил свойство EquityManager.Parameters, добавив свои параметры, добавил свой обработчик на NewEquityData, и считал бы в нем нужные мне параметры.

Для использования заменил бы _strategy.EquityManager на свой, взяв ITrader и IPnLManager у оригинального.

Есть более прямой способ?

Спасибо:

Mikhail Sukhov

Фотография
Дата: 18.11.2011
Ответить


Camill: Тогда просьба к разработчикам - посоветуйте, как правильно добавить параметры к существующему EquityManager.

Навскидку я бы отнаследовался от него, переопределил свойство EquityManager.Parameters, добавив свои параметры, добавил свой обработчик на NewEquityData, и считал бы в нем нужные мне параметры.

  1. Создается свой IPnLEquityParameter или ITradeEquityParameter (лучше наследовать от класса BaseEquityParameter).
  2. Добавляется в EquityManager.Parameters

Зачем наследоваться и переопределять я не понял.

По скайпу, думаю, быстрее можно такие вещи решить. С вас тогда еще и дока о том, как создавать свои параметры по Эквити, чтобы не писать потом еще раз и второму и третьему.

Спасибо:

Camill

Фотография
Дата: 19.11.2011
Ответить


Ну так я же мало того что не программист ни разу, так еще и структуру Stoсk# еще не понимаю практически. Но теперь вроде направление понятно, буду копать.

Спасибо:

Supervisor

Фотография
Дата: 09.02.2012
Ответить


Чтобы ускорить тестирование, пытаюсь сделать так чтобы стратегия прогонялась, а потом только строился график эквити (а не на лету). Тут возникает 2 неочевидные вещи:

  1. Если после тестирования остановить стратегию Strategy.Stop(); то данные EquityManager стираются. не совсем понятно зачем так сделано, ну да ладно.
  2. Вторая фича немного более странная - если НЕ подписаться на событие Strategy.EquityManager.NewEquityData хотя бы так:
Strategy.EquityManager.NewEquityData += d => { };

то данных по эквити тоже не будет даже до остановки стратегии.

Это специально так задумано? :)

Плюс пытаюсь добавить свой пустой EquityManager.Parameter:


public class MyEquityParameter : BaseEquityParameter, IPnLEquityParameter
{
	public MyEquityParameter()
	{
		Name = "MyEquityParameter";
	}

	public void Add(DateTime marketTime, decimal pnl)
	{
		Value = 333;
		RaiseValueChanged();
	}
}

public Strategy()
{
	EquityManager.Parameters.Add(new MyEquityParameter());
}

  • в кривой эквити в результате находится только одно значение, остальные параметры считаются нормально.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy