S#

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


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


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

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

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


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



Спасибо:




6 Ответов
Alexander

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


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

Camill

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


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

Camill

Фотография
Дата: 17.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

Фотография
Дата: 18.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