После того как исполнилась сделка и мы получили соответствующий коллбэк у нас меняются данные по позициям и доступным лимитам. Посмотрим, как можно работать с этими данными через скрипт.
Для анализа состава портфеля, лимитов и их динамики используются таблицы:
Клиентский портфель (получаем данные через getPortfolioInfo и getPortfolioInfoEx).
Позиции по деньгам (getMoney и getMoneyEx, money_limits).
Позиции по инструментам (getDepo, getDepoEx, depo_limits).
Ограничения по клиентским счетам (futures_client_limits).
Позиции по клиентским счетам (futures_client_holding).
Таблица «Клиентский портфель» даёт сводную информацию по лимитам и параметрам риска брокерского счета. Таблицы «Позиции по деньгам» (лимиты) и «Позиции инструментам» (ценные бумаги) показывают данные в разрезе фондового рынка. Таблицы «Ограничения по клиентским счетам» (лимиты) и «Позиции по клиентским счетам» (фьючерсы и опционы) – только про срочному рынку.
Добавляются они через вкладку меню «Создать окно», если какой-то позиции не находите, то добавляем в меню: Создать окно / Настроить меню, далее находим нужные таблицы, добавляем, ОК. Либо можно, если без добавления в меню, создать сразу: F7 и выбрать требуемую таблицу.
Таблица «Клиентский портфель» показывает сводную информацию по состоянию брокерского счета по всем доступным площадкам в рублях в разрезе различных режимов (Т0 / Т1 / Т2 / Т365).
В силу того, что таблица показывает и фондовый рынок и срочный, то если выводить все доступные столбцы, она получается очень длинной и не удобной. Это связано с тем, что часть данных относится только в фондовому рынку:

В этом плане удобнее либо просматривать отдельные таблицы по фондовой и срочной секции (об этом ниже), либо создать свою пользовательскую таблицу (здесь рассматривали как создавать подобные таблицы) и выводить в неё необходимые вам данные с клиентского портфеля.
Выведем скриптом следующие параметры:
Входящие средства — состояние портфеля на открытии торговой сессии по ценам закрытия предыдущего торгового дня.
Текущие средства– оценка состояния портфеля на текущий момент с учетом вариационной маржи по счету.
Стоимость портфеля — оценка собственных средств клиента по текущим позициям и ценам.
Прибыль/убыток — разница между «Текущие средства» и «Входящие средства».
УДС — уровень достаточности средств (показатель закредитованности).
НаПокупНеМаржин – доступные средства для открытия позиции на срочном рынке.
Справка по значениям полей таблицы Клиентский портфель: при активной таблице нажать F1.

С таблицей клиентского портфеля можно работать через функции getPortfolioInfo и getPortfolioInfoEx. Вторая пригодится, если нужны данные с учетом T+.
Описание полей находим в файле QLUA.chm:

Для получения параметров их либо необходимо добавить в таблицу, либо (т.к. эта информация нужна единожды для скрипта и постоянно наблюдать в таблице просто нет необходимости) подсмотреть её через редактирование таблицы Состояние счета:
F7 / Состояние счета / CTRL + E

Получим все значения таблицы через getPortfolioInfo (в Т0). Для этого пройдемся по всем key и value и выведем их сообщениями:

https://github.com/morefinances/qlua/blob/main/getPortfolioInfo_key_value.lua
В таком варианте получим слишком большую выдачу, значительную частью из которой будут строки с нулевыми значениями. Уменьшим количества сообщений – выведем только отличные от нуля данные:

https://github.com/morefinances/qlua/blob/main/getPortfolioInfo_key_value_no_zero.lua
Теперь выдача будет более компактной:

Иногда таким образом можно быстрее по значению найти нужный параметр и в мануале свериться по наименованию и описанию поля.
Видим также, что в терминале цифры выводятся с дополнительными нулями. Вспоминаем, что это можно изменить, например, если делать вывод числа с форматированием через string.format, используя пользовательскую функцию:
function mprint( numb )
return string.format( "%.2f", numb )
end
Теперь выведем только то, что нас интересует:

https://github.com/morefinances/qlua/blob/main/getPortfolioInfo.lua
Результат:

При использовании getPortfolioInfoEx можно получить те же значения на T+, например для Т+1:
Portfolio = getPortfolioInfoEx( firm_id, client_code, 1 )

Для получения значений параметров таблицы «Клиентский портфель» для клиентов срочного рынка без единой денежной позиции необходимо указать в качестве «client_code» – торговый счет на срочном рынке, а в качестве limit_kind = 0 (т.к. в таблице срочный рынок не разбивается по периодам, как видно в выдаче скрипта и в T0, и в T1 доступные средства по FORTS одинаковые).
Не все знают, но в таблице «Клиентский портфель» также можно посмотреть список бумаг, которых брокер вам может предоставить с плечом (в лонг/шорт): кликаем правой клавишей мышки по таблице, выбираем «Открыть таблицу Купить / Продать».

Откроется таблица с доступными инструментами для покупок/продаж с плечом:

Нажав F1 можно почитать справку по таблице.
Таблица «Позиции по деньгам» / фондовый рынок.
В данной таблице отражаются свободные деньги в портфеле с разбивкой по срокам расчетов (Т0, T1, T2, T365).

Рассмотрим, как можно получить, например, входящий и текущий остатки денежных средств.
Входящий остаток – остаток денежных средств на открытии торговой сессии до совершения операций.
Текущий остаток – собственные средства клиента на текущий момент (с учетом совершенных операций)
С таблицей можно работать с помощью следующих функций:
getMoney – выдаст лимиты и остатки на Т0.
getMoneEx, a также через getNumberOf /getItem / money_limits – работа со всеми параметрами таблицы «Позиции по деньгам» на T+ (в т.ч. и Т0).
В файле QLUA.chm находим описание getMoney:
Напишем скрипт для вывода всех значений:

https://github.com/morefinances/qlua/blob/main/getMoney.lua
Получим:

В getMoneyEx разработчики поменяли порядок в значениях функции: сперва указываем код фирмы, далее код клиента, после чего валюту и период расчетов.

Пройдемся циклом по значениям T0 и T1:

https://github.com/morefinances/qlua/blob/main/getMoneyEx.lua
Получим:
Получение данных через money_limits.
Гораздо более простой и удобный вариант работы с таблицей реализован через getNumberOf / getItem и таблицу money_limits, где мы можем пройтись по каждой строке таблицы терминала. Он не требует знания клиентского кода и «Фирмы», а значит скрипт, написанный с помощью этих функций, можно будет запускать без дополнительной правки на терминалах разных брокеров.
В файле QLUA.chm забиваем в поисковой строке money_limits. Запрос нас приведет к «Таблицам, используемых в функциях getItem, getNumberOf. Здесь уже будет выделен наш money_limits.

Проваливаясь в который, мы сможем посмотреть описание всех параметров таблицы:

Для желающих получить все значения таблицы можно воспользоваться скриптом:

https://github.com/morefinances/qlua/blob/main/money_limits_key_value.lua
Аналогично предыдущим вариантам с key, value и in pairs здесь будет очень большая выдача всех значений, т.к. идет работа построчно по всей таблице.
Выведем только входящий и текущий остатки на Т0 и Т1:

https://github.com/morefinances/qlua/blob/main/money_limits.lua
Запускаем, получаем:
Таблица «Позиции по инструментам» / Позиции и лимиты по ценным бумагам.
Аналогичным образом идет работа с лимитами по ценным бумагам на фондовом рынке через таблицу «Позиции по инструментам». Таблица показывает информацию об открытых позициях и доступных лимитах в бумагах (шт.).

К ней можно обратиться с помощью getDepo (данные на T0).
В уже привычной нам QLUA находим:

Указываем бумагу, по которой хотим получить лимит, на примере Сбера:

https://github.com/morefinances/qlua/blob/main/getDepo.lua
Получим:

Для T+ используем getDepoEx и getNumberOf /getItem / depo_limits. Их же можно использовать в т.ч. для Т0.
Работа с позициями фондового рынка через getDepoEx.
По аналогии с предыдущими «кручу верчу, запутать хочу» от разработчиков в getDepoEx, в отличие от getDepo, сперва идет указание кода фирмы и только потом клиентский код, плюс добавляется счет депо, который также можно посмотреть в таблице терминала.

https://github.com/morefinances/qlua/blob/main/getDepoEx.lua
Работа с позициями через depo_limits

При выводе через depo_limits мы можем получить данные сразу по всем бумагам, в разрезе нужного периода расчетов:

https://github.com/morefinances/qlua/blob/main/depo_limits.lua
После запуска получим данные для Т0 и Т1:

Для срочного рынка используются таблицы «Ограничения по клиентским счетам» и «Позиции по клиентским счетам». Работа с ними идёт с помощью уже рассмотренных getNumberOf /getItem через: futures_client_limits и futures_client_holding соответственно.
Таблица «Позиции по клиентским счетам» / Срочный рынок
Таблица отображает информацию по портфелю на срочном рынке.

Работаем с таблицей через getNumberOf /getItem / futures_client_holding.

Выведем данные по позициям срочного рынка одновременно в окно сообщений терминала и в файл.

https://github.com/morefinances/qlua/blob/main/total_positions_forts_to_file.lua
Скрипт сделает вывод позиций как в терминал, так и сохранит их в csv файле на C:files (не забудьте создать соответствующую директорию).
Ограничения по клиентским счетам / срочный рынок.
Таблица отображает информацию о текущей стоимости открытых позиций, лимиты и вариационную маржу клиента по всем инструментам срочного рынка.

Если у вас подключен Единый брокерский счет (он же Единая денежная позиция), то скорее всего таблица будет практически пустой (при этом можно отсматривать вариационку, например).
Работа с таблицей ведется через futures_client_limits:

https://github.com/morefinances/qlua/blob/main/futures_client_limits.lua
Результат запуска скрипта:

У рассмотренных таблиц есть функции обратного вызова. Как обрабатывать эти коллбэки рассмотрим уже в следующей статье.
Теги: qlua для начинающих, кружок авиамоделизма.
Ранее:
Qlua: введение
Доля клиентов, использующих алгоритмическую торговлю
«Кружок авиамоделизма»
Разные торговые терминалы, почему Quik
Основной функционал qlua
smart-lab.ru/blog/917696.php
Настраиваем торговый терминал и редактор кода
Установка торгового терминала
Подготовка терминала
Вкладки в терминале
Сохранение и загрузка настроек
Таблица системных сообщений
Отключение окна сообщений
Редактор Notepad++
Настройка русского языка в редакторе
Выбор синтаксиса языка и кодировки
Цветовые настройки
Дублирующий просмотр
Запуск первого скрипта
smart-lab.ru/blog/918869.php
Основы qlua, часть 1:
message, конкатенация
фильтрация по сообщениям в терминале
PrintDbgStr, комментарии
типы данных, type
операции с числами
операции со строками
операции с таблицами
условные операторы
smart-lab.ru/blog/920031.php
Основы qlua, часть 2:
Циклы for … do … end, while do … end, repeat … until.
sleep, break, goto.
как пройти весь массив циклом, как пройти таблицу по ключам
локальные и глобальные переменные, функции
получение даты и времени
получение данных через getInfoParam
smart-lab.ru/blog/921366.php
Qlua: структура скрипта.
Структура типового скрипта qlua с примерами.
Обработка скриптом «обрыва связи» с сервером и возобновления работы.
Работа с файлами: запись, перезапись и чтение файла.
getScriptPath, getWorkingFolder
smart-lab.ru/blog/922044.php
Qlua: получение данных из таблицы текущих торгов, создание таблиц в торговом терминале.
Получение биржевых данных через функцию getParamEx
Выгрузка списка параметров функции getParamEx через DDE из торгового терминала
Создание пользовательских таблиц в торговом терминале
smart-lab.ru/blog/923365.php
Qlua: работа с таблицами (продолжение). Пишем своего советника (начало).
Интегрируем таблицы в структуру скрипта qlua.
Удаляем таблицы через DestroyTable.
Останавливаем скрипт через IsWindowClosed.
Обработка события закрытия таблицы через коллбэк.
Работа с цветом SetColor, Highlight, SetSelectedRow.
Пишем простого советника.
smart-lab.ru/blog/924710.php
Qlua: дополняем скрипт советника таймингом:
Устанавливаем время старта работы скрипта,
Ставим тайминг на получение сигналов на вход,
Устанавливаем таймер на приостановку скрипта.
smart-lab.ru/blog/925421.php
Qlua советник: дополняем сигналами на закрытие позиции, таблицей для вывода данных и расчетом финансового результата по позициям.
Дополняем сигналами на закрытие позиции.
Создаем дополнительную таблицу для вывода данных.
Делаем расчет финансового результата.
smart-lab.ru/blog/926972.php
Qlua: завершаем апгрейд советника:
Пропуск «поздних» сигналов на старте.
Обработка советником обрыва связи.
Сохранение сигналов и логов в файл.
smart-lab.ru/blog/927748.php
Qlua: пишем скринер акций Московской биржи
smart-lab.ru/blog/928152.php
Qlua: получение данных биржевых свечей с сервера брокера, обработка данных, пишем скрипт выгрузки котировок
Функция CreateDataSource
Получение количества свечек данных
Пауза для подгрузки данных
Получение по инструменту OPEN, HIGH, LOW, CLOSE, VOLUME
Обработка времени и даты
Закрытие источника данных
Примеры: получение данных последних 10 свечей, выгрузка новой минутной свечки после её закрытия, текущее значение простой средней SMA10 по минуткам
Простой скрипт выгрузки котировок
smart-lab.ru/blog/929905.php
Qlua: получение данных с графиков терминала.
Идентификатор инструмента
Получаем количество свечей через getNumCandles
Получаем свечные данных через getCandlesByIndex
Читаем данные с индикатора SMA
Данные с верхней и нижней линии Price Channel
Графики с таблицы текущих торгов.
Сравнение получение данных через CreateDataSource и через getCandlesByIndex
smart-lab.ru/blog/931408.php
Qlua: работа с метками, пишем торгового советника на индикаторах.
Вывод текста на график
Вывод графических сигналов
Удаление меток с графика
Торговый советник на индикаторах
Удаление данных вечерней/утренней сессии с графика.
smart-lab.ru/blog/933582.php
Qlua: работа с лентой всех сделок.
Что такое таблица обезличенных сделок.
Настройка таблицы в терминале.
Что делать, если таблица открылась, но она пустая.
Вывод данных с таблицы по DDE.
Работа с таблицей обезличенных сделок через скрипт qlua с примерами.
Пишем советника, показывающего на графике крупных игроков.
smart-lab.ru/blog/935919.php
Qlua: работа с лентой всех сделок (часть 2).
Различия данных ленты всех сделок и биржевого стакана.
Большие покупки и продажи в ленте сделок и динамика цены.
Альтернативные варианты поиск крупных игроков по ленте сделок.
smart-lab.ru/blog/938053.php
Qlua: дополняем скринер акций статистикой, лидерами роста и падения.
Добавляем статистику по акциям роста и падения.
Составляем TOP лидеров роста и падения.
Быстрый поиск акций по тикеру в терминале.
smart-lab.ru/blog/938450.php
Qlua: работа с биржевым стаканом.
Работа с биржевым стаканом через getQuoteLevel2
Особенность нумерации в стакане заявок терминала квик
Работа через функцию обратного вызова OnQuote
Примеры работы со стаканом из скрипта
Сравнение реализации одного алгоритма через разные функции
smart-lab.ru/blog/940742.php
Qlua: работа с заявками (часть 1).
Зачем нужен демо терминал
Где открыть учебный счет
Выставление заявки в торговом терминале через скрипт
Делаем функцию выставления заявки по требуемым условиям
Карман заявок и tri-файлы
Параметры для заявок с примерами по разным рынкам
smart-lab.ru/blog/942481.php
Qlua: работа с заявками (часть 2).
Узнаем общее количество заявок
Функции getNumberOf и getItem
Как пройтись циклом по всем заявкам
Вывод активных заявок
Снять скриптом заявку
Снимаем все активные заявки скриптом
Снимаем только заявки, выставленные конкретным скриптом
smart-lab.ru/blog/944520.php
Qlua: работа с заявками (часть 3).
Функция OnTransReply
Функция OnOrder
Получение остатка по заявке, контроль исполнения полного объема
Таблица транзакций
Общая логика выставления лимитной заявки в стакане
smart-lab.ru/blog/949198.php
Qlua: работа со сделками, позициями и денежными лимитами (часть 1).
Функция OnTrade
Сохранение параметров сделки в файл.
Работа с таблицей сделок.
Сохранение всех сделок дня.
Скрипт автосохранения всех заявок и сделок под завершение торгового дня.
smart-lab.ru/blog/1006981.php
Подробнее https://smart-lab....








