Добрый день. Пытаюсь снять заявку из QLUA. Периодически приходит отказ от выполнения транзакции по снятию заявки без вызова OnTransReply callback. В таблицу ордеров приходит сообщение :
Код
Transaction ID Status Status ex Message Date Time Time (microsec) Order number Class code Instrument code Side Price Error code Error source Transaction
1,008 5 QUIK server check failed for transaction Impossible to withdraw an order 8/12/2020 9:34:24 PM 974124 TQBR SBER Buy 0.00 8,635,230 QUIK server Withdraw order by number
Вопросы:
1. по какой причине происходит отказ в снятии ордера? Error code - 8,635,230 что это такое? 2. почему не срабатывает OnTransReply callback если данные в таблицу транзакций приходят? 3. почему не срабатывает OnTransReply callback при направлении транзакции на снятие через sendTransaction? 4. как получить данные из таблицы транзакций средствами QLUA?
Andrey Bezrukov написал: или используются какие-либо сторонний API
Загрузку dll производит info.exe
Код
The thread 0x2564 has exited with code 0 (0x0).'info.exe' (Win32): Loaded 'C:\Windows\System32\msftedit.dll'. The thread 0x4918 has exited with code 0 (0x0).
Andrey Bezrukov написал: В вашем случае, вероятно, при используемой настройке "Исходя из открытых пользователем таблиц" закрыли таблицы с фьючерсами и оставили таблицы с прочими классами, и поэтому данные обновления прекратили поступать в рабочее место, соответственно, OnParam для фьючерсный не вызывался, а для других классов вызывался. Предлагаем проверить этот момент. Если исключить этот случай, то просьба уточнить - в таблице текущих торгов данные по срочным контрактам обновляются при отсутствии вызовов OnPAram для них? Или в ТТТ обновлений также не наблюдаете?
1. таблицы по фьючерсам открыты (и не закрывались)
2. Какие поля таблицы должны обновляться по фьючерсам?
Вывел все доступные поля для фьючерсов (т.е. у которых результат является true) - на разукрашивание внимание не обращайте лучшие бид и аски не доступны, число трейдов не доступно.
Есть предположение что во время клиринга меняется clprice и только по этому вызывается callback OnParam, но это не точно.
Добрый день. Перестал срабатывать callback OnParam для класса SPBFUT. В чем может быть проблема? Пробовал перезаказать данные, не помогло. Данные в терминал по фьючерсам приходят. QUIK 8.7.1.3
Код
function OnParam(class, sec)
if class =="SPBFUT" then
message(class .. " " .. sec)
end
end
Добрый день. Как можно отслеживать изменения описания полей транзакции в универсальном формате и их вожможные значения кроме как постоянно сравнивать с выгрузкой из Transaction Pocket? В документации кроме примеров подробного описания нет.
Добрый день. При направлении заявки из QLUA через sendTransaction(args) должн срабатывать OnTransReply callback. При этом в документации указано, что возможны несколько состояний поля status
Вопрос: почему не приходят коллбэки со статусом "0" и "1" ?
Добрый день. Подскажите почему при вызове функции getDepo выводятся нулевые значения полей таблицы? При этом с такими же аргументами функция getDepoEx выводит нормальные значения.
Код
function OnInit()
t = getDepo("xxxx", "yyyy", "SBER", "zzzz");
if t == nil then
msg = "table from getDepo(arg) is nill";
else
msg = "table from getDepo(arg) is NOT nill";
end
d = "depo_limit_locked_buy_value = " .. tostring(t.depo_limit_locked_buy_value) .. "\n" ..
"depo_limit_locked_buy = " .. tostring(t.depo_limit_locked_buy) .. "\n" ..
"depo_current_balance = " .. tostring(t.depo_current_balance) .. "\n" ..
"depo_limit_locked = " .. tostring(t.depo_limit_locked) .. "\n" ..
"depo_limit_available = " .. tostring(t.depo_limit_available) .. "\n" ..
"depo_current_limit = " .. tostring(t.depo_current_limit) .. "\n" ..
"depo_open_balance = " .. tostring(t.depo_open_balance) .. "\n" ..
"depo_open_limit = " .. tostring(t.depo_open_limit) .. "\n";
message(msg .. "\n\n\n" .. d);end
end
Andrey Bezrukov написал: для решения Вашей задачи всё же стоит использовать таблицы с данными по позициям на клиентских счетах, таких как "money_limits", "depo-limits"
Я использую эти таблицы, но хотел посмотреть какую информацию содержат таблицы в вопросе.
Можете привести примеры скриншотов таблиц ?
"acc_bal" - Таблица позиций участника по торговым счетам. "acc_pos" - Позиции участника по деньгам "firm_holding" - Позиции участника по инструментам
Andrey Bezrukov написал: Данные таблицы содержат информацию о позициях брокера в торговой системе биржи, а не позиции отдельного клиента (Ваше счёта).
Таким образом, под 'участниками' понимается исключительно брокер? И доступ к ним организовывает Брокер? Если так то эту информацию необходимо указывать в документации к QLUA.chmю Прошу зарегистрировать предложение.
"acc_bal" - Таблица позиций 'участника' по торговым счетам. "acc_pos" - Позиции 'участника' по деньгам "firm_holding" - Позиции 'участника' по инструментам
Какие еще таблицы доступны с разрешения брокера? Прошу привести полный перечень.
Добрый день. Почему таблицы "account_positions", "account_balance" и "firm_holding" не имеют ни одной строки?
Код
function OnInit()
Item("account_positions");
Item("account_balance");
Item("firm_holding");
end
function Item(table_name)
n = getNumberOf(table_name)
message("number row of " .. table_name .. " = " .. n );
for i=0,n-1 do
item_row = getItem(table_name, i);
end
end
Добрый день. Хочу получить данные по фьючерным лимитам. Выбрал три варианта (см.картинку)
Вопросы: 1. почему в таблицах (вариант 1 и 2) имеются две записи с limit_type = 0 (Cash), а в третьем варианте только одна строка с таким типом лимита? 2. Что является достоверной информацией : варианты 1 и 2 или вариант 3 ?
Anton написал: У вас указана валюта SUR, под это ограничение только одна строка таблицы и попадает. Надо заменить на пустую строку.
Можете дополнительно прокоментировать почему таблицы "account_positions" , "account_balance" и "firm_holding" не имеют ни одной строки?
Код
function OnInit()
Item("account_positions");
Item("account_balance");
Item("firm_holding");
end
function Item(table_name)
n = getNumberOf(table_name)
message("number row of " .. table_name .. " = " .. n );
for i=0,n-1 do
item_row = getItem(table_name, i);
end
end
Добрый день Пытаюсь получить информацию по фьючерсным лимитам через функцию
Код
function OnInit()
for i = 0,7 do
fut_limit = getFuturesLimit("SPBFUT", "SPBFUTxxxxx", i, "SUR");
if fut_limit == nil then
msg = "fut_limit for limit_type = " .. i .. " is nill";
else
msg = "fut_limit for limit_type = " .. i .. " is NOT nill";
end
message(msg);
end
end
при этом возвращаются данные только для limit_type = 0
Однако в QUIK присутствет строка в таблице с limit_type = 3
Каким образом получить все данные по фьючерсным лимитам, доступные в таблице QUIK?
Добрый день. При дисконнекте и восстановлении связи (вводе логина и пароля) происходит вызов callback OnTransReply; Статус (занчение равно 3) - транзакция выполнена. При этом ни каких транзаций пользователь не отправлял. Почему поле gate_reply_time имеет столь неясное значение? Прошу пояснить.
Egor Zaytsev написал: А в QUIK таблице, что транслируется?
как эти поля называются в QUIK в английской версии? явного названия fut_rate_asset and fut_rate_asset_open нет. Поскольку портфели на forts у меня пустые, то в таблице только 0 или 1 При этом поле client_type для forts = F (значение 10 в 8.jpg) При этом поле client_type для фондового рнка = MD+ (значение 5 в 8.jpg)
Таблица Клиентский портфель получаем значения из QUIK функциями getPortfolioInfo(args) and getPortfolioInfoEx(args)
1. интересует значение поля client_type - в qlua.chm - STRING (6.jpg) - info.chm - enum ... (3.jpg), причем перечисляемые значения соответствуют полю is_leverage in getPortfolioInfo(args) (4.jpg) - при выводе в debug таблицы имеем, что is_leverage - пустое текстовое поле (7.jpg), а client_type имеет числовое значение (8.jpg) - вопросы: 1. чему соответствуют числа поля client_type, нумерация начинается с 0 или 1 2. чоответствет ли полу is_leverage описанному в qlua.chm
2. Поля fut_rate_asset and fut_rate_asset_open (портфели для рынка фортс - фьючерсы и опционы) - почему такие большие числа 1.0e+50 (10.jpg)
Таблица Клиентский портфель получаем значения из QUIK функциями getPortfolioInfo(args) and getPortfolioInfoEx(args)
1. интересует значение поля client_type - в qlua.chm - STRING (6.jpg) - info.chm - enum ... (3.jpg), причем перечисляемые значения соответствуют полю is_leverage in getPortfolioInfo(args) (4.jpg) - при выводе в debug таблицы имеем, что is_leverage - пустое текстовое поле (7.jpg), а client_type имеет числовое значение (8.jpg) - вопросы: 1. чему соответствуют числа поля client_type, нумерация начинается с 0 или 1 2. чоответствет ли полу is_leverage описанному в qlua.chm
2. Поля fut_rate_asset and fut_rate_asset_open (портфели для рынка фортс - фьючерсы и опционы) - почему такие большие числа 1.0e+50 (10.jpg)
Nikolay Pavlov написал: Универсальный формат транзакции использует кириллицу, если язык интерфейса терминала Quik задан русский, или же латиницу, если язык терминала задана английский.
Ок, можно пример айсберг заявки в универсальном формат на латинице.
Формат .tri-файла с параметрами транзакций Транзакция на ввод айсберг-заявки на Московской Бирже описывается в особом формате, приведенном в примере строк файла.
1. Получается нельзя направить айсберг заявку на латинице? т.е. нужно переключиться на русскую версию QUIKa? 2. Как описать айсберг заявку, если она отправляется из внешнего ПО, которое записывает строку в UTF-8. Будут ли проблемы? 3. Некоторых полей на латинице нет в описании (Формат trii-файла с параметрами транзакций), например,
Добрый день. В примерах заявок в info.chm для айсберг заявки показан пример
Код
/** На фондовом рынке Московской Биржи, купить 100 лотов Аэрофлота по цене 70, видимое количество лотов в очереди - 10, код клиента 467
*
* CLASSCODE=TQBR;
* TRANS_ID=2;
* ACTION=Ввод айсберг заявки;
* Торговый счет= S01-00000F00;
* К/П=Купля;
* Тип=Лимитная;
* Тип по цене=по разным ценам;
* Тип по остатку=поставить в очередь;
* Тип ввода значения цены=По цене;
* Инструмент=AFLT;
* Цена=70;
* Лоты= 100;
* Видимое количество=10;
* Примечание=467;
* */
Действительно при офрмировании ордера необходимо писать кирилицей, например,
Николай Камынин написал: Какая разница что там записано 0 или 99999 если это false.
Разницы нет, но если в документации QLUA написано что возвращаемые типы должны быть с 1 до 6, значит должно вернуть какое то число с 1 до 6. Если получаешь 0, которого нет в документации, то возникает вопрос - как такое возможно.