Инструменты пользователя

Инструменты сайта


atf:позиции_клиента

Позиции клиента

Спот рынок

Для получения позиций клиента по акциям и облигациям пользователю доступны следующие функции:

  • getBought() - Количество купленных бумаг. Когда используется для акций, отсчет ведется с начала торговой сессии.
  • getBoughtMoney() - Количество денег, на которые было куплено активов за текущий день
  • getMoneyBalance() - Количество свободных средств
  • getMoneyInBuyOrd() - Количество денег, на которые выставлено заявок на покупку (включая комиссию)
  • getSaldoIn() - Количество денег на начало дня
  • getSold() - Количество проданных бумаг.
  • getSecBalance() - количество активного финансового инструмента в портфеле
  • getSoldMoney() - количество денег, на которые было продано активов за текущий день

Все перечисленные выше функции (кроме getBought и getSold) работают только для акций и облигаций. В качестве клиента, для которого они возвращают позицию, используется выбранный клиент в раскрывающемся меню в панели управления, либо клиент, установленный для данного скрипта функцией setClient().

Обратите внимание, что позицию по конкретной бумаге вы можете отслеживать в поле структуры сделки (поле currentpos).

Срочный рынок (ATF 1.16)

Механизм отслеживания позиций для рынка ФОРТС реализован с большими отличиями от того, как это реализовано для рынка акций и облигаций. По причине того, что для рынка ФОРТС много данных рассчитывается и изменяется в реальном времени или во время клиринга, клиент Transaq не имеет постоянно актуальной информации по позициям клиента. Для того, чтобы их получить, требуется отправить отдельный запрос на сервер, после чего через доли секунды (при хорошей связи) от сервера приходит информация по текущим позициям FORTS.

Как только позиции получены, их можно прочитать с помощью функции getFORTSPosition() (если интересуют контракты) либо getFORTSMoney (если интересуют деньги).

Перечисленные функции имеют следующие аргументы:

  • getFORTSMoney(client) - передается клиент, финансовые средства которого интересуют.
  • getFORTSPosition(client, secid) - передается клиент и идентификатор бумаги, для которой необходимо получить позицию.
  • requestFORTSPositions(client) - передается клиент, по которому необходимо запросить позицию.

В момент, когда от сервера приходят данные о позициях, они сохраняются в локальном хеше, и при вызове getFORTSPosition или getFORTSMoney считываются из него в хеш. Соответственно вызывать эти функции можно в любой момент, но то что они вернут будет актуально лишь на момент последнего выполненного запроса к серверу.

Хеш, возвращаемый функцией getFORTSMoney имеет следующие поля:

  • zcurrent - залоги текущие
  • zblocked - залогов заблокировано
  • zfree - залоги свободные
  • mcurrent - деньги текущие
  • mblocked - денег заблокировано
  • mfree - деньги свободные
  • spotbuylimit - текущий лимит
  • spotbuylimitused - заблокировано лимита

Хеш, возвращаемый функцией getFORTSPosition имеет следующие поля:

  • startnet - входящая позиция
  • openbuys - в заявках на покупку
  • opensells - в заявках на продажу
  • totalnet - текущая позиция
  • todaybuy - куплено
  • todaysell - продано
  • optmargin - маржа для маржируемых опционов
  • varmargin - вариационная маржа
  • expirationpos - опционов в заявках на исполнение
  • usedsellspotlimit - объем использованного стоп-лимита на продажу
  • sellspotlimit - текущий стоп-лимит на продажу, установленный брокером
  • netto - нетто-позиция по всем инструментам данного спота
  • kgo - коэффициент ГО

Данные поля имеют отношение лишь к тому инструменту, идентификатор которого был передан функции getFORTSPosition в качестве аргумента.

В сам момент получения данных от сервера генерируется Окружение ATF CLIENT_HOLDINGS, по которому можно отследить момент получения свежих данных. Более простыми словами, в момент получения данных от сервера, в ATF срабатывает переопределяемая пользователем функция onEnvEvent(eventname), аргументом для которой передается строка «CLIENT_HOLDINGS»:

function onEnvEvent(var eventname)
{
  if (eventname == "CLIENT_HOLDINGS") {
    // Здесь мы знаем, что только что
    // была получена свежая информация
    // о позициях клиента
  }
}

Дополнительно к этому для ФОРТС доступны функции:

  • getBought() - Количество купленных контрактов.
  • getSold() - Количество проданных контрактов.

Эти функции рассчитываются за весь день и за предыдущую вечернюю сессию для текущего клиента.

Так же возможно использования поля currentpos в структуре сделки.

Начиная с версии ATF 1.19 доступнен так же запрос лимитов по клиенту. Общая техника работы с лимитами такая же ,как и с позициями FORTS: вначале отправляется запрос на получение лимитов, затем в асинхронном режиме можно получать последние данные, которые прислал сервер Transaq. Само событие прихода лимитов от сервера обозначается событием окружения CLIENT_LIMITS. Следующий пример демонстрирует каким образом можно получить количество свободных денег и вывести их в диалог при нажатии Shift+M:

#samewindow
#line 0 nodraw
 
function onEnvEvent(var event)
{
  if (event == "CLIENT_LIMITS") {
    var limits = getClientLimits(getClient());
    signal::outputMultiple(limits["money_free"]);
  }
}
 
function onKeyDown(var key)
{
  if (key == chr2num("M") and isKeyPressed(KEY_LSHIFT)) {
    requestClientLimits(getClient());
  }
}

Функции для запроса и получения лимитов:

  • requestClientLimits(id) - запросить лимиты по клиенту с идентификатором id
  • getClientLimits(id) - получить в виде хеша лимиты по клиенту с идентификатором id

При получении от сервера лимитов генерируется событие окружения CLIENT_LIMITS.

Хэш, возвращаемый функцией getClientLimits, имеет следующие поля:

  • cbplimit - стоимостной лимит открытых позиций (СЛОП срочн. рынок ММВБ)
  • cbplused - стоимостная оценка текущих чистых позиций (СОЧП срочн. рынок ММВБ)
  • cbplplanned - СОЧП с учетом активных заявок (срочный рынок ММВБ)
  • coverage - Обеспеченность срочного портфеля (FORTS)
  • liquidity_c - Коэффициент ликвидности(FORTS)
  • profit - Доход(FORTS)
  • money_current - Деньги текущие
  • money_reserve - Деньги заблокированные
  • money_free - Деньги свободные
  • options_premium - Премии по опционам(FORTS)
  • exchange_fee - Биржевой сбор(FORTS)
  • vm_reserved - Сумма, зарезервированная под отрицательную вармаржу по закрытым позициям
  • varmargin - Вариационная маржа
  • pclmargin - Перечисленная в пром.клиринге вариационная маржа(FORTS)
  • options_vm Вар. маржа по опционам(FORTS)
  • spot_buy_limit Лимит на покупку спот
  • used_stop_buy_limit Лимит на покупку спот использованный
  • collat_current Залоги текущие
  • collat_blocked Залоги заблокированные
  • collat_free Залоги свободные

Заявки и сделки

Так же позицию по заявкам, сделкам и портфелю можно отслеживать с помощью обычных функций работы с заявками и сделками (основное внимание заслуживает поле currentpos в структуре сделки):

  • getActiveOrderIDs() - получить массив идентификаторов всех активных заявок по данной бумаге и активному клиенту. (ver. 1.12)
  • getActiveStopOrderIDs() - получить массив идентификаторов всех активных стоп-заявок по данной бумаге и активному клиенту. (ver. 1.12)
  • getAllOrderIDs() - получить массив идентификаторов всех заявок (включая условные, но за исключением стоп-заявок, по всем клиентам и бумагам, включая исполненные и снятые). (ver. 1.12)
  • getAllStopOrderIDs() - Получить массив идентификаторов всех стоп-заявок (по всем клиентам и бумагам, включая исполненные и снятые). (ver. 1.12)
  • getAllTradeIDs() - получить массив идентификаторов всех клиентских сделок (ATF 1.17)
  • getAllTradeIDsBySec() - получить массив идентификаторов всех клиентских сделок по текущей бумаге (ATF 1.17)
  • getAllTradeIDsBySec(id) - получить массив идентификаторов всех клиентских сделок по бумаге с идентификатором id (ATF 1.17)
  • getOrder(id) - получить заявку по идентификатору или хэшу (начиная с ATF 1.16), в котором заполнено либо trnid, либо orderno (приоритет для trnid)
  • getStopOrder(id) - получить стоп-заявку по идентификатору
  • getTrade(id) - получить сделку по идентификатору
  • onOrder(id) - событие изменения статуса заявки или выставления заявки. (ATF 1.16)
  • onStopOrder(id) - событие изменения статуса или выставления стоп-заявки (ATF 1.16)
  • onTrade(id) - событие совершения сделки (ATF 1.16)
atf/позиции_клиента.txt · Последние изменения: 2013/10/01 19:17 — oleg