← Zurück

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

Сборка 18183.

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

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

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (6)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

pyhta4og
pyhta4og

Moadip: Сборка 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?

Moadip
Moadip Autor

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

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

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

EmulationTrader

Возможно в вашем случае Security.MinStepSize для QuikTrader по какой-то причине равно 1 вместо 5 Из квика не экспортирую доп. колонку в которой стоит стоимость шага цена. Т.е. если нет этих данных, то по умолчанию она берется равная шагу Security?🤔

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

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

pyhta4og
pyhta4og

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

Т.е. если нет этих данных, то по умолчанию она берется равная шагу Security?🤔 Нужно смотреть, но скорее всего да, потому что тогда шаг в 0.01 для например лукойла на ММВБ будет переводится в 1 копейку корректно

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

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

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

PavelAd
PavelAd

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

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

Moadip
Moadip Autor

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

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


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

PavelAd
PavelAd
PavelAd

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