Добрый день,
Не понимаю как получить данные для портфеля фондовой секции ММВБ из QUIK. Подписываюсь на событие NewPortfolios, приходит портфель - пусть, например, с клиентским кодом 123456, сохраняю его в переменную portfolio. У portfolio есть различные поля, многое из них почему-то null. Как мне получить параметр Входящие средства по портфелю (поле "ВходСредства" таблицы "Клиентский портфель" в Квике), текущую прибыль/убыток по позициям портфеля (поле "Прибыль/убытки" таблицы "Клиентский портфель" в квике)? И есть ли какая-то возможность получить значение полей "Лонги" и "Шорты" в таблице "Клиентский портфель" в квике?
Заранее благодарен за ответ.
Комментарии (5)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Добрый день,
Вы делали подписку на изменения через Connector.RegisterPortfolio?
Портфели через указанное событие приходят как правило пустыми. Отслеживать обновление необходимо через Connector.PortfolioChanged.
Здравствуйте,
Я делал подписку на событие NewPortfolios для получения всех портфелей квика. Изменил на PortfolioChanged, но что-то особых изменений не увидел. Ненулевые числовые поля только BeginValue, BlockedValue и CurrentValue. Остальные же (например Commission, RealizedPnL и т.д.) равны null. Но не суть, вопросa у меня остались, как и прежде:
Использую S#.API 4.3.24
Добрый день
Портфель изменяется не атомарно. Поэтому изменения необходимо накопить. Вы можете запустить пример SampleQuik и посмотреть, отображаются ли там необходимые изменения.
Событий для портфелей всего два - NewPortfolio и PortfolioChanged. Денежная позиция включена в объект Portfolio.
Добрый день,
В SampleQuik 4.3.27.2 всё то же самое, что я и описывал (см. рисунок "QuikPortfolio_1.png"). Для портфеля акций в CurrentValue транслируется параметр "ТекСредства" таблицы "Клиентский портфель" квика. Но этот параметр постоянно меняется. Так что то, что отображается в SampleQuik в поле "Текущее" - это уже для меня устаревшая информация. Даже подписка на событие PropertyChanged портфеля не помогает. Кстати, вопрос этот уже поднимался в феврале: http://stocksharp.ru/forum/8060/ne-izmenyaetsya-pole-portfoliocurrentvalue-pri-rabote-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").
Добрый день,
Информация о денежной позиции транслируется из Лимитов по денежным средствам.
Изменение портфеля происходит через событие Connector.PortfolioChanged.