QUIK Portfolio акции

QUIK Portfolio акции
Atom
9/29/2017
Knup


Добрый день,

Не понимаю как получить данные для портфеля фондовой секции ММВБ из QUIK.
Подписываюсь на событие NewPortfolios, приходит портфель - пусть, например, с клиентским кодом 123456, сохраняю его в переменную portfolio. У portfolio есть различные поля, многое из них почему-то null.
Как мне получить параметр Входящие средства по портфелю (поле "ВходСредства" таблицы "Клиентский портфель" в Квике), текущую прибыль/убыток по позициям портфеля (поле "Прибыль/убытки" таблицы "Клиентский портфель" в квике)? И есть ли какая-то возможность получить значение полей "Лонги" и "Шорты" в таблице "Клиентский портфель" в квике?

Заранее благодарен за ответ.


Support

Avatar
Date: 9/29/2017
Reply


Добрый день,

Вы делали подписку на изменения через Connector.RegisterPortfolio?

Портфели через указанное событие приходят как правило пустыми. Отслеживать обновление необходимо через Connector.PortfolioChanged.
Thanks: Николай_Флёров

Knup

Avatar
Date: 10/2/2017
Reply


Здравствуйте,

Я делал подписку на событие NewPortfolios для получения всех портфелей квика. Изменил на PortfolioChanged, но что-то особых изменений не увидел. Ненулевые числовые поля только BeginValue, BlockedValue и CurrentValue. Остальные же (например Commission, RealizedPnL и т.д.) равны null. Но не суть, вопросa у меня остались, как и прежде:
1. Можно ли через S#.API вытянуть из квика как-то размер текущей позиции портфеля акций в рублях (на сколько понимаю, за это отвечают поля "Лонги" и "Шорты" таблицы "Клиентский портфель" квика). Для портфеля фьючерсов проблем нет - за это отвечает поле CurrentValue. По акциям же, такое ощущение, что в CurrentValue хранится параметр "ТекСредства" таблицы "Клиентский портфель" квика.
2. Как рассчитать текущую прибыль/убыток по портфелю акций? (правильно ли понимаю, что за это отвечает метод GetPnL для акций?). Для портфеля фьючерсов, опять же, проблем нет - за текущую прибыль/убыток отвечает свойство VariationMargin.
3. И ещё: как отслеживать изменения по портфелю акций? Например, изменение текущей прибыли/убытка по портфелю. Подписываюсь на событие portfolio.PropertyChanged. Для фьючерсов событие срабатывает, а для акций - нет.

Использую S#.API 4.3.24
Thanks: Николай_Флёров

Support

Avatar
Date: 10/2/2017
Reply


Добрый день

Портфель изменяется не атомарно. Поэтому изменения необходимо накопить. Вы можете запустить пример SampleQuik и посмотреть, отображаются ли там необходимые изменения.

Событий для портфелей всего два - NewPortfolio и PortfolioChanged. Денежная позиция включена в объект Portfolio.
Thanks: Николай_Флёров

Knup

Avatar
Date: 10/3/2017
Reply


Добрый день,

В SampleQuik 4.3.27.2 всё то же самое, что я и описывал (см. рисунок "QuikPortfolio_1.png"). Для портфеля акций в CurrentValue транслируется параметр "ТекСредства" таблицы "Клиентский портфель" квика. Но этот параметр постоянно меняется. Так что то, что отображается в SampleQuik в поле "Текущее" - это уже для меня устаревшая информация. Даже подписка на событие PropertyChanged портфеля не помогает. Кстати, вопрос этот уже поднимался в феврале:
http://stocksharp.ru/for...bote-s-quik-cherez-lua/

Другой вопрос, почему в документации написано, что CurrentValue - это "Размер позиции на текущий момент." (http://doc.stocksharp.ru/html/T_StockSharp_BusinessEntities_Portfolio.htm), на деле же в CurrentValue для портфеля акций хранится значение текущих средств (т.е. то, сколько у нас будет денег, если закроем все позиции). Для портфеля фьючерсов, например, в CurrentValue хранится "текущая чистая позиции", что соответствует указанному в документации.

И да, ещё один баг опять же по портфелю акций - подписываюсь на событие получения нового портфеля, получаю значения BeginValue, CurrentValue и отображаю их у себя в интерфейсе. Чтобы получать обновления по полям портфеля, подписываюсь на событие PropertyChanged. BeginValue каждый день обновляется, но через несколько дней по какой-то непонятной причине в поля BeginValue и CurrentValue для портфеля акций начинают транслироваться данные из "Таблицы лимитов по денежным средствам" квика (а не из "Клиентского портфеля"), которая вообще тут не причём. Эти значения могут быть отрицательными, если мы находимся в позиции с плечом (см. рисунок "QuikPortfolio_2.png").

QuikPortfolio_1.png 91 KB (283) QuikPortfolio_2.png 37 KB (278)
Thanks: Николай_Флёров

Support

Avatar
Date: 10/4/2017
Reply


Добрый день,

Информация о денежной позиции транслируется из Лимитов по денежным средствам.

Изменение портфеля происходит через событие Connector.PortfolioChanged.
Thanks: Николай_Флёров


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

loading
clippy