Я пытаюсь с помощью .tri файла снять заявку по инструменту, и тут же поставить новую на продажу по этому же инструменту. То есть, в одном файле две строки. Снятие заявки происходит, а повторная установка заявки не получается. Пишет - инструмент запрещен для шорта. При этом, при повторном импорте заявка на продажу ставится нормально.
Из чего предполагаю, что квик пытается исполнить подряд две транзакции, но отклик по первой транзакции не успевает прийти, до момента исполнения второй транзакции. Нужен какой то тайм аут перед второй транзакцией, подскажите, как это осуществить через .tri файл
вот пример файла CLASSCODE=EQOB; SECCODE=RU000A0JWV89; TRANS_ID=1; ACTION=KILL_ORDER; ORDER_KEY=18099525473; ACCOUNT=L01-00000F00; CLIENT_CODE=S4YK2; TYPE=L; TRANS_ID=2; CLASSCODE=EQOB; SECCODE=RU000A0JWV89; ACTION=NEW_ORDER; OPERATION=S; PRICE=103,88; QUANTITY=1;
Попробуйте очистить содержимое файлов с расширениями *.tro и *.trr и снова запустить импорт. У себя попробовали и столкнулись с описанной Вами проблемой, но после очистки все сработало (заявка снялась и выставилась новая).
Здравствуйте. Попробовал по всякому, ничего не получается. Если нажать кнопку "очистить", то тогда исчезает файл tro - без него импорт вообще не идет. Что касается содержимого файла tro - то я вообще его удалял перед импортом, так как у меня номер транзакции отсчитывается с 1. То есть перед импортом файла tro нет, а появляется он только после импорта.
Тем не менее, я попробовал и создать файл пустой перед этим. Результат тот же. Вот содержимое файла тро после импорта.
TRANS_ID=1;STATUS=0;TRANS_NAME="Снятие заявки по номеру"; DESCRIPTION="26.03.2019 10:43:15: Отправлена транзакция"; TRANS_ID=2;STATUS=0;TRANS_NAME="Ввод заявки"; DESCRIPTION="26.03.2019 10:43:15: Отправлена транзакция"; TRANS_ID=2;STATUS=6;TRANS_NAME="Ввод заявки"; DESCRIPTION="26.03.2019 10:43:16: Данный инструмент запрещен для операции шорт"; TRANS_ID=1;STATUS=3;TRANS_NAME="Снятие заявки по номеру"; DESCRIPTION="26.03.2019 10:43:16: (210) Снято заявок: 1. Снято количество: 4382. Нельзя снимать: 0."; ORDER_NUMBER=0;
Тут все логично - он отправляет две транзакции - вторая из них не проходит, потому что заявка снимается в 10-43-16 секунд,а а отправка новой заявки раньше - 10-43-15 секунд.
Причем здесь файл trr я вообще не понимаю - у меня галочка стоит , не вести журнал транзакций. Соответсвенно, файла вообще нет.
Повторю свой вопрос - как поставить в файл tri таймаут между транзакциями? Очевидно ведь, что от сервера биржи должен прийти отклик брокеру, а потом уже ко мне от брокера, о том, что заявка снята - и здесь ничего не сделаешь, это нормально, что из за задержки так происходит - нужен таймаут жду конкретного ответа
Каждое утро у меня перестает контачить соединение с БД. Нужно вручную нажать кнопку отсоединиться от базы, и потом снова присоединиться. После этого приходится вручную опять каждое поле таблицы присваивать столбцам базы данных. Как сделать так чтобы соединение сохранялось?
Здравствуйте, Дмитрий. Выставить задержку нельзя. Такого функционала для импорта транзакций из файла нет.
Касательно рекомендаций по очищению файлов *.tro и *.trr Вы писали:
Цитата
Если нажать кнопку "очистить", то тогда исчезает файл tro - без него импорт вообще не идет. Что касается содержимого файла tro - то я вообще его удалял перед импортом, так как у меня номер транзакции отсчитывается с 1. То есть перед импортом файла tro нет, а появляется он только после импорта.
Тем не менее, я попробовал и создать файл пустой перед этим. Результат тот же.
Если нажать кнопку "Очистить", то удаляется путь до файла. Это не совсем то, что необходимо было выполнить. Так же, полностью удалять файл *.tro не нужно было. Попробуйте сначала выполнить импорт только транзакции на подачу заявки. Затем, очистите содержимое файла *.tro через блокнот, например. После того, как заявка будет активна в таблице заявок - попробуйте импортировать транзакции на ее снятие и выставление новой заявки.
Если не очищать файл *.tro, то импорт не выполняется. После очистки все работает так, как должно.
Извините, но Вы чего то не то пишите, Вы реально хотите решить проблему, или просто вежливо даете мне понять, чтоб я от Вас отстал?
1. Я же внятно написал - что делал в том числе и по тому способу, что Вы повторно предлагаете - очищал именно файл тро, и да - Вы угадали, делал это блокнотом.
2. Я Вам выслал строки, которые появляются в очищенном файле тро - Вы чего, не видите что ли в моем сообщении выше всего 4 строки? Там ведь нет других строк, которые раньше были - файл был пустой ведь, перед тем как я три файл импортировал - Вам это не очевидно что ли???
3. Я не понимаю, где Вы сами экспериментируете - у Вас мосэнерго по 2,36 - а у меня есть мосэнерго, и оно ни вчера ни сегодня столько не стоило. Предполагаю, что Вы экспериментурете на демо сервере где то, потому что и номеров заявок на бирже таких сейчас нет, как у Вас на скриншотах.
4. Из чего следует, что Вы очевидного не понимаете - что между отправкой транзакции на снятие заявку на биржу, получением отклика, и новой трназакцией, должно пройти время - попробуйте сделать это с обычного компа, с установленным нормальным квиком, подключенным к обычному брокеру (сбер или втб например, как у меня).
5. Но я уже понял, что Вы не будете это делать, Вас и так все устраивает, а на неудобные вопросы пишете детские ответы.
6. по поводу второго вопроса тоже не ответили. Каждый день переподключаться к БД, тоже на любителя функционал такой.
Мне вот не понятно, зачем Вы этот функционал разрабатывали, если его не возможно применять для реальной торговли.
Дмитрий, мы попробовали у себя не на тестовой версии терминала. Столкнулись с такой же проблемой, что и Вы. Объясним на примере, который Вы видели у себя в файле *.tro
Цитата
Вот содержимое файла тро после импорта.
TRANS_ID=1;STATUS=0;TRANS_NAME="Снятие заявки по номеру"; DESCRIPTION="26.03.2019 10:43:15: Отправлена транзакция"; TRANS_ID=2;STATUS=0;TRANS_NAME="Ввод заявки"; DESCRIPTION="26.03.2019 10:43:15: Отправлена транзакция"; TRANS_ID=2;STATUS=6;TRANS_NAME="Ввод заявки"; DESCRIPTION="26.03.2019 10:43:16: Данный инструмент запрещен для операции шорт"; TRANS_ID=1;STATUS=3;TRANS_NAME="Снятие заявки по номеру"; DESCRIPTION="26.03.2019 10:43:16: (210) Снято заявок: 1. Снято количество: 4382. Нельзя снимать: 0."; ORDER_NUMBER=0;
Вы подаете две транзакции подряд, на снятие и выставление заявки. Но ответ по снятию заявки приходит позже, чем заявка успела зарегистрироваться, в связи с чем, в промежутке между снятием и выставлением заблокированные ранее средства не успели разблокироваться. Поэтому Вы получали ошибку "Данный инструмент запрещен для операции шорт". После этого, когда старая заявка уже была снята, средства разблокировались и Вы смогли выставить заявку без каких-либо проблем.
К сожалению, через *.tri файл выставить задержку на подачу заявки, чтобы она выставилась точно после того, как снимется старая, нельзя.
Касательно проблем с экспортом по ODBC - вероятнее всего сервер закрыл соединение по истечению таймаута (времени на отклик). Чтобы избежать этого, нужно в настройках вашего ODBC установить галочку на автоматическое восстановление соединения или увеличить значение на ожидание ответа.
по первому вопросу, буду копать в направлении - чтобы моя программа добавляла строку в три файл на постановку новой заявки с таймаутом. Раз нельзя таймаут в самом три файле прописать.