Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Октября 12, 2024, 10:04:14 am
Начало Помощь Поиск Войти Регистрация
Новости:

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


Просмотр профиля Email
« : Декабря 13, 2012, 08:29:43 pm »

Финам. Фортс. Фьюч на сбер SBRF-12.12
HFT сервер. версия терминала 304.12 (UID послал в личку Heller'у)
Заявка высталялась из onNewCandle на свече 14.03 сегодня (13.12.12) так:
var OrdrHash = new_object("hash"); OrdrHash["quantity"] = 1; OrdrHash["operation"] = OP_BUY; trade_action::transactMultiple(OrdrHash);
Денег на счете достаточно.
Получил в onATFOrderErr следующее:
SBRF-12.12 (sbrf1): Некорректный ордер: (10032) Цена сделки вне лимита Покупка  SRZ2

Где проблема: глюк терминала? биржа с диапазонами цен намудрила? финам с настройками сервера? 13-е число?
Записан
mag
Разработчики
Newbie
*****
Сообщений: 5


Просмотр профиля Email
« Ответ #1 : Декабря 13, 2012, 10:50:34 pm »

Это точно не глюк терминала и точно Финам тут не виноват.
Проблема находится на стыке системы TRANSAQ и Биржи.

Дело в том, что торговая система FORTS не поддерживает "рыночных" заявок как таковых. Поэтому трейдинговые системы, в том числе и TRANSAQ, получив от клиента "рыночную" заявку, подают её на Биржу как лимитированную заявку по действующей сегодня максимально допустимой (минимально допустимой) цене. Эти максимальные и минимальные цены, или как их называют "планки", TRANSAQ узнаёт от самой Биржи, через шлюз. Так вот, теоретически могут быть промежутки времени, когда Биржа, в силу каких-либо причин уже изменила коридор цен (провела промклиринг или отреагировала на какие-то новости), и уже контролирует заявки по новым ценовым "планкам",  а TRANSAQ на момент обработки полученной от клиента заявки ещё не получил или не успел обработать и принять к сведению уведомления Биржи о изменении действующих ценовых планок.

Это наиболее вероятное материалистическое объяснение феномена.
По мере возможности мы попробуем запросить в Финаме логи системы за 13 декабря и изучить обстоятельства вашего случая.
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #2 : Декабря 15, 2012, 11:26:50 pm »

Да, спасибо, посмотрите обстоятельства моего случая.

Но вообще не дело. Проблемы клиентам так сказать на ровном месте. Может коль такие ситуации со стороны биржы возможны, стоит какую-нибудь функцию приделать, которая будет отслеживать и перевыставлять?
Или хотя бы дайте нам клиентам возможность с этим работать. Я когда то предлагал, добавьте в АТФ какую-нибудь минимальную библиотечку для работы со строками. Поиск там/str.contains(), да вырезание mid(n,m). А то пока, единственное что можно сделать - тупо перевыставлять последнюю заявку при появлении любой ошибки в onATFOrderErr(var str), либо самому писать что-то а-ля 1) сохранение в файл 2) посимвольное доставание (из просто строки же это вроде не сделаешь) 3) сравнение с алфавитом 4) обратное собирание слов, и т.п.

Кстати, вы в контексте перехода с onATFOrder/Trade на onOrder/Trade механизм/логику работы функции onATFOrderErr(var str) меняли начиная с ATF1.16? Или она по-прежнему, в т.ч. и после ATF 1.20 будет в соответствии с названием выдавать ошибки по заявкам конкретного скрипта? (Вообще это было бы странно: нужную для onATFOrder фильтрацию поддерживать не можете/хотите, а нужную для onATFOrderErr можете, хотите и будете...)
А если таки логику работы onATFOrderErr  тоже поменяли, почему новую функцию с новым названием не сделали?
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #3 : Декабря 17, 2012, 01:23:00 pm »

Насчет ATF - учтем. По поводу остального вам чуть позже другие разработчики ответят.
Записан
klimov
Разработчики
Hero Member
*****
Сообщений: 815


Просмотр профиля Email
« Ответ #4 : Декабря 17, 2012, 02:03:40 pm »

По данному случаю:  в логах видно, что как только новые "планки" были получены от Биржи, именно они и стали использоваться при выставлении рыночных заявок.
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #5 : Декабря 17, 2012, 05:01:51 pm »

Heller, а насчет onATFOrderErr прокомментируйте пожалуйста.
Klimov, а через какое время новые планки стали использоваться - доли секунды, секунды, десятки секунд?
« Последнее редактирование: Декабря 18, 2012, 09:52:47 pm от ddd323 » Записан
klimov
Разработчики
Hero Member
*****
Сообщений: 815


Просмотр профиля Email
« Ответ #6 : Декабря 18, 2012, 09:05:26 am »

13го декабря новые планки пришли в 14:03:51,
(Т.е. через 51 сек после выставления)

Обычно это случается где-то в промежутке от 14:01 до 14:02
Видимо, была какая-то задержка на Бирже
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #7 : Декабря 19, 2012, 10:50:15 am »

Heller, прокомментируйте плиз вопросы про OnATFOrderErr из моего второго поста
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #8 : Декабря 19, 2012, 05:02:32 pm »

onATFOrderErr никак не изменит свое поведение - он работает корректно и пока мы не планируем ничего с ним сделать.
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #9 : Декабря 19, 2012, 08:10:28 pm »

Хм, интересно, может, я неправильно представляю как она сейчас работает. Тогда на примере.

1. Допустим у меня 2 скрипта работают на 2-х графиках по одной бумаге (фьючерсу). Скрипт №1 выставил заявку, которая не исполнилась из-за ошибки. Внимание, вопрос: я получу вызов onARFOrderErr()
А) в обоих скриптах (так как функция и раньше, несмотря на название, была скорее аналогом onOrder, а не onATFOrder)
В) только в скрипте №1 (т.к. функция соответствует своему названию)
???

2. Более сложная история, на которой onATFOrder раньше переставал работать с соответствии со своим названием, а именно - переход через ночь/перезагрузку терминала. Итак вечером Скрипт №1 выставил условный стоп (при достижении такой то цены закрыть позицию по рынку). (Вечерняя сессия закончилась, сервер выключился, терминал потерял связь с сервером. Утром терминал по сути загрузился с нуля, перезагрузив конфигурацию экрана.) В первую же милисекунду торгов стоп сработал, но допустим (хотя через ночь такое вряд ли возможно) биржа опять опоздала на несколько секунд с разрешенными диапазонами цен, и фьючерсная заявка "по рынку" была отвергнута биржей, и я должен получить описание ошибки в onARFOrderErr. Внимание, вопрос: я получу вызов onARFOrderErr()
А) в обоих скриптах (так как функция и раньше, несмотря на название, была скорее аналогом onOrder, а не onATFOrder)
В) только в скрипте №1 (т.к. функция соответствует своему названию и идеально работает, несмотря на перезагрузку терминала)
С) ни в одном из скриптов (т.к., например, функция соответствует своему названию, а название аналогично onATF/ClientOrder, но функции onClientOrderErr нет)
 ???
« Последнее редактирование: Декабря 19, 2012, 08:30:47 pm от ddd323 » Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #10 : Декабря 24, 2012, 11:36:57 am »

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


Просмотр профиля Email
« Ответ #11 : Декабря 25, 2012, 03:38:56 pm »

По первому вопросу ответ B, по второму вопросу ответ C. Он работает да, так же как onATFOrder. Мы конечно посмотрим как это возможно модифицировать, так как действительно при каких-то обстоятельствах сообщения об ошибках могут не доходить (хотя в этом случае все равно сработает onOrder и в нем будет установлен статус, описывающих суть ошибки).
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #12 : Декабря 25, 2012, 08:12:14 pm »

А вот с этого места поподробнее. В каком месте я все равно получу статус, описывающий суть ошибки?
Вы хотите сказать, что произошли еще какие-то изменения при переходе с onATFOrder на onOrder: новые статусы появились или новые поля в возвращаемом хэше заявок (в хелпе по ATF про это ни слова)?
Просто в вышеописанном случае 13.12.2012 ATF в атф 1.16 ни onATFOrder, ни onClientOrder по соответствующей отвергнутой сервером заявке даже не вызвались. Хотя теоретически вернуть OS_DENIED (Отклонена брокером) они могли бы...

А про модификацию - модифицируйте, конечно - полное молчание  скрипта - это плохо. Полагаю, раз вы не смогли ничего хитроумного сделать с функцией onATFOrder, чтобы ее сохранить - разумно повторить с onATFOrderErr тот же путь.
В терминах аналогии с предыдущим вопросом onATFOrder работает так:  1B, 2C (так же как Вы сказали работает сейчас onATFOrderErr. В итоге решили перейти на onOrder, который будет работать по принципу 1А, 2А. Соответственно, вероятно придется переходить с onATFOrderErr на 2А (что всяко лучше чем 2С), но безусловно хотелось бы сохранить 1B (ибо это лучше 1А)
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #13 : Декабря 26, 2012, 10:54:57 am »

Нет, изменений никаких больше не происходило. Я имел ввиду, что ошибку можно понять по статусу заявки, хотя в этом случае да, не будет описания текстового. Просто говорить об onATFOrderErr() довольно сложно из-за того, что ошибка может произойти в очень разных местах и обрабатываться она соответственно может по-разному.

Вообще функция  onATFOrderErr() вызывается на данный момент лишь в двух случаях:

1) Если заявка немедленно отклоняется сервером Transaq (вызов при этом произойдёт все равно асинхронно).
2) Если заявка отклонена биржей и при этом Transaq помнит из какого скрипта она выставлялась (то есть не было перезагрузок, переходов через сессию и т. п.)

Тут конечно с ней неудобно работать в таком виде, мы всё же переделаем её в ATF 1.18.
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #14 : Декабря 26, 2012, 12:34:36 pm »

я собственно про статус и спрашивал: в моем случае (13 декабря ) onOrder вызовется или нет (аналогично onATFOrder который не вызвался)?
Записан
Страниц: [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!