Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
29.04.2025, 04:49:07
Начало Помощь Поиск Войти Регистрация
Новости: ООО «Скрин маркет системз», правообладатель программы «Система брокерского обслуживания «TRANSAQ» официально заявляет, что не ведет никакой деятельности в мессенджерах или социальных сетях. 
Подробности на нашем сайте  WWW.TRANSAQ.RU.

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Как теперь работает trade_action::cancelOrder(trnid)? « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Как теперь работает trade_action::cancelOrder(trnid)?  (Прочитано 3922 раз)
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« : 17.02.2013, 19:42:28 »

С версии 1.18 trade_action:... возвращает 0 в случае ошибки.
При каких условиях возращает 0 функция trade_action::cancelOrder(trnid)? Если я выставил условную заявку, например, продать по рынку при достижении некоторой цены, а потом хочу ее снять и получаю в ответ 0, означает ли это что она гарантированно исполнится (предполагая отсутствие сбоев между сервером Транзака и биржи и на сервере биржи)?
Я предполагаю, что trade_action::cancelOrder(trnid) посылает запрос на сервер Транзака, тот проверяет, что там с условной заявкой, если она - активна, то сервер отвечает клиенту 0. Если так, то моя гипотеза верна (0 означает "гарантированное" исполнение), а вот если, например, после этого сервер Транзака пытается еще вдогонку на Биржу послать запрос - типа не исполняйте, то тогда еще есть минимальный шанс, что заявка успеет сняться без исполнения.
« Последнее редактирование: 17.02.2013, 20:03:07 от ddd323 » Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #1 : 18.02.2013, 08:18:16 »

Логика работа trade_action::cancelOrder и выставления заявки несколько разная. cancelOrder возвращает 0 (а вернее даже пустую строку) как раз в случае, если ошибки не произошло - то есть если заявка гарантированно снялась. Если произойдет какая-то ошибка, то будет возвращено текстовое описание ошибки.
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #2 : 18.02.2013, 11:17:32 »

Heller, ну тогда во всех моих вопросах замените 0 на "текстовое описание ошибки". Я собственно больше внутренней процедуроой и последствиями интересовался.
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #3 : 18.02.2013, 16:02:25 »

Я не уверен, что вполне понял ваш вопрос.

Если cancelOrder() вернул 0, то это означает, что сервер Transaq считает, что он сможет снять заявку. Если вернулась текстовая строка - значит произошла некоторая ошибка, вариантов которой может быть множество - от "заявка уже исполнена" и до "нет связи с биржей" или "заявка уже снята", например.

Если же возвращен 0, то на самом деле это говорит лишь о том, что сервер Transaq попытается снять заявку на бирже, но гарантий, что ничего не произойдет, нет. Например, в этот маленький промежуток времени, когда сервер Transaq принял ваш запрос и отправляет его на биржу, может что-то произойти - например, заявка может быть исполнена. Поэтому гарантий действительно никаких нет, и если есть потребность жестко контролировать заявки, то лучше это делать через изменение статусов в onOrder.
Записан
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Как теперь работает trade_action::cancelOrder(trnid)? « предыдущая тема следующая тема »
Перейти в:  


Войти

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