Вчера написал скрипт на LUA
Вычисление средней для Фьюча.
но как обычно прежде чем доверить ему боевой режим крези тест.
Который не смог пройти.
Как это работает. Колбек OnTrade складывал value. BUY как есть,
Sell наделял "-"
После делил на количество лотов. И всё работало.
А да, там приходит по три пакета, поставил фильтр что бы одни и те же trade_num
(Номер сделки в торговой системе)не учитывались
В общем если торгую одним лотом всё гуд. Но стоит кинуть большим лотом. Или делать много сделок подряд. Беда
Такое ощущение что колбеки не приходят. Простейший парсинг и сложение value не работает.
Что делаю не так? На форуме квика смешали всё в кучу. OnTransReply, OnTrade, OnOrder.
Тут одно не пашет OnTrade. А там проверки перепроверки устроили говно скрипты не рабочие. ОНО ТУПО НЕ ПАШЕТ, какие блядь проверки. Когда не приходят кол беки с 2015 года ваши темы, и не одна не рабочая. Рассинхрон полный.
В общем ХЕЛП
И ещё, после того как сработал колбек OnTrade, в его теле вызываю функцию в которой происходит пересчет текущей позы.
И что вы думаете, сделка исполнена, а поза прежняя. И только спустя какое то время срабатывает правильный пересчет
Он происходит из кол бека OnFuturesClientHolding (Функция вызывается терминалом QUIK при изменении позиции по срочному рынку)
Разрыв в пределах секунды. Вот такой тормоз!!!!!!!!
ХЕЛП по первому пункту. почему пропускаются кол беки?
Готов их дождаться, только они не приходят, не с задержкой не без неё.
И зря вы думаете что ШАРПЫ, АЛАБЫ в целом вся эта глючная шляпа кого та спасет. Там это всё работает через эту же прослойку!
И только добавит новых глюков. Удачных глючных трейдов!
Да и никто не годится.
Если, например, дальнейшие действия зависят от текущей позиции и эти дальнейшие действия наступают почти мгновенно, то нельзя полагаться на значения позиций, возвращаемых брокером через квик, эти значения надо вести самому виртуально. Параллельно вести потоки по контролю и сверке, но в моменте нужно оценивать всё логически. Квик никак не успеет. Как раз на уровне 1-2 секунды будут задержки… Я это в квике проходил, когда сетки заявок по стакану расставлял… если полагаться на квик, то система в разнос может уйти…
Например открыл лонг Сбера по 22550, в таблице позиций и состояния счета — 22590. Закрыл на 22650, цена в этих таблицах 22580.
Причем в сделках все правильно и маржа верная. А цена — от балды.
У меня не было такого, чтобы не приходили коллбеки, а вот задваивались часто, контролировал сверкой неисполненного остатка по заявке.
2. Один из вариантов — вывести расчеты за пределы OnTrade, но помогает это не всегда.
3. Еще один вариант — обрабатывать только третий колбэк (тоже иногда бывают сбои)
4. Вообще, из-за чехарды с колбэками в квике я отказался от использования их по прямому назначению, и по сути обработка сводится с начала к проверке статуса заявки, и лишь после того как заявка стала неактивна, лезу в таблицу сделок для вычислений.
5. Для меня есть два состояния расчета цены и объема позиции:
1) размер позы и ее средняя цена до выставления заявки
2) размер позы и ее средняя цена после завершения работы с заявкой
Вся эта информация всегда хранится отдельно (в памяти робота + в файле)
6. На самом деле, после того как я перешел на C#, то несколько усложнил систему и вообще храню таблицы заявок и сделок вне квика, обновляя их по тем самым колбэкам, но при этом сохраняю возможность запросить данные напрямую в квике, на случай возникновения аномалий.
В общем решил задачу, как часы на любых скоростях.
Без бороды истории сделок, заявок, БД.
Всё решил! Всем спасибо за дискуссию.