Врет PnLManager.PnL
Atom
27.05.2012


Версия самая последняя 17334, с dev-ветки
Тестирую в EmulationTrader
Врет this.PnLManager.PnL - показывает PnL в два раза больше (по модулю), чем есть на самом деле.
Даже кривая на графике в два раза больше показывает. Приятно, конечно - но только пока прибыль показывает)))
Пришлось заплатку делать для EquityData, чтобы график не врал

Но если сделать запрос this.MyTrades.GetPnL(), то покажет верно



Спасибо:

Именинники: liftrade, timpetrov

1 2  >
OvcharenkoVI

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


оффтоп

Показывай всем такую эквити с рельного трейдера и продавай робота за 1****** ))
Спасибо:

fish

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


при реальной работе также, ВРЕТ :D
откатил на старую версию
Спасибо:

Кот Матроскин

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


OvcharenkoVI Перейти
Показывай всем такую эквити с рельного трейдера и продавай робота за 1****** ))

Такая корова нужна самому)))
Спасибо:

Кот Матроскин

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


Кот Матроскин Перейти
Но если сделать запрос this.MyTrades.GetPnL(), то покажет верно

Пересчитал все сделки вручную - и этот метод привирает процентов на 10-15 в разную сторону...
Спасибо:

Mikhail Sukhov

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


Кот Матроскин Перейти
Кот Матроскин Перейти
Но если сделать запрос this.MyTrades.GetPnL(), то покажет верно

Пересчитал все сделки вручную - и этот метод привирает процентов на 10-15 в разную сторону...


Можете привести числа?
Спасибо:

Кот Матроскин

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


Mikhail Sukhov Перейти
Кот Матроскин Перейти
Кот Матроскин Перейти
Но если сделать запрос this.MyTrades.GetPnL(), то покажет верно

Пересчитал все сделки вручную - и этот метод привирает процентов на 10-15 в разную сторону...


Можете привести числа?

Спасибо:

Mikhail Sukhov

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


Кот Матроскин Перейти



Как по этому логу проверить результаты this.MyTrades.GetPnL() и ручные результаты?
Спасибо:

Кот Матроскин

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


Mikhail Sukhov Перейти
Как по этому логу проверить результаты this.MyTrades.GetPnL() и ручные результаты?

Экселевский файл из генератора отчетов, в нем справа выделен рамкой ручной расчет, со ссылками на цены. Крайний правый столбик (из трех выделенных) - PnL, расчитанный вручную.
В текстовом файле ему соответствует "TotPnL = ...", расчитанный this.MyTrades.GetPnL()
Сравнивать желательно четные сделки (купил-продал)
Спасибо:

Mikhail Sukhov

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


Кот Матроскин Перейти
В текстовом файле ему соответствует "TotPnL = ...", расчитанный this.MyTrades.GetPnL()
Сравнивать желательно четные сделки (купил-продал)


this.MyTrades.GetPnL() возвращает PnL с учетом нереализованной прибыли (стоимости открытой позиции). И туда нужно передавать только сделки с открытыми позициями. Тоесть, если у вас сделки то открывают, то закрывают, то нереализованная прибыль будет каждый раз пересчитываться.

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

Бага с PnLManager не определена. По ней так же приветствуются детальные отчеты. Плюс лог значение Security.MinStepPrice. И да, все в курсе, что у нас пересчет идет из пунктов в рубли?
Спасибо:

Кот Матроскин

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


Mikhail Sukhov Перейти
this.MyTrades.GetPnL() возвращает PnL с учетом нереализованной прибыли (стоимости открытой позиции). И туда нужно передавать только сделки с открытыми позициями. Тоесть, если у вас сделки то открывают, то закрывают, то нереализованная прибыль будет каждый раз пересчитываться.

Не знаю, правильно ли делал, но последовательность была такая:
подписался на strategy.NewMyTrades и после каждой совершенной сделки (и на открытие позиции, и на закрытие) вызывал strategy.MyTrades.GetPnL(), а затем выводил значение в лог. Если не правильно, то уже не знаю, чем получить адекватное значение PnL - strategy.PnLManager.PnL врет безбожно, показывает в два раз больше, чем GetPnL! Для примера: подписался на strategy.EquityManager.NewEquityData и вывел в лог вместе с GetPnL(). По расчетам, GetPnL еще где-то рядом попадает, а equityData.Value, видимо, берется из PnLManager.PnL:
Код
   equityData.Time                   equityData.Value     GetPnL()
2012.03.02 15:20:17.0000	                 1,49000	   0,79000
2012.03.12 10:10:19.0000	                -0,17000	  -0,08000
2012.03.15 10:20:29.0000	                 0,83000	   0,45000
2012.03.16 17:40:13.0000	                -0,07000	   0,07000
2012.03.20 11:50:28.0000	                -1,53000	  -0,80000
2012.03.21 14:00:33.0000                        -1,76000	  -0,91000
2012.03.27 13:30:08.0000	                 0,83000	   0,58000
2012.03.30 18:30:12.0000	                -0,90000	  -0,32000
2012.04.04 13:20:03.0000	                 0,34000	   0,15000
2012.04.06 15:13:41.0000	                 2,36000	   1,17000
2012.04.11 17:50:24.0000	                 1,50000	   0,81000


Mikhail Sukhov Перейти
Бага с PnLManager не определена. По ней так же приветствуются детальные отчеты.

Какой-то особенный отчет сделать?

Mikhail Sukhov Перейти
Плюс лог значение Security.MinStepPrice. И да, все в курсе, что у нас пересчет идет из пунктов в рубли?

MinStepPrice = 0.01m, бумага Сбербанк обычка, пункты и рубли вроде как должны идти один к одному
Спасибо:
1 2  >

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

loading
clippy