Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Ноября 08, 2024, 05:54:15 pm
Начало Помощь Поиск Войти Регистрация
Новости:

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Глюк с выставлением заявки по рынку « предыдущая тема следующая тема »
Страниц: 1 2 3 [4] Печать
Автор Тема: Глюк с выставлением заявки по рынку  (Прочитано 29311 раз)
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #45 : Июня 20, 2013, 01:15:23 pm »

Heller, а что в моем посте #32 заставило Вас думать, что trnid был возвращен? Если он был возвращен, почему тогда onOrder по этой заявке не был вызван?

Строчка
Code: [Select]
if (not ordr_trnid) {onATFOrderErr(getLastErrorMessage());
должна была бы сработать, если бы ordr_trnid был равен чему-то, отличному от нуля.
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #46 : Июня 20, 2013, 03:40:04 pm »

Хм. Ну то есть Вы абсолютно уверены, что trade_action в случае ошибки возаращает честный 0. И Вам легче поверить, что по заявке, которой сервером был присвоен id, дошедший до терминала и возвращенный из trade_action, не был вызван onOrder и она не отобразилась в окне заявок терминала?  :o
Ну допустим терминал жестоко подвис строго в нужную секунду, но на следующий день при запуске (или через несколько секунд после "отвиса"**) он же должен был по идее подгрузив заявки предыдущего вечера показать эту неисполненную с присвоеным trnid. Но не показал...

* а после этого возвращения, судя по логу, было выполнено еще как минимум десяток строк кода
** Тотального зависа терминала не было, т.к. судя по логам моей надтерминальной обвязки, которая пишет состояние окон заявок и сделок терминала в конце дня в 23.52 терминал не был зависшим, реагировал на нажатие мыши, менял окна, писал данные из окон к буфер обмена и пр.)
« Последнее редактирование: Июня 21, 2013, 09:13:08 am от ddd323 » Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #47 : Июня 24, 2013, 11:46:59 am »

Да, есть полная уверенность, что если id присваивается сервером, то он отдаётся. Все trade_action-ы - это синхронные запросы к серверу, выполнение кода не пойдёт дальше, пока от сервера не будет получен ответ.

Пока не очень понятно почему именно onOrder не сработал - я думаю как временное решение для большеё надежности можно попробовать на подобные случаи сохранять куда-либо значение trnid и потом проверять уже статус заявки через getOrder. Но это на случай каких-то подобных неполадок.
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #48 : Июня 25, 2013, 11:41:23 pm »

Попробую в ближайшее время повторить эту ситуацию (подачи заявки после окончания сессии) с личным присутствием и логированием получше.

А пока другой глюк в ту же тему.
Скрипт называется "tradeaction"
static ordr_trnid=1;
function onNewCandle()
{
   signal::outputMultiple("Начало процедуры onNewCandle. ordr_trnid="+ordr_trnid);
   var OrdrHash = new_object("hash");
   OrdrHash["quantity"] = 1;
   OrdrHash["operation"] = OP_BUY;
   OrdrHash["price"] =  0; // подаем заявку с заведомо неверной ценой
   ordr_trnid = trade_action::transact(OrdrHash);

   signal::outputMultiple("ordr_trnid="+ordr_trnid);
   if (ordr_trnid)
   {
      signal::outputMultiple("ordr_trnid=TRUE");
   }
   else
   {signal::outputMultiple("ordr_trnid=FALSE");}
   signal::outputMultiple("Конец процедуры onNewCandle");               
}
На новой свече получаем окно "Ошибка приложения Транзак" с предложением прислать вам лог и дамп. В логе пусто (т.е. по факту ошибки ничего не дописалось). Дамп - если надо пришлю. (Но по идее вы и сами его сумеете получить на своем терминале.)
В окне вывода АТФ получаем:
Начало процедуры onNewCandle. ordr_trnid=3
tradeaction: Указана не верная цена
Но скрипт в принципе продолжает работать. На каждой новой свече в "окно вывода АТФ" допишется
"Начало процедуры onNewCandle. ordr_trnid=3" (и только это, т.е. без "tradeaction: Указана не верная цена"), а также будет создан новый дамп и новое аналогичное окно "Ошибка приложения Транзак".

Ну то есть вылетаем из trade_action, да так, что ничего оттуда не возвращается, а оставшиеся операнды в onNewCandle не исполняются. Но сам скрипт продолжает жить и реагировать на события типа новой свечи.

P.S. Получил все это на Интре. (1.18)
« Последнее редактирование: Июня 25, 2013, 11:51:52 pm от ddd323 » Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #49 : Июня 28, 2013, 11:16:29 am »

Heller, чего скажете то про этот новый баг? Удалось воспроизвести у себя?
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #50 : Июля 01, 2013, 03:50:23 pm »

Да, есть ошибка, правлю.
Записан
Страниц: 1 2 3 [4] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Глюк с выставлением заявки по рынку « предыдущая тема следующая тема »
Перейти в:  


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!