Суммарное значение прибыли убытка


Суммарное значение прибыли убытка
Atom
7/11/2012


Сборка 18183.

При использовании шлюза EmulationTrader значение Strategy.PnLManager.PnL равно суммарное значение прибыли убытка / шаг цены Security.
Если использовать QuikTrader, то Strategy.PnLManager.PnL равно суммарное значение прибыли убытка.

Например по ри PnL в пунктах равно 555.

EmulationTrader -> Strategy.PnLManager.PnL = 111
QuikTrader -> Strategy.PnLManager.PnL = 555

Собственно пожелание. Чтобы во всех шлюзах был один формат. Или с делением или без на шаг Security.

Tags:


Thanks:


pyhta4og

Avatar
Date: 7/11/2012
Reply


Moadip Go to
Сборка 18183.

При использовании шлюза EmulationTrader значение Strategy.PnLManager.PnL равно суммарное значение прибыли убытка / шаг цены Security.
Если использовать QuikTrader, то Strategy.PnLManager.PnL равно суммарное значение прибыли убытка.

Например по ри PnL в пунктах равно 555.

EmulationTrader -> Strategy.PnLManager.PnL = 111
QuikTrader -> Strategy.PnLManager.PnL = 555

Собственно пожелание. Чтобы во всех шлюзах был один формат. Или с делением или без на шаг Security.


Вообще алгоритм вычисления PnL находится в Strategy.PnLManager и не должен зависеть от шлюза. Strategy.PnLManager.PnL вычисляется в рублях как security.MinStepPrice / security.MinStepSize * (PNL в пунктах)

Возможно в вашем случае Security.MinStepSize для QuikTrader по какой-то причине равно 1 вместо 5

Вы можете это проверить поставив бреакпойнт где-нибудь в Strategy.OnNewTrade?

Такое поведение появилось именно начиная с версией 18183?
Thanks:

Moadip

Avatar
Date: 7/11/2012
Reply


Quote:
Вообще алгоритм вычисления PnL находится в Strategy.PnLManager и не должен зависеть от шлюза


Я это понимаю, но почему это зависит от шлюза не понял. Про MinStepSize что то не вспомнил.

Оказалось вся фишка не в MinStepSize а в MinStepPriсe.
QuikTrader


EmulationTrader


Quote:
Возможно в вашем случае Security.MinStepSize для QuikTrader по какой-то причине равно 1 вместо 5

Из квика не экспортирую доп. колонку в которой стоит стоимость шага цена.
Т.е. если нет этих данных, то по умолчанию она берется равная шагу Security?[huh]

В EmulationTrader Security создается "вручную" с указанием MinStepPriсe = 1;

Quote:
Такое поведение появилось именно начиная с версией 18183?

В предыдущей сборке тоже было, но в более ранних не наблюдалось.
Похоже до этого в QuikTrader если данные для MinStepPriсe не экспортируются то MinStepPriсe = 1, поэтому подобного расхождения и не наблюдалось.
Thanks:

pyhta4og

Avatar
Date: 7/11/2012
Reply


Quote:

Я это понимаю, но почему это зависит от шлюза не понял. Про MinStepSize что то не вспомнил.

Ну точнее косвенно зависит только через MinStepSize и MinStepPriсe.

Quote:

Т.е. если нет этих данных, то по умолчанию она берется равная шагу Security?[huh]

Нужно смотреть, но скорее всего да, потому что тогда шаг в 0.01 для например лукойла на ММВБ будет переводится в 1 копейку корректно

Quote:

В EmulationTrader Security создается "вручную" с указанием MinStepPriсe = 1;


Вообще говоря вы должны в Quik экспортировать MinStepPrice потому что от него зависит PnL расчет. PnL считается в рублях а не в пунктах,иначе непонятно как складывать PnL разных бумаг.

EmulTrader никак не меняет MinStepPrice какой зададите такой и будет. Сейчас в разработке новая фича - хранилище SecurityChange в котором будет записываться история MinStepPrice и соотвественно задавать MinStepPrice можно будет автоматически.
Thanks:

PavelAd

Avatar
Date: 8/31/2012
Reply


pyhta4og Go to

Вообще говоря вы должны в Quik экспортировать MinStepPrice потому что от него зависит PnL расчет.


А как его экспортировать из Квика? В документации в разделе "настройка Quik" для таблицы "Инструменты" указано только 6 колонок, среди которых колонки "стоимость шага цены" нету
Thanks:

Moadip

Avatar
Date: 8/31/2012
Reply


Экспорт дополнительных колонок

Добавить в Quik в таблицу "Инструменты" нужные колонки и в том же порядке добавить колонки в экспорт.

Code

            QuikTrader trader = new QuikTrader(path);

            var columns = trader.SecuritiesTable.Columns;
            columns.Add(DdeSecurityColumns.Strike);
            columns.Add(DdeSecurityColumns.Volatility);
            columns.Add(DdeSecurityColumns.UnderlyingSecurity);
            columns.Add(DdeSecurityColumns.TheorPrice);
            columns.Add(DdeSecurityColumns.OptionType);
            columns.Add(DdeSecurityColumns.ExpiryDate);
            columns.Add(DdeSecurityColumns.MaxPrice);
            columns.Add(DdeSecurityColumns.MinPrice);
            columns.Add(DdeSecurityColumns.MinStepPrice);
Thanks: PavelAd

PavelAd

Avatar
Date: 9/3/2012
Reply


Странно, почему вывода такой нужной колонки по дефолтным настройкам нету
Thanks:


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

loading
clippy