Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
Пользователь
Сообщений: Регистрация: 24.02.2015
20.04.2016 14:05:01
И всё, и по битам только почитать)))
Пользователь
Сообщений: Регистрация: 30.01.2015
20.04.2016 15:53:51
Цитата
Michael Bulychev написал: Добрый день. Николай немного сгустил краски. достаточно сохранить ссылку на полученную в колбеке таблицу. Примерно так:
Код
gTrade = {}
function OnTrade (t)
gTrade = t
end
function main ()
--в gTrade будет последняя сделка из OnTrade
end
Если я не правильно Вас понял, то опишите задачу подробнее.
Ну да... А вот такая ситуация сделку приняли по инструменту сбербанк сохранили передали в майн управление а в это время исполнилась сделка по газпрому сделку по сбербанку мы затерли и в майне вместо сбербанка получили газпром. что делать дилетанту?
Пользователь
Сообщений: Регистрация: 30.01.2015
20.04.2016 15:57:05
или вот еще прикол. как известно если сделки были совершены часто, то они придут пакетом в результате они последовательно как из автомата gTrade и затрут друг друга.
Пользователь
Сообщений: Регистрация: 30.01.2015
20.04.2016 15:59:02
пардон, опечатка в результате они последовательно как из автомата будут записаны в gTrade и следующие затрут предыдущие. В майне будет обработана лишь последняя
Пользователь
Сообщений: Регистрация: 30.01.2015
20.04.2016 16:00:13
указанные мной случае - это классика обработки асинхронных событий, но не для дилетантов.
Пользователь
Сообщений: Регистрация: 30.01.2015
20.04.2016 16:00:45
указанные мной случаи - это классика обработки асинхронных событий, но не для дилетантов.
Michael Bulychev
Гость
21.04.2016 05:22:23
Николай, я отвечал вот на этот вопрос:
Цитата
Или мне нужно будет её обязательно скопировать внутри коллбека, чтобы данные остались внутри скрипта?
Все остальное - очереди, синхронные функции и т.п. уже обсуждалось не раз на этом форуме
Пользователь
Сообщений: Регистрация: 30.01.2015
21.04.2016 06:25:44
Цитата
Michael Bulychev написал: Николай, я отвечал вот на этот вопрос:
Цитата
Или мне нужно будет её обязательно скопировать внутри коллбека, чтобы данные остались внутри скрипта?
Все остальное - очереди, синхронные функции и т.п. уже обсуждалось не раз на этом форуме
Т е очереди и синхронные функции - это для дилетантов? Вы действительно так думаете или шутите?
Пользователь
Сообщений: Регистрация: 25.09.2020
13.01.2022 10:18:08
Решил поднять эту ветку, а не заводить новую.
Время от времени (очень редко, не более 10 раз за всё время торговли) я сталкивался с ситуацией: скрипт выставляет заявку, она не срабатывает, снимается по таймеру, и тут же выставляется снова по той же цене. И так несколько раз. Я никогда не обращал на это внимания (заявки обычно всё равно срабатывали, сдвинув цену на пару пунктов), но теперь, в связи с причёской новой версии, решил разобраться, раз уж снова напоролся на именно такой случай. Итак, скрипт хочет продать, причём по BID - цена его устраивает. Выставляет заявку, и... BID стоит, как вкопанный, а мой придурок ставит, снимает, ставит, снимает... вот так пять часов и простоял! Обычно у меня в таких случаях одновременно с "заявка зарегистрирована" выскакивает сразу и "удовлетворено", а здесь... что бы это могло означать?
Вчера же напоролся и вообще на очень странную штуку. Как известно, прерывания на одно событие приходят пачками (именно по этой причине я использую из коллбеков только OnTrade, как минимально необходимое и уже в нём самом давлю паразитные вызовы). Но вчера я всё обвистовал отладочной печатью: решения о подаче заявок скриптом, момент передачи их в стек заявок и вывода оттуда, занесение в стек сделок и "снятие с учёта", сами сделки (первичная она, вторичная или дубль) и все выходы на ошибки. Короче говоря, время работы этих утилит должно, по идее, резко замедлиться. Так вот, один раз (только один, больше не повторилось) я получил в логе диагностику, от которой просто глаза полезли на лоб: не закончив обработку первого коллбека, снова появилась строка диагностики о начале обработки коллбека. Если я что-нибудь в чём-нибудь понимаю, этого не может быть потому, что не может быть никогда: коллбек не может быть вызван, пока не завершено выполнение другого коллбека - тем более, этого же самого. Вопрос: может ли В ПРИНЦИПЕ такое случиться? После того, что мне довелось здесь наблюдать, я уже ни в чём не уверен.
Пользователь
Сообщений: Регистрация: 21.08.2015
13.01.2022 13:30:49
Цитата
Владимир написал: Выставляет заявку, и... BID стоит, как вкопанный, а мой придурок ставит, снимает, ставит, снимает... вот так пять часов и простоял!
Если заявка попала в стакан и там есть встречный бид, она не может не исполниться, это означало бы, что сломана биржа, что вряд ли. Поэтому либо заявка по факту выставлена не была, либо стоящий как вкопанный бид стоит только в воображении клиента (например, слетел фильтр на получение этого параметра), а реальный бид далеко ниже.
Цитата
Владимир написал: коллбек не может быть вызван, пока не завершено выполнение другого коллбека
Это проистекает из того, как квик обрабатывает очередь сообщений в основном потоке. Выбрал сообщение, дернул колбеки, обновил таблицы, пошел за следующим сообщением. Т.е. даже если что-то и приехало в процессе, квик этого пока не видит. Но есть теоретическое исключение: если внутри колбека идет работа с окном, И эта работа содержит некий модальный цикл сообщений, И одним из выбранных сообщений в этом цикле будет сообщение о приезде чего-то нового, обработка вновь приехавшего произойдет внутри колбека и, следовательно, увидим вложенный колбек. Модальные циклы в дизасме видел, пытался воспроизвести вложенный колбек - не удалось, сделал вывод, что на основных путях такого не бывает. Но если сильно постараться, то может и бывает. Есть также другое (более простое) объяснение: гонки в коде логирования.
Пользователь
Сообщений: Регистрация: 25.09.2020
13.01.2022 13:53:54
Anton, Каждый раз при подаче получал "заявка зарегистрирована", после снятия - "заявка снята", что такое "встречный бид", я не понимаю, биржа работала (по другим тикерам сделки происходили), реальный бид каждый раз запрашивался заново из ТТТ перед подачей заявки.
Нет, внутри колбека не идет работа с окном - только работа с логом, то бишь вывод в файл. Ладно, будем пока считать, что марсиане прилетели, и в софте что-то сбойнуло.
Пользователь
Сообщений: Регистрация: 21.08.2015
13.01.2022 14:27:23
Цитата
Владимир написал: реальный бид каждый раз запрашивался заново из ТТТ перед подачей заявки.
Если фильтр по инструменту слетел, там было все время одно и то же, все пять часов, хотя реальный бид упрыгал конечно далеко. А по другим инструментам все могло ехать и ехать как положено. Есть ли в логе цена выставлявшейся заявки? Она менялась?
Пользователь
Сообщений: Регистрация: 25.09.2020
13.01.2022 14:52:13
Anton, А что такое "фильтр по инструменту слетел"? Мне брокер сказал, что если стоит "умный заказ", то все остальные настройки не имеют значения, я всё равно должен получать реальные данные.
Нет, цена выставлявшейся заявки тоже стояла, как вкопанная - она же и есть бид! У меня, вообще-то стоит запрет новой сделки по той же цене - она должна хоть немного шевельнуться, но этот уровень устанавливается только после совершённых сделок, а нужно, судя по всему, ещё и при снятии несработавших заявок.
Пользователь
Сообщений: Регистрация: 21.08.2015
13.01.2022 15:01:45
Цитата
Владимир написал: Мне брокер сказал, что если стоит "умный заказ", то все остальные настройки не имеют значения, я всё равно должен получать реальные данные.
Это по дизайну. На практике может "самопроизвольно" сброситься галка (настройки - заказ данных - текущие параметры, посмотрите, стоит ли галка на бид на этом инструменте).
Цитата
Владимир написал: цена выставлявшейся заявки тоже стояла, как вкопанная
Что как бы подтверждает предположение. Не стоял же этот бид пять часов, даже в неликвиде шевеление есть какое-то.
Пользователь
Сообщений: Регистрация: 25.09.2020
13.01.2022 15:17:00
Anton, Да, наверное что-то в этом роде. Сейчас этот бид сменился, свечки тикают, но мой скрипт обиделся и больше не хочет его продавать (BDTX)