Есть подозрение, из-за того что Quik работает неделю без перезапуска. Нельзя было поставить и вручную заявку, после перезапуска стало возможно и заявку поставить и сделки совершенные увидеть.
Думал Quik хотя бы с понедельника по пятницу может отработать без перезагрузки.
Добрый день, брокер ВТБ, версия QUIK - 8.11.0.66. Работает торговая система (ТС) на QLUA и иногда при отправке транзакции получаю ошибку - Указанная транзакция по указанному классу не найдена: "SPBFUT", а иногда проходит без ошибок. Транзакция отправляется строго в торговую сессию. ТС работает на версии 5.3.5
вот с такими данными улетала транзакция фьючерс Si-3.21 12.02.2021;11:30:00;ACTION=NEW_ORDER; TRANS_ID=1612899312; OPERATION=B; QUANTITY=1; PRICE=74366;
На демо стенде такую ошибку не ловил, куда смотреть? Спасибо.
Олег написал: Добрый день, брокер ВТБ, версия QUIK - 8.11.0.66. Работает торговая система (ТС) на QLUA и иногда при отправке транзакции получаю ошибку - Указанная транзакция по указанному классу не найдена: "SPBFUT", а иногда проходит без ошибок. Транзакция отправляется строго в торговую сессию.
На демо стенде такую ошибку не ловил, куда смотреть? Спасибо.
дополню - вот с такими данными улетала транзакция фьючерс Si-3.21 12.02.2021;11:30:00;ACTION=NEW_ORDER; TRANS_ID=1612899312; OPERATION=B; QUANTITY=1; PRICE=74366;
Добрый день, брокер ВТБ, версия QUIK - 8.11.0.66. Работает торговая система (ТС) на QLUA и иногда при отправке транзакции получаю ошибку - Указанная транзакция по указанному классу не найдена: "SPBFUT", а иногда проходит без ошибок. Транзакция отправляется строго в торговую сессию.
На демо стенде такую ошибку не ловил, куда смотреть? Спасибо.
Roim написал: Пишу скрипт в саблайм текст3, запускаю в квик 8.8.4.3, если в скрипте использую русские буквы для вывода сообщений или названий столбцов таблицы, то при за пуске скрипта в квике вместо русских букв отображаются иероглифы
Олег написал: Добрый день, хочу реализовать выход из всех позиций на открытии последней свечи дня для любого таймфрейма (торговля внутри дня) от 1М до 60М. Идеи как то не приходят в голову, на что можно опереться, чтобы работало независимо от выбранного таймфрейма.
Ошибка создания заявки. [GW] "Превышен лимит отправки транзакций для данного логина."., Учебный сервер выдает ошибку: Ошибка создания заявки. [GW] "Превышен лимит отправки транзакций для данного логина.".
Учебный сервер выдает ошибку: Ошибка создания заявки. [GW] "Превышен лимит отправки транзакций для данного логина.". При этом ни одной транзакции в текущем дне не было. Такая ошибка есть в описание протокола самой биржи. Но что делать не понятно.
Подскажите, куда смотреть.
Спасибо.
Добрый день.
Данное сообщение выдает торговая система. Т.е оно означает, что пользователь (не обязательно Вы) а любой другой на данном тестовом сервере наткнулся на превышение количества транзакций. Возможно кто то использует в работе торгового робота, который отправил большое количество транзакций. По логам мы посмотрели, что действительно в указанное на скриншоте время в минуту было подано свыше 1800 транзакций. Проверьте подачу заявок сегодня.
Егор, а зачем данное сообщение приходит тем, кто не создавал такое количество транзакций?
Получается кто-то один/несколько создали большое количество транзакций, а я или Федор в такой момент создать транзакцию не смогу?
Данное сообщение отправляет торговая система биржи, впрочем если убрать это сообщение и в момент, когда вы наткнетесь на данное ограничение и заявка не выставится, то возникнет еще больше вопросов, так как вы не получите никакой ответ на транзакцию.
А какое ограничение стоит на демо стенде и при реальной торговле (для общего развития)?
Ошибка создания заявки. [GW] "Превышен лимит отправки транзакций для данного логина."., Учебный сервер выдает ошибку: Ошибка создания заявки. [GW] "Превышен лимит отправки транзакций для данного логина.".
Учебный сервер выдает ошибку: Ошибка создания заявки. [GW] "Превышен лимит отправки транзакций для данного логина.". При этом ни одной транзакции в текущем дне не было. Такая ошибка есть в описание протокола самой биржи. Но что делать не понятно.
Подскажите, куда смотреть.
Спасибо.
Добрый день.
Данное сообщение выдает торговая система. Т.е оно означает, что пользователь (не обязательно Вы) а любой другой на данном тестовом сервере наткнулся на превышение количества транзакций. Возможно кто то использует в работе торгового робота, который отправил большое количество транзакций. По логам мы посмотрели, что действительно в указанное на скриншоте время в минуту было подано свыше 1800 транзакций. Проверьте подачу заявок сегодня.
Егор, а зачем данное сообщение приходит тем, кто не создавал такое количество транзакций?
Получается кто-то один/несколько создали большое количество транзакций, а я или Федор в такой момент создать транзакцию не смогу?
Добрый день, хочу реализовать выход из всех позиций на открытии последней свечи дня для любого таймфрейма (торговля внутри дня) от 1М до 60М. Идеи как то не приходят в голову, на что можно опереться, чтобы работало независимо от выбранного таймфрейма.
Nikolay написал: Ведь можно сделать один скрипт на 100 разных инструментов, торгующих одним и тем же алгоритмом, или разными.
Если один алгоритм, то хранить данные для каждого инструмента в файле необязательно. а вот если алгоритмы разные, то для каждого алгоритма хранение уже становится обязательным условием, верно я Вас понял?
swerg написал: Неожиданно. Вольное применение терминологии - это здорово, конечно, но как же вас понять-то тогда??
Согласен некорректно выразился - в моем понимание торговая система, это робот который имеет свой алгоритм, которым торгует определенный инструмент.
Цитата
swerg написал: Т.е. у вас 2 разных Lua-вкрипта торгуют одним и тем же инструментом на одном классе, так?
Что в Вашем понимании в "одном классе"? Я писал как пример фьючерс рубль/доллар
Цитата
swerg написал: Но до добра это всё не доведёт, по-моему. Один скрипт покупает, другой тут же продаёт - в чем финансовый результат таких прикольных действий?
т.е. придерживаться правила - один скрипт - один инструмент?
Добрый день, возникла потребность в разных Торговых системах работать с одним инструментом (например фьючерс рубль/доллар). Если одна ТС купила, а другая продала, то при обращении к Позиции по клиентским счетам (фьючерсы) (futures_client_holding) - Текущие чистые позиции (totalnet) будет возвращать соответственно ноль. Пока возникла идея хранить количество купленных/проданных фьючерсов в файле для каждой ТС, ну вот не знаю оптимальное решение, может есть лучше решение?
Добрый вечер, когда отправляю заявку я получаю номер этой заявки в Ontransreply (order_num) и по описанию QLua.chm так же можно получить количество лотов (кажется qty или order_qty). Но в демо версии 8.8.4.3 значение получаю nil. Хотя в таблице «Заявки» все красиво и количество присутствует.Подскажите почему значение не возвращается ?
Олег написал: Идея хорошая, а можно показать краткий пример?
Это сложный вопрос. В самом lua нет многопоточности, поэтому надо организовать некие сущности, хранящие состояния и ждущие ответа. Проще всего это сделать на хеш-таблицах, т.е. на обычных таблицах.
Вы можете при подаче транзакции записать данные в некую таблицу по ключу, допустим код инструмента + номер транзакции. А далее организовать ожидание когда в этой таблице появится ответная информация. Ответ может туда записаться, в частности колбеком, или сами, опрашивая сделки, ордера, запишете.
Как только ответ получен, делаете что-то дальше. Нет ответа - пропускаете этот инструмент, ждете дальше. Тогда вы не будете зависеть от того как приходят ответы. В какие-то дни быстро, в какие-то очень медленно. Бывало до 10 минут доходило. Вы не можете предсказать когда он придет, поэтому и не можете поставить некое значение переменной ожидания в простом цикле. Как организовать ожидание, и саму подачу транзакции, здесь уже как удобнее. Можно через corutine, запуская их и проверяя в них состояние транзакции. Если нет ответа приостанавливаете ее и переходите к следующей.
Можно самому сделать некую сущность "Задача" и периодически опрашивая пул текущих задач, закрывать завершенные. А можно просто сделать таблицу транзакций, опрашивать ее и проверять состояние самой транзакции (допустим, записанное колбеком onTransReply), ордера, записанное другим колбеком и т.д.
Nikolay написал: Т.е. отправил транзакцию из main, там же циклы.
Да, реализовано так.
Цитата
Nikolay написал: Если, допустим, скрипт работает с несколькими инструментами
Пока до такого еще не дошел, один скрипт - один инструмент. За совет спасибо.
Цитата
Nikolay написал: Лучше сделать так, чтобы ответный сигнал вызывал реакцию, но не простой всего алгоритма. Т.е. пока идет сигнал можно было бы выполнять что-то другое.
Nikolay написал: Зависит от схемы написания Вашего скрипта. Можете использовать колбек, как сигнал, что сделка прошла. Можете, наоборот, сами читать таблицу сделок, запоминая, допустим, последний индекс, для уменьшения последующих выборок.
Что касается времени срабатывания, то здесь нет понятия "нормально". Можно было бы сказать среднеожидаемое, и оно, действительно, будет небольшим, до 1 сек. Но сервер брокера может быть загружен, канал связи может плохим и т.д. Так что время может вырастать до минут.
Впрочем, еще есть один вариант, что некорректно производится ожидание сигнала, допустим, цикл ожидания в колбеке.
Спасибо за ответ.
Действительно все ответы о сделки приходят до 10 секунд (у меня на это стоит проверка в цикле) и этот самый цикл ожидания организован не в колбэке. Если я правильно Вас понял,
Код
Можете использовать колбек, как сигнал, что сделка прошла.
то как раз это и делаю - отправляю sendtransaction, в цикле жду ответа от OnTransReply и потом во втором цикле жду ответа от OnTrade.
Если читать таблицу сделок, видимо ничего не изменится, так как там данные появятся в то же время что и данные из OnTrade, верно?
Доброе утро. Выставил заявку на демо счете, ожидаю транзакцию OnTransReply, получаю статус = 3, перехожу к ожиданию сделки из функции OnTrade и иногда из этой функции обратного вызова данные приходят более чем через 30 сек. Пример из таблиц Quick Заявки и Сделки: Заявка №1182431621 выставлена в 16:37:0201.10.2020
Сделка №72323274 (Заявка №1182431621) Продажа в 16:37:37 01.10.2020
Это нормальное поведение?
Правильно, что данные по сделку ожидаю от таблицы обратного вызова или нужно другим способом сделки получать?
Evgeniy Karnaukhov написал: Олег, здравствуйте! Уточните, пожалуйста, время, когда происходил разрыв соединения с сервером Вашего брокера. Это время должно входить во временной промежуток, указанный в настройках "Восстанавливать связь автоматически через". Также просьба уточнить, получаете ли Вы какие-либо ошибки? Если да, пришлите, пожалуйста, скриншот таблицы сообщений, когда подобная ситуация повторится ("Создать окно" - "Все типы окон" - "Таблица сообщений").
Цитата
Олег написал: И для общего развития, зачем происходит разрыз соединения почти в одно и тоже время?
У брокера в это время может быть настроена перезагрузка серверов.
Добрый день, Евгений! Разрыв соединения происходит в 4:14, секунды плавают каждый раз.
Ошибка появляется в 4:14 утра - "Соединение разорвано" (могу ошибаться в наименовании, точно смогу сказать в следующий раз).
Получается в настройках нужно указать весь промежуток (с 0:00:00 до 23:59:59) чтобы переподключение всегда осуществлялось?
Доброе утро, подскажите почему может не переподключаться Quick. Quick работает все время, тестовый разрывает соединение в районе 2:20 и переподключается сам, а ВТБ Quick разрывает соединения и переподключиться не желает (действий никаких не вижу, скрин настроек ниже будет).
И для общего развития, зачем происходит разрыз соединения почти в одно и тоже время?
Проверили у себя, код "local nSize = getNumberOf('futures_client_holding');" работает правильно и выдает верное количество строк из таблицы. Уточните пожалуйста, как именно проверяете, что значение nSize всегда равно 0? Также, рекомендуем проверить, что таблица "Позиции по клиентским счетам (фьючерсы)" у Вас не пустая.
Добрый день, Роман. Сегодня заработал скрипт и количество позиций получаю верно.
На будущее хотел бы знать где проверить:
Цитата
Также, рекомендуем проверить, что таблица "Позиции по клиентским счетам (фьючерсы)" у Вас не пустая.
Добрый день, имеется демо-доступ от arqatech версии 8.8.4.3. При получении таблицы "Позиции по клиентским счетам (фьючерсы)" в QLUA
Код
local nSize = getNumberOf('futures_client_holding');
nSize всегда получает значение 0, нужно ли какие действия предпринять до получения корректного значения?
Хочу получить текущие чистые позиции:
Код
function get_CountPosition(sec_Code, acc)
local nSize = getNumberOf('futures_client_holding'); -- таблица "Ограничение по клиентским счетам"
if nSize ~= nil then
for i = 0, nSize -1 do
local rows = getItem('futures_client_holding', i);
if rows ~= nil and rows.sec_code == sec_Code and rows.trdaccid == acc then
return tonumber(rows.totalnet);
end;
end;
end;
return 0;
end;