transaction = { ACCOUNT="YY0070001234", CLIENT_CODE="XXX", TYPE="M", TRANS_ID="7", CLASSCODE="TQBR", SECCODE="HYDR", ACTION="NEW_ORDER", OPERATION="B", PRICE="0", QUANTITY="15" }
Параметр | Тип | Описание |
---|---|---|
CLASSCODE | - | Код класса, по которому выполняется транзакция, например TQBR. Обязательный параметр |
SECCODE | - | Код инструмента, по которому выполняется транзакция, например SBER |
ACTION | - | Вид транзакции, имеющий одно из следующих значений:
«NEW_ORDER» – новая заявка, «NEW_NEG_DEAL» – новая заявка на внебиржевую сделку, «NEW_REPO_NEG_DEAL» – новая заявка на сделку РЕПО, «NEW_EXT_REPO_NEG_DEAL» – новая заявка на сделку модифицированного РЕПО (РЕПО-М), «NEW_STOP_ORDER» – новая стоп-заявка, «KILL_ORDER» – снять заявку, «KILL_NEG_DEAL» – снять заявку на внебиржевую сделку или заявку на сделку РЕПО, «KILL_STOP_ORDER» – снять стоп-заявку, «KILL_ALL_ORDERS» – снять все заявки из торговой системы, «KILL_ALL_STOP_ORDERS» – снять все стоп-заявки, «KILL_ALL_NEG_DEALS» – снять все заявки на внебиржевые сделки и заявки на сделки РЕПО, «KILL_ALL_FUTURES_ORDERS» – снять все заявки на рынке FORTS, «MOVE_ORDERS» – переставить заявки на рынке FORTS, «NEW_QUOTE» – новая безадресная заявка, «KILL_QUOTE» – снять безадресную заявку, «NEW_REPORT» – новая заявка-отчет о подтверждении транзакций в режимах РПС и РЕПО, «SET_FUT_LIMIT» – новое ограничение по фьючерсному счету |
FIRM_ID | - | Идентификатор участника торгов (код фирмы) |
ACCOUNT | - | Номер счета Трейдера. Параметр обязателен при «ACTION» = «KILL_ALL_FUTURES_ORDERS». Параметр чувствителен к верхнему/нижнему регистру символов |
CLIENT_CODE | - | 20-ти символьное составное поле, может содержать код клиента и текстовый комментарий (поручение) с тем же разделителем, что и при вводе заявки вручную. Необязательный параметр |
TYPE | - | Тип заявки, необязательный параметр. Значения: «L» – лимитированная (по умолчанию), «M» – рыночная |
MARKET_MAKER_ORDER | - | Признак того, является ли заявка заявкой Маркет-Мейкера. Возможные значения: «YES» или «NO». Значение по умолчанию (если параметр отсутствует): «NO» |
OPERATION | - | Направление заявки, обязательный параметр. Значения: «S» – продать, «B» – купить |
EXECUTION_CONDITION | - | Условие исполнения заявки, необязательный параметр. Возможные значения:
«PUT_IN_QUEUE» – поставить в очередь (по умолчанию), «FILL_OR_KILL» – немедленно или отклонить, «KILL_BALANCE» – снять остаток |
QUANTITY | - | Количество лотов в заявке, обязательный параметр |
REPOVALUE | - | Объем сделки РЕПО-М в рублях |
START_DISCOUNT | - | Начальное значение дисконта в заявке на сделку РЕПО-М |
LOWER_DISCOUNT | - | Нижнее предельное значение дисконта в заявке на сделку РЕПО-М |
UPPER_DISCOUNT | - | Верхнее предельное значение дисконта в заявке на сделку РЕПО-М |
PRICE | - | Цена заявки, за единицу инструмента. Обязательный параметр. При выставлении рыночной заявки (TYPE=M) на Срочном рынке FORTS необходимо указывать значение цены – укажите наихудшую (минимально или максимально возможную – в зависимости от направленности), заявка все равно будет исполнена по рыночной цене. Для других рынков при выставлении рыночной заявки укажите price=0 |
STOPPRICE | - | Стоп-цена, за единицу инструмента. Используется только при «ACTION» = «NEW_STOP_ORDER» |
STOP_ORDER_KIND | - | Тип стоп-заявки. Возможные значения:
«SIMPLE_STOP_ORDER» – стоп-лимит, «CONDITION_PRICE_BY_OTHER_SEC» – с условием по другой бумаге, «WITH_LINKED_LIMIT_ORDER» – со связанной заявкой, «TAKE_PROFIT_STOP_ORDER» – тэйк-профит, «TAKE_PROFIT_AND_STOP_LIMIT_ORDER» – тэйк-профит и стоп-лимит, «ACTIVATED_BY_ORDER_SIMPLE_STOP_ORDER» – стоп-лимит по исполнению заявки, «ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER» – тэйк-профит по исполнению заявки, «ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER» – тэйк-профит и стоп-лимит по исполнению заявки Если параметр пропущен, то считается, что заявка имеет тип «стоп-лимит» |
STOPPRICE_CLASSCODE | - | Класс инструмента условия. Используется только при «STOP_ORDER_KIND» = «CONDITION_PRICE_BY_OTHER_SEC» |
STOPPRICE_SECCODE | - | Код инструмента условия. Используется только при «STOP_ORDER_KIND» = «CONDITION_PRICE_BY_OTHER_SEC» |
STOPPRICE_CONDITION | - | Направление предельного изменения стоп-цены. Используется только при «STOP_ORDER_KIND» = «CONDITION_PRICE_BY_OTHER_SEC». Возможные значения: «<=» или «>=» |
LINKED_ORDER_PRICE | - | Цена связанной лимитированной заявки. Используется только при «STOP_ORDER_KIND» = «WITH_LINKED_LIMIT_ORDER» |
EXPIRY_DATE | - | Срок действия стоп-заявки. Возможные значения:
«GTC» – до отмены; «TODAY» – до окончания текущей торговой сессии; Дата в формате «ГГГГММДД» |
STOPPRICE2 | - | Цена условия «стоп-лимит» для заявки типа «Тэйк-профит и стоп-лимит» |
MARKET_STOP_LIMIT | - | Признак исполнения заявки по рыночной цене при наступлении условия «стоп- лимит». Значения «YES» или «NO». Параметр заявок типа «Тэйк-профит и стоп- лимит» |
MARKET_TAKE_PROFIT | - | Признак исполнения заявки по рыночной цене при наступлении условия «тэйк- профит». Значения «YES» или «NO». Параметр заявок типа «Тэйк-профит и стоп-лимит» |
IS_ACTIVE_IN_TIME | - | Признак действия заявки типа «Тэйк-профит и стоп-лимит» в течение определенного интервала времени. Значения «YES» или «NO» |
ACTIVE_FROM_TIME | - | Время начала действия заявки типа «Тэйк-профит и стоп-лимит» в формате «ЧЧММСС» |
ACTIVE_TO_TIME | - | Время окончания действия заявки типа «Тэйк-профит и стоп-лимит» в формате «ЧЧММСС» |
PARTNER | - | Код организации – партнера по внебиржевой сделке Применяется при «ACTION» = «NEW_NEG_DEAL», «ACTION» = «NEW_REPO_NEG_DEAL» или «ACTION» = «NEW_EXT_REPO_NEG_DEAL» |
ORDER_KEY | - | Номер заявки, снимаемой из торговой системы Применяется при «ACTION» = «KILL_ORDER» или «ACTION» = «KILL_NEG_DEAL» или «ACTION» = «KILL_QUOTE» |
STOP_ORDER_KEY | - | Номер стоп-заявки, снимаемой из торговой системы. Применяется только при «ACTION» = «KILL_STOP_ORDER» |
TRANS_ID | - | Уникальный идентификационный номер заявки, значение от «1» до «2 147 483 647» |
SETTLE_CODE | - | Код расчетов при исполнении внебиржевых заявок |
PRICE2 | - | Цена второй части РЕПО |
REPOTERM | - | Срок РЕПО. Параметр сделок РЕПО-М |
REPORATE | - | Ставка РЕПО, в процентах |
BLOCK_SECURITIES | - | Признак блокировки бумаг на время операции РЕПО («YES», «NO») |
REFUNDRATE | - | Ставка фиксированного возмещения, выплачиваемого в случае неисполнения второй части РЕПО, в процентах |
COMMENT | - | Текстовый комментарий, указанный в заявке. Используется при снятии группы заявок |
LARGE_TRADE | - | Признак крупной сделки (YES/NO). Параметр внебиржевой сделки |
CURR_CODE | - | Код валюты расчетов по внебиржевой сделки, например «SUR» – рубли РФ, «USD» – доллары США. Параметр внебиржевой сделки |
FOR_ACCOUNT | - | Лицо, от имени которого и за чей счет регистрируется сделка (параметр внебиржевой сделки). Возможные значения:
«OWNOWN» – от своего имени, за свой счет, «OWNCLI» – от своего имени, за счет клиента, «OWNDUP» – от своего имени, за счет доверительного управления, «CLICLI» – от имени клиента, за счет клиента |
SETTLE_DATE | - | Дата исполнения внебиржевой сделки |
KILL_IF_LINKED_ORDER_ PARTLY_FILLED | - | Признак снятия стоп-заявки при частичном исполнении связанной лимитированной заявки. Используется только при «STOP_ORDER_KIND» = «WITH_LINKED_LIMIT_ORDER». Возможные значения: «YES» или «NO» |
OFFSET | - | Величина отступа от максимума (минимума) цены последней сделки. Используется при «STOP_ORDER_KIND» = «TAKE_PROFIT_STOP_ORDER» или «ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER» |
OFFSET_UNITS | - | Единицы измерения отступа. Возможные значения:
«PERCENTS» – в процентах (шаг изменения – одна сотая процента), «PRICE_UNITS» – в параметрах цены (шаг изменения равен шагу цены по данному инструменту) Используется при «STOP_ORDER_KIND» = «TAKE_PROFIT_STOP_ORDER» или «ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER» |
SPREAD | - | Величина защитного спрэда. Используется при «STOP_ORDER_KIND» = «TAKE_PROFIT_STOP_ORDER» или «ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER» |
SPREAD_UNITS | - | Единицы измерения защитного спрэда. Возможные значения:
«PERCENTS» – в процентах (шаг изменения – одна сотая процента), «PRICE_UNITS» – в параметрах цены (шаг изменения равен шагу цены по данному инструменту) Используется при «STOP_ORDER_KIND» = «TAKE_PROFIT_STOP_ORDER» или «ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER» |
BASE_ORDER_KEY | - | Регистрационный номер заявки-условия. Используется при «STOP_ORDER_KIND» = «ACTIVATED_BY_ORDER_SIMPLE_STOP_ORDER» или «ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER» |
USE_BASE_ORDER_ BALANCE | - | Признак использования в качестве объема заявки «по исполнению» исполненного количества бумаг заявки-условия. Возможные значения: «YES» или «NO». Используется при «STOP_ORDER_KIND» = «ACTIVATED_BY_ORDER_SIMPLE_STOP_ORDER» или «ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER» |
ACTIVATE_IF_BASE_ ORDER_PARTLY_FILLED | - | Признак активации заявки «по исполнению» при частичном исполнении заявки-условия. Возможные значения: «YES» или «NO». Используется при «STOP_ORDER_KIND» = «ACTIVATED_BY_ORDER_SIMPLE_STOP_ORDER» или «ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER» |
BASE_CONTRACT | - | Идентификатор базового контракта для фьючерсов или опционов. Обязательный параметр снятия заявок на рынке FORTS |
MODE | - | Режим перестановки заявок на рынке FORTS. Параметр операции «ACTION» = «MOVE_ORDERS» Возможные значения:
«0» – оставить количество в заявках без изменения, «1» – изменить количество в заявках на новые, «2» – при несовпадении новых количеств с текущим хотя бы в одной заявке, обе заявки снимаются |
FIRST_ORDER_NUMBER | - | Номер первой заявки |
FIRST_ORDER_NEW_ QUANTITY | - | Количество в первой заявке |
FIRST_ORDER_NEW_ PRICE | - | Цена в первой заявке |
SECOND_ORDER_ NUMBER | - | Номер второй заявки |
SECOND_ORDER_NEW_ QUANTITY | - | Количество во второй заявке |
SECOND_ORDER_NEW_ PRICE | - | Цена во второй заявке |
KILL_ACTIVE_ORDERS | - | Признак снятия активных заявок по данному инструменту. Используется только при «ACTION» = «NEW_QUOTE». Возможные значения: «YES» или «NO» |
NEG_TRADE_OPERATION | - | Направление операции в сделке, подтверждаемой отчетом |
NEG_TRADE_NUMBER | - | Номер подтверждаемой отчетом сделки для исполнения |
VOLUMEMN | - | Лимит открытых позиций, при «Тип лимита» = «Ден.средства» или «Всего» |
VOLUMEPL | - | Лимит открытых позиций, при «Тип лимита» = «Залоговые ден.средства» |
KFL | - | Коэффициент ликвидности |
KGO | - | Коэффициент клиентского гарантийного обеспечения |
USE_KGO | - | Параметр, который определяет, будет ли загружаться величина КГО при загрузке лимитов из файла:
при USE_KGO=Y – величина КГО загружается. при USE_KGO=N – величина КГО не загружается При установке лимита на Срочном рынке Московской Биржи с принудительным понижением (см. п.7.7.2 Раздела 7 «Операции брокера») требуется указать USE_KGO=Y |
CHECK_LIMITS | - | Признак проверки попадания цены заявки в диапазон допустимых цен. Параметр Срочного рынка FORTS. Необязательный параметр транзакций установки новых заявок по классам «Опционы ФОРТС» и «РПС: Опционы ФОРТС». Возможные значения: «YES» – выполнять проверку, «NO» – не выполнять |
MATCHREF | - | Ссылка, которая связывает две сделки РЕПО или РПС. Сделка может быть заключена только между контрагентами, указавшими одинаковое значение этого параметра в своих заявках. Параметр представляет собой произвольный набор символов (допускаются цифры и буквы количеством до 10). Необязательный параметр |
CORRECTION | - | Режим корректировки ограничения по фьючерсным счетам. Возможные значения:
«Y» – включен, установкой лимита изменяется действующее значение, «N» – выключен (по умолчанию), установкой лимита задается новое значение |
-- Пример отправки рыночной заявки -- Код класса class_code = "QJSIM" -- Код бумаги sec_code = "SBER" -- Номер счета account = "NL0011100043" -- Классы фьючерсов и опционов FUT_OPT_CLASSES = "FUTUX, OPTUX, SPBOPT, SPBFUT" -- Уникальное число берется из текущей полной даты и времени. -- Используется для получения случайного числа RANDOM_SEED = tonumber(os.date("%Y%m%d%H%M%S")) function main() -- Вызываем функцию отправки рыночной заявки на покупку. 1 контракт local trans_id, trans_msg = send_market("B", 1) -- Выводим результат в виде сообщени message("trans_id: " .. tostring(trans_id) .. "; trans_msg: " .. tostring(trans_msg)) end -- Функция для отравки рыночной заявки function send_market(direction, volume, comment) -- отправка рыночной заявки -- все параметры кроме кода клиента и коментария должны быть не nil -- если код клиента nil - подлставляем счет -- Данная функция возвращает 2 параметра -- 1. ID присвоенный транзакции либо nil если транзакция отвергнута на уровне сервера Квик -- 2. Ответное сообщение сервера Квик либо строку с параметрами транзакции if (class_code == nil or sec_code == nil or direction == nil or volume == nil or account == nil) then return nil, "Can`t send order. Nil parameters." end -- Получаем случайное уникальное число для id local trans_id = random_max() -- Таблица параметров транзацкии local transaction={ ["TRANS_ID"] = tostring(trans_id), ["ACTION"] = "NEW_ORDER", ["CLASSCODE"] = class_code, ["SECCODE"] = sec_code, ["OPERATION"] = direction, ["TYPE"] = "M", ["QUANTITY"] = string.format("%d", tostring(volume)), ["ACCOUNT"] = account } -- Если нет кода клиента, то вместо него подставляем номер счета if client_code == nil then transaction.client_code = account else transaction.client_code = client_code end -- Если это заявка для Фьючерсов if string.find(FUT_OPT_CLASSES, class_code) ~= nil then local sign = 0 -- Для покупки if direction == "B" then sign = 1 -- Получаем максимальную цену transaction.price = getParamEx(class_code, sec_code, "pricemax").param_value -- Если текущая цена 0 if transaction.price == 0 then -- Берем цену предложения и добавляем 10 шагов transaction.price = getParamEx(class_code, sec_code, "offer").param_value + 10 * getParamEx(class_code, sec_code, "SEC_PRICE_STEP").param_value end else sign = -1 -- Для продажи берем минимальную цену transaction.price = getParamEx(class_code, sec_code, "pricemin").param_value -- Если текущая цена 0 if transaction.price == 0 then -- Берем цену Bid и отнимаем 10 шагов transaction.price = getParamEx(class_code, sec_code, "bid").param_value - 10 * getParamEx(class_code, sec_code, "SEC_PRICE_STEP").param_value end end -- Если цена так и не установилась if transaction.price == 0 then -- То пытаемся отнять/прибавть 10 шагов к последней известной цене transaction.price = getParamEx(class_code, sec_code, "last").param_value + sign * 10 * getParamEx(class_code, sec_code, "SEC_PRICE_STEP").param_value end -- Форматируем цену transaction.price = to_price(sec_code, transaction.price, class_code) else transaction.price = "0" end -- Если комментарий не указан if comment ~= nil then transaction.client_code = string.sub(transaction.client_code .. '/' .. tostring(comment), 0, 20) else transaction.client_code = string.sub(transaction.client_code, 0, 20) end -- Отправляем транзацкию local res = sendTransaction(transaction) -- Если незультат не пустой if res ~= "" then return nil, res else local msg = "Market order sended sucesfully. Class = " .. class_code .. " Sec = " .. sec_code .. " Dir = " .. direction .. " Vol = " .. volume .. " Acc = " .. account .. " Trans_id = " .. trans_id .. " Price = " .. transaction.price return trans_id, msg end end function random_max() -- не принимает параметры и возвращает от 0 до 2147483647 (макс. полож. 32 битное число) подходит нам для транзакций local res = (16807*(RANDOM_SEED or 137137))%2147483647 RANDOM_SEED = res return res end function to_price(security, value, class) -- преобразования значения value к цене инструмента правильного ФОРМАТА (обрезаем лишнии знаки после разделителя) -- Возвращает строку if (security == nil or value == nil) then return nil end local scale = getSecurityInfo(class or getSecurityInfo("", security).class_code, security).scale return string.format("%."..string.format("%d", scale).."f", tonumber(value)) end