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


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


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

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

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


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



Thanks:


Alexander

Avatar
Date: 11/16/2011
Reply


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

Camill

Avatar
Date: 11/16/2011
Reply


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

Camill

Avatar
Date: 11/18/2011
Reply


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

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

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

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

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

Mikhail Sukhov

Avatar
Date: 11/18/2011
Reply


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

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


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

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

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

Camill

Avatar
Date: 11/19/2011
Reply


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

Supervisor

Avatar
Date: 2/9/2012
Reply


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

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

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

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

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());
}

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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy