Но, без окон котировок, подписки на стаканы "то потухнут, то погаснут". Отписаться типа получается, но Quik начинает пищать, что открыто более 200 окон котировок. При этом в главном окне Quik ни одного окна котировок нет.
Я так понимаю, что стаканы, через подписки на них, мне не светят. Буду курить прямой запрос котировок по таймеру.
Когда стаканы приходят, повторить https://www.quantower.com DOM Surface (история стаканов) на Питоне не сложно. Правда я нигде не нашел, что они называют Imbalance ?
Если хотите, то выложите свой скрипт с тестом стаканов, я его проверю на демо сервере и если есть ошибки исправлю, либо подтвержу, что проблема в квике.
Vokelpan написал: Добрый день! Подниму тему. Вчера находился за терминалом до окончания основной сессии до 19:15 МСК. Потом оставил ноутбук включенным и пошел спать. Утром вижу вот такую картину в терминале. Котировки акции (Мечел) оставленной на экране терминала загрузились и отображаются с учетом вечерней сессии. Последнее значение цены акции в 23:45 МСК. Котировки других акций находящихся в одной таблице текущих торгов с Мечел не отображают информацию о вечерней сессии. Как это исправить? Я хочу утором до открытия торгов видеть в терминале котировки акций с учетом вечерней сессии. Все акции находятся в одной таблице текущих торгов.
Рекомендация в сообщении №4 этой темы не помогла. Quik не подгружает котировки автоматически, котировки подгружаются при переключении между названиями акций в таблице текущих торгов.
На вечерней сессии торгуются не все акции дневной сессии. Подробнее смотрите на сайте биржи. -------------------------- Московская биржа с 10 ноября допустит к вечерним торгам на рынке акций еще восемь бумаг российских эмитентов, следует из сообщений торговой площадки.
Среди них бумаги группы «Астра», «Банка «Санкт-Петербург», ГТМ, «Мосэнерго», НМТП, «РуссНефти», «Софтлайна» и ТМК.
«В соответствии с правилами проведения торгов на фондовом рынке, рынке депозитов и рынке кредитов публичного акционерного общества «Московская Биржа ММВБ-РТС» с 10 ноября 2023 года для:
– акций обыкновенных ПАО Группа Астра (торговый код – ASTR; ISIN – RU000A106T36);
– акций обыкновенных ПАО «Банк «Санкт-Петербург» (торговый код – BSPB; ISIN – RU0009100945);
– акций обыкновенных ПАО «ГТМ» (торговый код – GTRK; ISIN – RU000A0ZYD22);
– акций обыкновенных ПАО «Мосэнерго» (торговый код – MSNG; ISIN – RU0008958863);
– акций обыкновенных ПАО «НМТП» (торговый код – NMTP; ISIN – RU0009084446);
– акций обыкновенных ПАО НК «РуссНефть» (торговый код – RNFT; ISIN – RU000A0JSE60);
– акций обыкновенных ПАО «Софтлайн» (торговый код – SOFL; ISIN – RU000A0ZZBC2);
– акций обыкновенных ПАО «ТМК» (торговый код – TRMK; ISIN – RU000A0B6NK6)
допускается заключение сделок в ходе дополнительной (вечерней) торговой сессии», - говорится в сообщении.
Сергей ВАТ написал: Здравствуйте. Я новичок в программирование, строго не ругаться :-) Возник такой вопрос. можно-ли заставить функцию обновлять данные и как это сделать? Функция находиться до основного тела скрипта.
Все что вне функции main, кроме колбеков, исполняется один раз. Перенесите функцию внутрь цикла в main.
Serge123 написал: Когда приходит инфо, напр., по OnAllTrade, там присутствует направление сделки: B - покупка и S - продажа. Я заметил, что, когда я продаю, то в этой сделке стоит B, когда покупаю, - S. А как сервер биржи определяет напр. сделки? А если моя заявка будет по текущей цене, а не лимитная, то тогда направление будет другое? От вида встречной ко мне заявки (лимитная или по маркету) это направление зависит?
кто ударил, того и направление. Рыночные сделки двигают рынок.
Пардон , выше ошибся задержка не от 50 до 500 , а от 118 до 225. ----------------- После отключения Nagle на свооем компе, задержка особенно не изменилась. 0,GAZP,203422.222,203422.336,114.0,P=167.15,Q=1.0
а вот сделки пришедшие с запаздыванием от 50 до 500 ms Если вычесть задержку интернет, то первые сервер отправил практически сразу, а вот последние почему задержал. Очевидно пошел покурить.
Вот еще информация к размышлению: 0,TATN,195030.364,195030.58,215.0,P=623.0,Q=1.0 -- это обезличенная сделка Она задержалась на 215 ms Но дальше свеча 1 мин тайм и 5 минут jS=10,nm=0,idnk=9530,TATN,195000,32.95,Oi=623.00,Ci=623.00,Hi=623.00,Li=623.00,V=1.00,m=1,size=14657,20230410 jS=10,nm=0,idnk=9530,TATN,195000,32.95,Oi=623.00,Ci=623.00,Hi=623.00,Li=623.00,V=1.00,m=5,size=7593,20230320 они пришли вместе, но задержались на 32 секунды Т е 1 минутная свеча запаздывает на 30 секунд
krabykraby написал: FIX client connector Не понимаю на счет скорости - условно если через LUA в QUIK торговать обновление среза книги и тиков - 100мс, а через FIX интерфейс какой roundtrip будет? Комп стоит в москве. ~1-3 мс будет пинг до вашего сервера QUIK.
Задержка получения обезличенных сделок зависит от брокера. Какая у Вас задержка данных при обмене с сервером?
Например у меня она 47 ms. Смотрим задержу приема обезличенных сделок:
. Число после названия инструмента. минимальное 57. Вычитаем 47 В итоге сервер брокера добавляет 10 ms. ------------------ Поэтому у Вас задержка приема обезличенных сделок должна быть не 100 ms, а не более 15 ms. Остальные 85ms добавляет брокер, ему тоже кушать надо.
Alexey89, Можно сделать все, что придумаете. Проблема лишь в уровне Ваших знаний и умений. Если хотите сделать что-то сами, то начните с изучения языка на котором будете писать ( например Луа ) и подробного изучения документации на библиотеку QLua и терминал QUIK.
Робот в октябре. ---------------------- Последний график - это прибыль и убытки. белая линия - итого. зеленая -лонг синяя -шорт штриховая - текущая, не зафиксированная --------------- На первом графике профит нарастающий за месяц на втором профит за каждый день
paluke написал: По документации у getDataSourceInfo() нет параметров
getDataSourceInfo
Функция предназначена для получения информации об источнике данных для индикатора.
TABLE info getDataSourceInfo()
Функция возвращает таблицу Lua с параметрами:
ВАЖНО! Для корректной работы функции getDataSourceInfo, вызываемой из функции Init, необходимо перезапустить Рабочее место QUIK после добавления индикатора на график.
Параметр
Тип
Описание
interval
NUMBER
Текущий интервал (тайм-фрейм) графика
class_code
STRING
Код класса источника данных
sec_code
STRING
Код инструмента источника данных
param
STRING
Наименование параметра Таблицы текущих торгов, по которому строится график. Если поле пустое, то график строится на основании Таблицы обезличенных сделок
Сергей написал: Всем всего хорошего, Просьба подсказать, как получить данные последней видимой в окне свечи (у правого края экрана). Любой свечи на истории, не текущей формируемой.
Хотел написать программу, которая бы при просмотре свечей в одном окне (допустим на М5), сама пододвигала график в окнах других ТФ, чтобы не делать этого вручную, когда изучаю график на истории, на разных ТФ. Т.е. допустим на М5 я бы открывал следующую свечку (на истории), следующую, и если время свечки в минутах = 10 / 25 / 40 / 55, то автоматически открывалась следующая 15-тиминутная свеча в другом окне. А если минуты = 55 - то и следующая свечка на М60 (и т.д.). Удобней, чем руками, экономило бы время..
Но нужно как то понять, что свеча именно у правого края экрана, в программе. Вот в чём вся штука.
В индикаторе номер текущей свечи (у правого края) передается параметром i в функцию onCalculate(i) Кроме того, есть параметр Size, который равен номеру текущей свечи. Любую свечу можно получить по ее номеру от 1 до Size Это то?
Можно лишь так: 1) настроить таблицу на вывод через DDE в режиме "вывод после создании" 2) запустить приложение перед запуском КВИК 3) запустить КВИК ----------------------------------- Например, у меня экспорт DDE стартует при загрузке DLL приложения.
VPM, Я не возражаю , Каждый имеет право на собственное мнение. -------------------------- Что же про Lua, то я его знаю очень хорошо, так как встраиваю в IOT уже лет восемь, пишу свои библиотеки и делаю многопоточные варианты с встроенными JIT компиляторами. Написал это не для рекламы, а как возражение на Ваше высказывание. ----------------- Если У Вас есть проблемы со скриптом, то напишите конкретно и покажите скрипт, я вам его исправлю и объясню, если хотите даже на уровне внутреннего содержания VMLua и байт кода. ----------------------------- Что же касается Вашего или кого-еще мнения о моем уровне программирования, то мне это пофиг, так как этот уровень доказали многочисленные мои ученики, некоторые из которых успешно работают в ведущих мировых компаниях, а также те системы, которые я внедрял в вузах и на предприятиях на просторах СССР. ------------------ Успехов вам в написании скриптов.
VPM написал: nikolz, Ваши посты как всегда актуальны.
Кто виноват? и Что делать? Вот вопрос.
Терминал устанавливают для возможности торговать (в не зависимости от его версии). Пользовательские скрипты используют для автоматизации этого процесса (в не зависимости от языка и версии). И это не сколько не отменяет тот факт, что пользовательский скрип не должен убивать терминал и тем более влиять на работу сервера , кем бы и как не был написан. ::
Терминал сделали, чтобы Вы могли подавать заявки брокеру руками. И эту функцию он реализует прекрасно. --------------- Но Вы же лепите ,гордясь своим невежеством в программировании, монстров на луа и пихаете их в терминал. ------------------------ Так как терминал посылает сообщения на сервер и Вы в скрипте формируете эти сообщения, то Вы можете даже организовать DDOS атаку даже из своего скрипта. -------------------------- А уж завалить терминал это Вы можете как два пальца... ------------------------ Вы как и многие "профи" на этом форуме постоянно ругаете КВИК , а когда понимаете, что это вы на...ли г-но, скромно молчите. ---------------- Увы, LUA дает доступ во внутрь терминала. Поэтому защиту от дурака здесь установить невозможно. ------------------------
Похвально, наметился прогресс в риторике. Следующим шагом должно быть признание, что виноват автор скриптов, либо тот, кто использует халявные скрипты не разобравшись в них. ----------------------- Зеркало не виновато.
Кирилл написал: Доводилось замечать, что линия позиции находится как-то не совсем там, где вчера. Каждый раз думал, показалось. Теперь убедился - не только линия съехела чуть вниз, но и сама цена вчерашней покупки в таблице. К примеру : ВТБ чуть-чуть не дошло до круглого числа, решил взять первую часть по 0,025036. На следующее утро цена покупки стала уже ровно 0,025000. Красота! Теперь линия идет ровно по сеточке.
А сколько денег-то было списано? По какой цене? И как далеко будет заходить такое "округление"?
nikolz написал: Плaтфopмa ничего не считает сама , а покупают дaнныe с биpж и у пocтaвщикoв дaнныx (вне биржевых, например, FOREX).
Специально для Вас ссылка на FAQ TradingView про TVC :
Цитата
Этот префикс не является признаком какой-либо биржи: TVC расшифровывается как «TradingView Charts» и означает, что данные рассчитываются TradingView. Мы берём их из комбинированного потока данных, который получаем из разных источников. После обработки , полученные данные отображаются на графиках в режиме реального времени и любой желающий может использовать их бесплатно.
спасибо за ссылку, но читайте далее: -------------------- Под префиксом TVC: обычно выступают CFD, а также инструменты на основе других, наиболее популярных инструментов, например, индексов и товаров: Индекс доллара США, S&P 500, золото и другие. Несмотря на то, что графики оригинальных инструментов и графики TVC внешне схожи, сравнивать их неправильно, так как у них разные источники данных.
nikolz написал: Правильно я понял, что свечи с таймом меньше дня считаются одинаково.Проблема только с дневными свечами. Верно?
Я пока что думаю, что дневки TradingView сама строит из младших свечек.
Относительно TradingView вы зблуждаетесь. Плaтфopмa ничего не считает сама , а покупают дaнныe с биpж и у пocтaвщикoв дaнныx (вне биржевых, например, FOREX). Это классический агрегатор. Они продают эти данные желающим (см. на их сайте цены подписки) в том числе и брокерам.
nikolz написал: Не знал что свечи можно формировать по разным алгоритмам Всегда считал что свеча - это 5 индикаторов, алгоритмы которых настолько примитивны. --------------- Ну если разработчики Квика умудрились изобрести новый алгоритм формирования свечей, то хотелось бы увидеть его. Или это тайна?
К сожалению, можно. Например, дневные свечи срочного рынка на TradingView начинаются от 19:05, а в квике от 9:00. Или, скажем, дневные свечки акций СПб биржи в квике строятся по часовому поясу мосбиржи, хотя ясное дело нужно строить по часовому поясу биржи, где торгуется исходная акция. Это влияет на цену закрытия дневки, т.к. реальное закрытие переносится на следующий день (в 0:59) в зимнее время США.
Правильно я понял, что свечи с таймом меньше дня считаются одинаково. Проблема только с дневными свечами. Верно? ------------------- Относительно начала в 19.05 и 9:00. Вроде бы это соответствует началу дневной сессии. В первом случае для фьючерсов, а во втором - для акций. Если это так, то это привязано к бирже. --------------------- из Вашего объяснения непонятно, чем алгоритм Квика отличается от алгоритма Мосбиржи или СПБ. -------------------- TradingView -- вообще ничего не рассчитывает - это Веб агрегатор. ------------------------- Tradingview показывает котировки от FXCM (известный прайм брокер) и еще ряда поставщиков. Вот эти поставщики и считают свечи. ------------------ Вообще-то, сравнивать Tradingview можно и то лишь с натягом не с QUIK, а с WEB-QUIK. Аналогично поездке на Гаити на пароходе или самолете. Вы были на Гаити?
Не знал что свечи можно формировать по разным алгоритмам Всегда считал что свеча - это 5 индикаторов, алгоритмы которых настолько примитивны. --------------- Ну если разработчики Квика умудрились изобрести новый алгоритм формирования свечей, то хотелось бы увидеть его. Или это тайна?
Владимир написал: nikolz, Лапуль, Вы ХОТЬ ЧТО-НИБУДЬ в программ ировании соображаете? С какого там класса нынешние школьники начинают изучать информатику? Вот в тот самый класс и загляните - надеюсь, объяснят.
Может просто признаете , что написали хрень. ---------------------------- Ах, да, Вы же самый крутой петух в этой курятне.
Не влияет. так как ответы от сервера приходят пакетами, то отсылал заявки с максимально возможной скоростью, примерно со скоростью до 100 в секунду. В результате почти положил сервер , так как отключили и предупредили, чтобы так не делал.
Если я что-нибудь в чём-нибудь понимаю, то сделка может быть либо активной либо пассивной, то есть это ОДИН бит информации, а здесь их ДВА. И что будем делать с состояниями 0x00 и 0x60?
0x00 - отмененное состояние. 0x60 - прикольно . Расскажите, как уместить 60 в два бита?
nikolz написал: Я отлаживаю свои dll в Scite. Отладил не одну сотню функций для работы в луа и не только для КВИК, но и других встраиваемых систем.В чем проблема?
Проблема описана в топике. Раньше было удобно ловить в отладчике плюсовые ошибки. Если есть что предложить по теме, прошу выложить инструкцию как с помощью Scite поймать в отладчике плюсовую ошибку при работе терминала. Указание числа отлаженных Вами функций считаю офтопом.
Выложите пример с ошибкой, попробую показать на Вашем примере.
Нуичточталексейужесуществует написал: Ну отладка через логирование у меня уже есть через нормальные lock-free очереди, вопрос не в этом. Раз заявляется поддержка LUA, необходимо предоставить и нормальные средства разработки. Пусть отладочный, заведомо неюзабельный в проде, терминал без символов, пусть какой-то mock на lua - свою же lua часть они как-то отлаживают? Всегда можно найти способ подходящий только для добросовестных разработчиков. Зачем провоцировать сообщество на взломы защит и распространение неофициальных релизов с подозрительными правками?
Я отлаживаю свои dll в Scite. Отладил не одну сотню функций для работы в луа и не только для КВИК, но и других встраиваемых систем. В чем проблема?
Cyber написал: Како же тормозной этот SearchItems. Или это у меня комп уже старый. Чтоб проверить 100 цен на наличие в них заявок уходит около минуты. Есть альтернативные методы?
Можно подробнее, что такое "Чтоб проверить 100 цен на наличие в них заявок "
У меня эта функция работает очень быстро. Покажите свой скрипт.
Информация к размышлению. Тестил скрипт на QLUA на демо сервере разработчиков. За 4 часа 250 тысяч заявок выставил и снял. Инструментов было 250. Потоки открывались из пула столько, сколько надо. чтобы не было очереди по инструменту. Максимальное число потоков получилось 12. ---------------- Проблем было ноль.
Время сервере брокера никак не привязано к работе сервера брокера. Наблюдал случаи когда время сервера запаздывало относительно биржи и сервера точного времени, но это не влияло на начало сессии. Данные с биржи просто транслируются клиентам. ------------------ вообще-то время сервера биржи и время компьютера я не использую в торговле. Я использую эти данные лишь для изучения потоков либо для обнаружения запаздывания данных по причине очередей либо глюкам на сервере брокера. -------------------- Начало сессии определяю по движению цен и появлению заявок.
еще замечу, что нестабильность времени компьютера связана со стабильностью его часов на плате. Для наглядности вот две картинки
На этой картинке погрешность показаний сервера точного времени, которые принимает компьютер. Очевидно, что среднее значение равно нулю так как ошибка симметрична относительно нуля. А максимальное отклонение в пределах 10 ms =========================
А это картинка усредненной погрешности часов компьютера, которые синхронизируются от сервера точного времени Очевидно, что погрешность имеет смещение и дрейф , которого нет в показаниях сервера. Это результат дебильной системы фазовой автоподстройки винды и нестабильность аппаратных часов на плате.
Serge123 написал: Чтобы при приёме заявок раньше встать в очередь, я синхронизирую часы Виндовс по атомным часам и проверяю это в сервисах типа time100.ru. Но всё равно возникают погрешности. Напр., утром эти сервисы, как правило, говорят (да ещё и каждый по-своему), что у меня точное время, а в 19 часов, что мои часы спешат на 0.3 сек... Можно ли как-то узнавать время точнее, напр., с точностью 5-10 мсек? Например, получая его с сервера брокера? Или более точно установить его в Виндовс? Регион - Ставропольский край (не сам Ставрополь).
Писал про это на форуме. Для более точной синхронизации надо настроить параметры винды. Как и что , можно почитать на сайте майкрософт. Но погрешность менее 10 ms будет в среднем.
Колбек вызывыется терминалом не после изменения таблицы, а перед ее изменением. т е сначала вызывается колбек, а потом эти данные обновляют соответствующую таблицу. ------------------------- Поэтому попытка прочитать изменения таблицы в колбеке всегда безрезультатна.
Serge123 написал: Subscribe_Level_II_Quotes на получение этой информации? Если не создавать табл. обезл. сделок, то скрипт получает только инфо по OnQuote...
Subscribe_Level_II_Quotes и OnQuote - это не сделки, а заявки.
Судя по откликам, писатели ничего не увидели интересного. Поэтому выскажу свое мнение. ------------ Про возможность конвертации данных из TXT в формат DAT и обратно. --------------------- Есть два случая, когда надо дописать данные в архив свечей в формате DAT. --- 1) Иногда в истории появляются пропущенные дни, которые хотелось бы восстановить. --- 2) Для тестирования алгоритмов на истории нужна история больше чем 3000 свечей, доступных с сервера. -- Пока единственный способ получить больше - это накапливать историю в реальном времени. -------------------- Да, в статье рассказываются проблемы (особенности ) работы брокеров с сервером. Но не стоит забывать, что все клиенты брокера получают инфу от этого сервера. проблемы сервера - проблемы клиентов. -------------- В статье есть два интересных момента. Первый касается загрузки данных по клиентам. Пусть и упрощенно, но показано, что клиенты могут курить бамбук многие минуты. ------------------ Второй момент связан с загрузкой состояния счетов, при которой блокируются остальные потоки. т е опять клиенты курят бамбук. --------------------- В статье говорится о скорости ядра в 2000 транзакций. Раньше читал о 1000. Писатели и буратины, могут просто посчитать сколько ждать ответки с биржи, когда рынок активно торгуется. ------------------------- Прикольно читать чистосердечные признания типа: Ничего не понял (не увидел, не внюхал). Всегда интересовало, зачем чел это пишет? Ну не понял, твоя проблема. Не интересует, не читай.