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

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


Просмотр профиля Email
« : 03.03.2014, 22:36:45 »

Сегодня, конечно день необычный, но ...
Сегодня на открытии скрипт подавал заявку на продажу по рынку по фьючу RTS-3.14. В логе получил следующее:
10:00:01 03.03.14 trades=242 Заявка выставлена. Номер: 17031
Заявка.   status:8   trnid:17031   orderno:0   validbefore:0   client:NNN     operation:-1   price:-1   yield:0   quantity:2   condition:0   condvalue:   brokerref:1   error:
10:00:01 03.03.14 trades=244 Заявка выставлена. Номер: 17031
Заявка.   status:9   trnid:17031   orderno:12234609262   validbefore:0   client:NNN     operation:-1   price:121480   yield:0   quantity:2   condition:0   condvalue:   brokerref:1   error:

Т.е. сначала сработал onOrder и показал статус 8 (OS_ACTIVE), а потом через доли секунды в onOrder пришел статус 9 (OS_CANCELLED), что вроде как означает согласно хелпу "Снята трейдером (заявка уже попала на рынок и была отменена)". Я эту заявку, естественно, не отменял. У меня вообще в коде операций отмены заявок в принципе нет. В 2-х соседних окнах по этому же инструменту тоже заявки не исполнились со статусом заявок 9.  В окне заявок в терминале - все эти неисполненные заявки в нем есть со статусом "снята" (по крайней мере сейчас, утром (в первый час торгов) не обратил внимание были ли они там.
Проэкспортировал тиковые данные с финама - на 2-й и последующих секундах торгов сегодня по цене 121480, т.е. по границе разрешенного торгового диапазона цен, где первая сегодняшняя свеча "остановилась", еще было сделано очень много сделок. (Поле unfilled я при подаче заявки не использую)
С количеством денег было все нормально (потом все эти заявки повторил в ручном режиме - они исполнились)
Брокер "Финам". Сервер 78.41.199.32 (HFT который)

Как объяснить этот феномен? Глюки клиента? Сервера? Стоп-торги, некорректно описываемые в статусе заявки, но после которых какие-то сделки у кого-то проходили?
« Последнее редактирование: 04.03.2014, 00:20:34 от ddd323 » Записан
klimov
Разработчики
Hero Member
*****
Сообщений: 815


Просмотр профиля Email
« Ответ #1 : 04.03.2014, 08:56:39 »

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


Просмотр профиля Email
« Ответ #2 : 04.03.2014, 11:00:07 »

Жуть какая! Но почему с параметром "снять остаток? Обычные же заявки по умолчанию идут с "поставить в очередь". Это что такая специальная ловушка для непрофессионалов на случай разрывов рынка как вчера? ;)
Есть какой нибудь способ сделать заявку по рынку, чтобы на сервер биржи уходила лимитная с параметром "поставить в очередь"?
Записан
klimov
Разработчики
Hero Member
*****
Сообщений: 815


Просмотр профиля Email
« Ответ #3 : 04.03.2014, 11:32:20 »

В принципе, это классика - рыночная заявка берет с рынка все, что может и на рынке не остается.

Вам нужно научить скрипт ставить обычные лимитные заявки по максимальным (при покупке) или минимальным (при продаже) ценам по инструменту
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #4 : 04.03.2014, 11:56:49 »

То есть альтернативных способов нарушить рекомендацию биржи нет.

Хорошо, пойдем прямолинейно. А можно в текущей версии атф в скрипте получить значения этих текущих минимальных и максимальных цен по инструменту?
А на будущее - сделать функцию, вызывающуся по событию "изменение торгового диапазона" (вчера он менялся 2 раза в течение часа)
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #5 : 04.03.2014, 19:31:25 »

)))) .........Это что такая специальная ловушка для непрофессионалов .........

))).........Брокер "Финам". Сервер 78.41.199.32 (HFT который)


Это не сарказм - не подумайте, но я первый раз непрофессионала на HFT -сервере встречаю !!!
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #6 : 11.03.2014, 22:42:37 »

Heller, я правильно понимаю, что сейчас нет возможности получить в скриптах атф значения торгового диапазона - т.е. минимальных и максимальных цен по инструменту, принимаемых биржей? Когда можно ожидать появления этого функционала?
Klimov, можно ли надеяться на то, что сервер транзака будет иметь функцию информирования клиентских терминалов об изменении торгового диапазона сразу как только сам получит эту информацию от сервера биржи?
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #7 : 14.03.2014, 13:32:45 »

ddd323, сейчас видимо нет такой функции, но сделать в общем-то так навскидку не сложно.
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #8 : 14.03.2014, 19:13:34 »

ddd323, Вы уже решили свою проблему с рыночной заявкой (снятием остатка ) ?
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #9 : 14.03.2014, 21:28:54 »

2 Heller, функцию на сервере тоже надеюсь не сложно? Когда можно ждать функцию в терминале - в следующем релизе? А когда на сервере?

2 White Noise. Нет не решил. Сейчас единственный способ получать значения торгового диапазона - делать реальные заявки по рынку - в onOrder вернется хэш с заполненной ценой. Но, соответственно, даже таким способом до начала утренней торговой сессии получить торговый диапазон предстоящей сессии невозможно.
Так что все что можно делать сейчас - это ловить в onOrder статус рыночных заявок "отменено пользователем" (это если отмену заявок сам скрипт не делает) и повторять последнюю заявку как лимитную уже с параметром "поставить в очередь". Но с точки зрения потенциального проскальзывания (или точнее вероятности все-таки совершить сделку по этой цене на краю диапазона) из-за потерь времени это очень далекое от идеала решение.
« Последнее редактирование: 14.03.2014, 21:41:47 от ddd323 » Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #10 : 15.03.2014, 17:49:33 »

Уточните пожалуйста, что вы имеете ввиду под термином : "Граница диапазона"  - конкретно для меня - это ограничение по ценнику на фьючерс (последний раз на моей памяти, достижение такое было 2008, ну несколько раз в 2011),...когда, как говорится хочешь,...но не можешь ни продать ни купить - да и страхово ))))

Но в разговоре присутствует понятие заявок, типа рыночные, лимитки,....

Суть вопроса же такая : нужно исполнить объем в нужную секунду без всяких остатков и их снятий, правильно ? Ну и соответственно вопрос по объему ,....что это у вас такой за объем - который уже по умолчанию нарушает все законы риск менеджмента ))))
« Последнее редактирование: 15.03.2014, 17:52:01 от White Noise » Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #11 : 15.03.2014, 19:05:48 »

Под термином имею в виду то же самое. Последний раз это было 3 марта 2014 года на гепе вниз на открытии, причем диапазон менялся 2 раза в течение часа. Сделки по границе диапазона на продажу после его достижения еще шли (торги не были остановлены), т.к. находились иногда желающие покупать по этой цене.
Суть вопроса - нужно исполнить объем на любых условиях без всяких остатков (в итоге, т.е. можно в несколько порций) и снятий. Готового инструмента для этого не существует. Ближайший аналог - заявка по рынку согласно рекомендации биржи и мнению разработчиков о "классике" этой цели не удовлетворяет, т.к. эмулируется лимитной с "пограничной" ценой с параметром "снять остаток", т.е. если прямо сейчас желающих купить нет - то она снимается. А нужно чтобы, если желающих купить нет, заявка оставалась в стакане - тогда, например, через 5 или 50 секунд, когда появится желающий купить - моя заявка исполнилась бы.
3 марта моя заявка, поданная в 10.00.00 похоже дошла до биржи и стала активной на 242 трейде, а еще на 239 трейде граница торгового диапазона не была достигнута. Т.е., если бы моя заявка не была снята и осталась в стакане - она была бы третьей в очереди на продажу по "пограничной" цене и наверняка была бы исполнена.
Идеальное решение было бы - получить до начала торговой сессии нижнее  значение торгового диапазона и подавать заявку в 10.00.00 как лимитную по этой нижней границе с параметром "поставить в очередь". Тогда моя заявка на продажу осталась бы в стакане. Но для этого нужен соответствующий функционал терминала, и, наверное, сервера транзака. Возможное сейчас противодействие о котором я писал с предыдущем посте (поймать статус "отменена" и переподать заявку) будет означать что я был бы не 3-м в очереди на продажу по этой цене, а условно тысяча первым с призрачными шансами на исполнение. Разница - проскальзывание ~10000 пунктов вместо ~5000, а с учетом того, что я не просто закрывал длинную позицию, а переворачивался этой сделкой, разница для меня была бы между сильным убытком и заметной прибылью на этом гепе на открытии. (Хотя такие события случаются очевидно в среднем 1 раз в год - они достаточно крупные с точки зрения влияния на прибыль, чтобы о них стоило заботиться)

Про объем - если честно, не понял, при чем здесь объем. Я, к счастью, пока в тестовом режиме работаю и продавал всего 2 контракта. Но если бы я продавал 200, то разница для меня между 3-м и тысячным местом была бы еще важнее. При любом риск- менеджменте (или его отсутствии) задача закрыться как можно раньше и как можно надежнее при гигантских гепах, которые как показывает история иногда случаются, существует.
« Последнее редактирование: 15.03.2014, 19:45:23 от ddd323 » Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #12 : 16.03.2014, 08:02:22 »

Предлагаю сделать следующее, вы покажете как вы выставляете заявку, я внесу пару изменений - и все должно заработать - так как вам надо ))))

Кусок кода по выставлению заявки в студию )))
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #13 : 16.03.2014, 11:24:50 »

Что необычного вы собираетесь в нем увидеть? Обычная подача рыночной заявки через хеш. Если знаете как подавать рыночные заявки на ФОРТСе так, чтобы они в очередь ставились - так и напишите, как их подавать. (Добавка поля "unfilled", как я понял разработчиков, не поможет - оно будет игнорироваться.)

var OrdrHash = new_object("hash");
OrdrHash["quantity"] = 2;
OrdrHash["operation"] = OP_BUY;
OrdrHash["brokerref"] = 1;
var ordr_trnid = trade_action::transactMultiple(OrdrHash);

P.S. Хэш локальный.
« Последнее редактирование: 16.03.2014, 17:57:59 от ddd323 » Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #14 : 17.03.2014, 08:28:07 »

Heller, в дополнение к вопросу из поста #9.
В части получения информации от сервера об изменении торгового диапазона - в идеале неплохо бы сделать что-то типа вызова функции onTradeRangeChanged() по соответствующему событию, полученному от сервера. Естественно, при одновременном приходе этого события с другими (новая свеча, трейд) функция onTradeRangeChanged() должна обрабатываться/вызываться ДО исполнения соответствующих onNewCandle() и calc() (т.к. в них уже могут быть торговые операции, требующие знания новых "пограничных" цен)
Записан
Страниц: [1] 2 Печать 
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!