Eskra написал: Добрый день! В OnTransReply не приходят колбеки от заявок поданных через файл. Я так понял из документации, что должны - или нет?
Добрый день,
Функция вызывается терминалом QUIK при получении ответа на транзакцию пользователя, отправленную с помощью Trans2quik.dll, QPILE, QLua или динамической загрузки транзакций из файла. То есть при подаче заявок из файла и trans2quik OnTransReply должен срабатывать. Просьба проверить, что в таблицах Транзакций (Создать окно/Таблица транзакций") и таблице сообщений (Создать окно/Таблица сообщений") не возникает ошибок при отправке транзакции. Если транзакция отправляется и ошибок нет, просьба привести пример скрипта подачи транзакции при применении которого OnTransReply не приходит, а также сообщить версию рабочего места QUIK.
Eskra написал: Я подаю заявки не из скрипта, а из стороннего робота - в таком случае колбек должен приходить? Все транзакции выставляются, ошибок не возникает
Так как Ваша программа использует trans2quik.dll при использовании асинхронного способа подачи транзакций ответ приходить должен. Для диагностики проблемы просьба воспользоваться примером на C#, который можно скачать с нашего сайта по ссылке: http://arqatech.com/upload/iblock/80a/Trans2QuikAPI_1.3_x64.zip
Я так же проверяю - у меня робот выставляет и снимает заявки через файлы - все работает, ответы приходят. Если в это время запустить скрипт с OnTransReply, то туда ничего не приходит. Если выставить заявку из скрипта, то ответ приходит
Рекомендуем воспользоваться примером test_trans.lua который работает вместе с tpf.lua. В нем содержится пример использования OnTransReply по получению которого происходит снятие заявок. На актуальной версии рабочего места QUIK 7.5 функция работает корректно. Описание работы и пример использования OnTransReply находятся в файле test_trans.lua в папке "examples", архив с которой можно скачать с нашего сайта по ссылке: http://arqatech.com/upload/iblock/022/quik_lua.zip
Помогите решить проблемму с множеством колбеков OnTrade() А то никак не могу перейти с версии QUIK 6.17 на более новую. Скучаю по багам в новых версиях. )))
Я еще раз повторюсь - при подаче заявки из луа, все колбеки по ним приходят в OnTransReply. Когда подаем заявку из внешнего робота через trans2quik или файлы - то колбеков в луа по ним нет. Я посмотрел ваши примеры, но мой скрипт работает при подаче заявок из луа, проблема с ответами для внешних транзакций
Добрый вечер! У меня в скрипте Lua не срабатывает OnTransReply. В начале при выставлении заявки он отрабатывает, а при удалении этой заявки нет. Посоветуйте, пж, что делать?
Михаил написал: Добрый вечер! У меня в скрипте Lua не срабатывает OnTransReply. В начале при выставлении заявки он отрабатывает, а при удалении этой заявки нет. Посоветуйте, пж, что делать?
Михаил написал: Добрый вечер! У меня в скрипте Lua не срабатывает OnTransReply. В начале при выставлении заявки он отрабатывает, а при удалении этой заявки нет. Посоветуйте, пж, что делать?
поставьте вывод в лог файл, покажите скрипт .
Вывод в OnTransReply() на экран стоит. При выставлении заявки скриптом он срабатывает. А затем при удалении заявки скриптом он не срабатывает. Хотя заявка удаляется, те скрипт срабатывает. Скрипт функции
function OnTransReply(order) message("OnTransReply ID: "..tostring(order.trans_id)) -- Отладочная -- if ID_B == order.trans_id then -- Интересует только наша заявка выставления на покупку NumOrderB = order.order_num -- Номер заявки сервера StatusOrderB = order.status -- Статус заявки: nil-не выставлена, 3-успешно выставлена msgOrderB = order.result_msg -- Сообщение с результатом обработки заявки end -- Удаление заявки if ID_B_Kill == order.trans_id then -- Интересует только наша заявка на удаление StatusKillOrderB = order.status -- Статус заявки: nil-не выставлена, 3-успешно выставлена msgKillOrderB = order.result_msg -- Сообщение с результатом обработки заявки end end При загрузке файла со скриптом дает ошибку загрузки.
попробую пояснить. -------------------------- этот колбек реагирует не на заявку, а на транзакцию. Ему пофиг снял вы что-то или надели или одели. Ему важно лишь транзакция исполнена или нет. ----------------------- Попробуйте это понять. Т е не надо ловить в нем вашу или не вашу заявку. Это конечно можно делать и я ловлю, чтобы быстрее реагировать, но это сложно и в действительности не нужно. ------------------------------ Ловите свою заявку в колбеках заявок, а в этом колбеке надо ловить успешно или нет прошла вша транзакция.
попробую пояснить. -------------------------- этот колбек реагирует не на заявку, а на транзакцию. Ему пофиг снял вы что-то или надели или одели. Ему важно лишь транзакция исполнена или нет. ----------------------- Попробуйте это понять. Т е не надо ловить в нем вашу или не вашу заявку. Это конечно можно делать и я ловлю, чтобы быстрее реагировать, но это сложно и в действительности не нужно. ------------------------------ Ловите свою заявку в колбеках заявок, а в этом колбеке надо ловить успешно или нет прошла вша транзакция.
Так в OnTransReply() я и ловлю успешность выполнения заявки отправленной с помощью sendTransaction(). sendTransaction() исполняется, а ответа в OnTransReply() нет.
Михаил написал: Так в OnTransReply() я и ловлю успешность выполнения заявки отправленной с помощью sendTransaction(). sendTransaction() исполняется, а ответа в OnTransReply() нет.
OnTransReply() - это ответ на транзакцию. OnOrder() - для заявки.
попробую пояснить. -------------------------- этот колбек реагирует не на заявку, а на транзакцию. Ему пофиг снял вы что-то или надели или одели. Ему важно лишь транзакция исполнена или нет. ----------------------- Попробуйте это понять. Т е не надо ловить в нем вашу или не вашу заявку. Это конечно можно делать и я ловлю, чтобы быстрее реагировать, но это сложно и в действительности не нужно. ------------------------------ Ловите свою заявку в колбеках заявок, а в этом колбеке надо ловить успешно или нет прошла вша транзакция.
Так в OnTransReply() я и ловлю успешность выполнения заявки отправленной с помощью sendTransaction(). sendTransaction() исполняется, а ответа в OnTransReply() нет.
поставьте вывод в лог или на экран самым первым оператором в функции OnTransReply