Alexander (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 След.
Получение запросов через MOEX API, Вопросы получения запросов от Московской биржи средствами Lua и C-Lua под Lua
 
Цитата
Nikolay написал:
Цитата
Alexander написал:
HTTP pipelining
Разве в документации сказано, что это поддерживается?

Я получал данные пакетами. Получаешь число записей, и в цикле запросы на очередной блок данных в 100 записей, больше не выдается.
В их документации не сказано, что это поддерживается, но также не сказано и то, что это не поддерживается! Сервер в ответе keep-alive отвечает, а значит поддержка на сервере есть, но только не в полном варианте. Единственное что я смог сделать, так это посылать по http запросы не в таком формате как обычно на один запрос: подключение -> запрос (Connection: close сразу в запросе) и так столько запросов сколько нужно, а  так: подключение -> запрос(Connection: keep-alive) -> запрос(Connection: keep-alive) -> ... и т.д. ->запрос(Connection: close). То есть хотя бы так, что хоть позволяет одно соединение, а потом подряд несколько запросов и в последнем запросе указание закрыть соединение. А вот реальный HTTP pipelining почему-то не хочет делать. При нескольких GET запросах отвечает только на первый.
По поводу блоков данных по 100 в цикле это понятно, это я знаю, но это по сути один запрос, вернее форма запроса одна, только start меняется как параметр и всё и гоняй в цикле, остальная основная часть URL-а постоянна, а я хотел реализовать в одном запросе сразу несколько запросов с разными URL-ами, но видимо их сервер такое не может обрабатывать, потому как так настроен.
Получение запросов через MOEX API, Вопросы получения запросов от Московской биржи средствами Lua и C-Lua под Lua
 
Так же прошу поддержку ответить на следующее. Клиент QUIK соединяется с сервером QUIK у брокера, а сервер QUIK связан с мосбиржей и онлайн получает поток информации от неё, далее переправляя часть этой информации клиенту. Вопрос: как сервер QUIK получает информацию от биржи? По какому протоколу, API? Есть какие-то отдельные договорённости между брокером и биржей по передаче этой информации и в каком формате?
Комиссии в системе
 
Цитата
funduk написал:
Цитата
Alexander написал:
После вечерней сессии сервер вернул уже другие комиссии. Поэтому почему только в течении сессии мне пока не понятно.
Конечно другие, ведь и комиссии за сделки тоже поменялись. Наверно, мосбиржа не хочет хранить или публично предоставлять историю комиссий.
Ну так и я о том же пишу. Сесиия идёт - сервер возвращает комиссии актуальные на сессю. Сессия завершилась - возвращает новые тоже актуальные. Всё как и должно быть. Я не понял почему только в течении сессии? Но не после сессии. После вечерней возвращает актуальные. Может после завершения вечерней сессии сервер не возвращает комиссии? Или как это понять? После вечерней я не пробовал.
Получение запросов через MOEX API, Вопросы получения запросов от Московской биржи средствами Lua и C-Lua под Lua
 
Пока подожду, может кто тут ответит. Тут быстро и просто.
Получение запросов через MOEX API, Вопросы получения запросов от Московской биржи средствами Lua и C-Lua под Lua
 
Цитата
funduk написал:
Кстати, техподдержка Мосбиржи иногда на такие вопросы, заданные через форму обратной связи на их сайте, отвечает.
У меня был опыт работы по вопросам мосбирже. Написал им как-то раз вопросы по облигациям. Давно. Так и не дождался ответа от них вообще. Мысль написать им опять конечно возникала, напишу конечно скорее всего.
Комиссии в системе
 
Цитата
funduk написал:
Alexander, ответ  nikolz  исчерпывающий. Если недостаточно - дальнейшие консультации платные    
За наводку на API биржи спасибо. С запросами разобрался. Могу теперь сам формировать любые запросы по их документации. Нужные комиссии я уже получаю через запросы к собственной библиотеке на C++, которая делает http-запросы на сайт биржи. А вот вопросы к разработчикам остались. Вопрос же явно решился самостоятельно, почему нельзя квику транслировать в ТТТ комиссии? Что тут сложного? Зачем вот мне пришлось специально со всем этим разбираться, писать библиотеку? Да, я написал. Но время потрачено. Хотя надо признаться с пользой. И то хорошо. Но я вот не могу понять, неужели трудно в ТТТ транслировать эти комиссии? Всё равно же квик получает море информации с биржи. А в ней наверняка уже есть и комиссии.
По поводу того, что: "У мосбиржи есть апи для получения этих комиссий в течение сессии (но не после сессии!)", то я пробовал получать комиссии до вечерней сессии и после. После вечерней сессии сервер вернул уже другие комиссии. Поэтому почему только в течении сессии мне пока не понятно. По этому поводу в доках мосбиржи есть такое:

 Служебное поле SEQNUM в некоторых таблицах содержит уникальный номер
обновления состояния таблицы. Его следует использовать в запросах для получения
информации не с самого начала, а только обновления со времени, когда было
получено предыдущее состояние таблицы.
 В ответах с инструментами, сделками и котировками присутствует блок dataversion.
Поле SEQNUM в этом блоке содержит стартовый номер состояния таблицы для
указанной версии. При увеличении значения версии поле SEQNUM изменяется, в
том числе оно может быть уменьшено. Следует отслеживать данный параметр для
корректной обработки переходов между торговыми днями, в случае если
подключающаяся к серверу система активна круглосуточно.

Но я с этм не заморачивался, поскольку сервер вроде корректно отвечает. Но понаблюдаю дальше за этим моментом и если что, то буду пробовать рекомендации биржи. Так же создал отдельно тему: https://forum.quik.ru/messages/forum10/message74302/topic8505/?result=new#message74302
Получение запросов через MOEX API, Вопросы получения запросов от Московской биржи средствами Lua и C-Lua под Lua
 
В связи с тем, что возможности терминала QUIK ограничены и не позволяют даже получать некоторые параметры инструментов, которые транслирует Московская биржа и которые есть на сайте этой биржи, то возникла необходимость  получать эти параметры самому через биржу. Элементарный пример - QUIK не транслирует комиссию за регистрацию сделки(бирж. + НКЦ) по инструментам ПФИ в ТТТ, или вместо настоящего кода инструмента по фьючерсу транслирует не код инструмента(underlying_asset), а транслирует в ТТТ - asset_code. Почему это не может реализовать сам QUIK это какая-то загадочная тайна. Просьбы решить это на стороне QIUK-а успехов не возымели. Поэтому пробую сейчас сам делать запросы на биржу через их web API. Для этого написана отдельная библиотека, которая делает нужные запросы согласно документации по API, которая есть на сайте биржи. Так вот простые одинарные запросы проходят без проблем и сервер выдаёт результаты. Сейчас пробую сделать http-запрос, в котором сразу несколько запросов(HTTP pipelining, заголовок с Connection: keep-alive). Сервер отвечает без ошибок(200 OK), но вот ответ даёт только на самый первый запрос, хотя  ответе сервера присутствует в заголовке: Connection: keep-alive Кто-нибудь может пояснить почему ответ только один? Могу конечно реализовать последовательно несколько отдельных http-запросов, но хотелось бы решить проблему, тем более что сервер вроде как не ругается.
Комиссии в системе
 
funduk, можете в 2-х словах рассказать как работает api от биржи? Просто не сталкивался с таким. dll библиотеки с описанием функций? Как их получить? Есть ли плата? Биржа даёт информацию миную брокера? Как к экселю прикрутить?
Комиссии в системе
 
Цитата
funduk написал:
Alexander, два момента:
 Как минимум в БКС например биржевой сбор иногда транслируется неправильно после сделки (на одну копейку меньше или больше), что подтверждалось Мосбиржей в переписке. Этому багу как минимум год.
 У мосбиржи есть апи для получения этих комиссий в течение сессии (но не после сессии!). Я к экселю прикрутил.
1) Ну на 1 копейку лично для меня это вообще не принципиально. А вот то, что транслируется только уже после совершения сделки это уже принципиально плохо, т.к. я не могу прикинуть комиссию заранее по ПФИ. По акциям и облигациям обе комиссии(брокер + за регистрацию сделки) считаются легко.
2) Раз у Мосбиржи есть апи для получения этих комиссий, то кто мешает разработчикам квика комиссию по ПФИ транслировать в квик? Комиссия за 1 ПФИ(фьючерс, опцион) спокойно себе лежит и красуется на сайте биржи по любому ПФИ. Что мешает брокеру через апи получать эту комиссию и транслировать в ТТТ для инструмента ПФИ? На нужное количество ПФИ комиссию я уж как-нибудь посчитаю, умножив комиссию за 1 контракт на моё количество.

PS. В общем проблему решить можно. Прошу поддержку ответить. Так же можете зарегистрировать предложение. На данный момент я сам считаю комиссии за регистрацию сделки по ПФИ(бирж.+НКЦ) по формулам, которые взял с сайта мосбиржи. Проверял, сравнивал с комиссиями на сайте. Пока вроде всё сходится до копейки. Надеюсь, значит, что считает правильно. Но вот только расчёты громоздкие, коэффициентов много, они разные для разных случаев, тем более с апреля будут меняться, а это значит постоянно надо следить за изменениями, чтобы посчитать по одной формуле, надо сначала просчитать по другой громоздкой формуле и т.п. А можно просто транслировать данные в квик, которые биржа уже сама просчитала.
Комиссии в системе
 
Так же мной обнаружено, что параметр "PREVPRICE" для FutPrice и PriceRub не подходит. Это параметр текущей расчётной цены, он меняется, т.е. он рассчитывается онлайн, а нужны именно расчётные цены клиринга. Подойдёт ли параметр "CLPRICE" для расчётных цен FutPrice и PriceRub? Он совпадает с ценой закрытия, и есть ли это расчётная цена клиринга, как описывает эти параметры мосбиржа?. И подойдёт ли параметр "CLPRICE" для Premium? Ведь "CLPRICE" это котировка клиринга, но соответствует ли она описанию параметра Premium, описанного на мосбирже не понятно, там вроде как речь идёт о теоретической цене, рассчитанной в клиринг. Это тоже самое или нет?
Комиссии в системе
 
Повторно прошу поддержку ответить на вопросы выше. Мне фактически нужно либо, чтобы QUIK транслировал в ТТТ комиссию за регистрацию сделки(бирж.+НКЦ) по ПФИ-инструменту(есть на сайте биржи), либо подскажите как  и где мне взять PriceRub и Premium, чтобы я сам смог посчитать.
Комиссии в системе
 
Прошу ответить поддержку на вопрос ↑↑↑
Комиссии в системе
 
Цитата
Andrey Golik написал:
Alexander, здравствуйте.

Информацию по комиссии можно получить только в таблице "Сделки", соответственно после её совершения. Отдельная трансляция данных параметров не предусмотрена.Извините
1) Извините, а с чем связано, что: "Отдельная трансляция данных параметров не предусмотрена"? Кем конкретно не предусмотрена? Мосбиржей? Или программой QUIK? Какой смысл смотреть комиссию уже после совершения сделок? Оценка комиссий должна происходить ДО совершения сделок, тем более скриптом. Посчитать комиссию брокера не составляет труда. Например для акций общая комиссия считается легко: Vol * 0.0005(0.05% комиссия брокера) + 0.0003(0.03% биржа в случае тейк-заявки). Но как я узнаю комиссию биржи и НКЦ в случае фьючерсов или опционов? Ведь, что самое интересное - эта информация открытая. Она есть на сайте биржи. Меняется после расчёта каждый день и выкладывается биржей для любого ПФИ инструмента. В чём проблема транслировать как отдельный параметр данную комиссию в таблицу QUIK??? Для ПФИ легко считается только комиссия брокера, а вот комиссию биржи + НКЦ не мешало бы транслировать. Эта суммарная комиссия = const, не меняется за сессию, что нельзя её показать? По-моему проблема яйца выведенного не стоит. Реализуйте пожалуйста функционал.
2) На данный момент я пытаюсь сам рассчитать суммарную комиссию, считая отдельно комиссию биржи + комиссию НКЦ по формулам, которые даёт Мосбиржа для рассчёта. Формулы есть на сайте, так же они есть в отдельныйх файлах-документах(отдельно для биржи и отдельно для НКЦ - файлы .docx и .pdf соответственно), но там есть определённые нюансы, которые пока мне не понятны.

Поэтому возникли такие дополнительные вопросы:
а) Значение FutPrice(Расчетная цена фьючерса, определенная в соответствии с Правилами торгов по итогам вечернего Расчетного периода последнего Торгового дня, предшествующего Торговому дню, в течение которого заключается Срочный контракт, в отношении которого осуществляется расчет биржевого сбора) для расчёта комиссий по фьючерсам, я вроде как могу взять из таблицы как параметр "PREVPRICE" для фьючерса. Прав ли я? Это тот параметр или нет?
б) Значение PriceRub(расчетная цена базисного актива, определенная по итогам клиринговой сессии в соответствии с Методикой определения НКО НКЦ (АО) риск-параметров срочного рынка ПАО Московская Биржа) для расчёта комиссий по премиальным опционам, я вроде как могу взять из таблицы как параметр "PREVPRICE" базисного актива(например для SBER_CLT в случае опциона на акцию SBER). Прав ли я? Это тот параметр или нет?
в) Но где мне взять значение Premium(значение Теоретической цены опциона, которое определено по итогам вчерашнего вечернего клиринга. Для опционов, заключенных в первый торговый день значение Premium равно значению Теоретической цены опциона) для расчёта как маржируемых, так и премиальных опционов через Lua-скрипт???

Касаемо вопроса в). В документе tarify-srochnogo-rynka.docx с сайта биржи для маржируемых опционов написано:
"3.5.6. Справочная информация о применимых значениях Расчетных цен фьючерса (FutPrice) и теоретических цен опционов, а также об абсолютных величинах биржевого сбора, рассчитанных в соответствии пунктами 3.1 – 3.2 Тарифов (в российских рублях), публикуется на сайте Биржи не позднее Торгового дня, следующего за датой определения значения Расчетной цены для расчета цены фьючерса (FutPrice) / значения теоретической цены для расчета премии по опциону (Premium)." Надо заметить что в данном документе для премиальных опционов вообще не сказано ничего о том, что Premium где-то публикуется на сайте биржи.
Так вот получается, что Premium я не вижу нигде, ни на сайте биржи в итогах торгов по инструменту(хотя говорят, что публикуют), ни в таблицах QUIK-а. Где мне его брать-то для расчёта?

Какой-то замкнутый круг получается. Помогите решить проблему по любому из вариантов(трансляции комиссии сразу в таблицу QUIK, либо как получить параметр Premium для самостоятельного расчёта), лучше по первому.
Комиссии в системе
 
Здравствуйте. На сайте Московской биржи отображается Сбор за регистрацию сделки(Биржевой сбор и клиринговая комиссия) для опционов и фьючерсов. Просто ищем нужный инструмент и в Параметрах инструмента смотрим эту комиссию. Она меняется каждую новую сессию.  Как я могу на скрипте Lua увидеть эту комиссию? В какой таблице? Какой параметр смотреть?
Ограничение количества открытых котировочных окон
 
Столкнулся с такой же проблемой на ограничение в 200 окон. Брокеру по этому поводу пока не писал. Кто-нибудь обращался уже с подобной проблемой к своему брокеру? Было ли положительное решение вопроса со стороны брокера? Так-то 200 окон маловато. Хотя бы 300, фьючи и акции на них уже почти 200 штук, да в терминале всегда что-то ещё открыто.
Несколько аккаунтов на одном экземпляре QUIK, Использовать QUIK от одного брокера для нескольких аккаунтов этого же брокера
 
Цитата
Andrey Golik написал:
Alexander, здравствуйте!

С нашей стороны ограничения отсутствуют. Технически возможно работать двумя пользователями как и через один экземпляр программы (попеременно), так и с помощью двух экземпляров (в таком случае можно работать даже одновременно). Рекомендуем обратиться к брокеру за дополнительными комментариями.
Хорошо, спасибо, задам вопрос брокеру.
Несколько аккаунтов на одном экземпляре QUIK, Использовать QUIK от одного брокера для нескольких аккаунтов этого же брокера
 
У меня сейчас просто ТРИ QUIK-а от разных брокеров установлены и настроены. Неужели придётся ещё раз устанавливать для брокера, для которого QUIK уже установлен 1 раз?
Несколько аккаунтов на одном экземпляре QUIK, Использовать QUIK от одного брокера для нескольких аккаунтов этого же брокера
 
Здравствуйте. Подскажите пожалуйста можно ли реализовать такую возможность. Установлен QUIK от брокера Открытие. Он настроен и работает как надо. Есть дополнительный аккаунт у этого же брокера Открытие на другого человека. Можно ли настроить QUIK, чтобы он работал хотя бы попеременно то с одним, то с другим аккаунтом? При входе вводим данные(логин, пароль) того аккаунта, который нужен и работаем.

PS: Что-то мне подсказывает, что скорее всего так не получится. Каждый QUIK имеет свой идентификатор и открытый/закрытый ключи в соответствующей папке и поэтому наверное придётся только устанавливать QUIK от Открытия второй раз, но в другую папку и ключи генерировать и у брокера регистрировать, если так можно конечно. Но хотелось бы использовать один экземпляр. Вобщем как сделать работу 2-х разных аккаунтов на 1-м компьютере от одного брокера через 1-н экземпляр программы? Если нельзя так, то можно ли так, как я описал выше с установкой в другую папку QUIK-а от того же брокера? От разных брокеров QUIK-и установлены в разные папки и работают на 1-м компе. А от одного и того же брокера можно так делать?
Пользовательский фильтр и Условное форматирование
 
Цитата
Karina Dmitrieva написал:
Здравствуйте, Alexander.

Какой версии проблемное Рабочее место QUIK?
Также приложите, пожалуйста, скриншот окна настроек фильтра с раскрытым списком условий для фильтра.
Вы знаете, я сам не понял, как так, но абсолютно ничего не меняя через ~ 20-30 минут я опять попытался отформатировать столбец и..... как ни странно всё появилось, появились условия "больше", "меньше". Я точно знаю, что я абсолютно ничего не менял, я пытался найти настройки, от которых может быть зависело то, какие поля в таблице - строковые или числовые, но ничего подобного я не нашёл. Так что, я ничего не изменил нигде, но всё само собой заработало как надо. У меня стоит на 1-м компьютере 3 квика от разных брокеров, я сохраняю вкладки в файл у одного брокера в его квике и загружаю в квике другого брокера, возможно это как-то связано именно с этим. Вобщем сейчас всё работает как положено. Квик Открытия 10.2.3.7, квик Финама 10.3.6.3.
Пользовательский фильтр и Условное форматирование
 
Возникла проблема! Установил квик от Финама. Загрузил в него вкладку, которая ранее была сохранена в квике от Открытия. Вкладка отлично загрузилась и всё отображается так как положено с учётом форматирования столбцов, сделанного в квике Открытия. Далее создаю в квике Финама новую ТТТ и хочу отформатировать столбец "% измен. закр", но с удивлением обнаруживаю, что в условиях форматирования нет "меньше", "больше", а вместо них есть другое, например "начинается с", "заканчивается на" и др. Я перехожу на загруженную мною ТТТ от Открытия в квике Финама и там делаю форматирование того же столбца "% измен. закр" и вижу, что там всё в порядке, т.е. там есть условия "больше", "меньше". Почитал документацию квика по форматированию и фильтрам и там написано, что если значения столбца числовые, то будут "меньше", "больше", а если строковые, то их не будет, а будут другие, что описал выше. Выходит, что ТТТ, сделанная в квике Открытия имела столбцы с числовыми значениями, а ТТТ сделанная в квике Финама имеет строковые значения. Ну и как мне теперь её форматировать если мне нужно "больше", "меньше" ??? Можно конечно попытаться создавать таблицы в квике Открытия, сохранять и загружать их в квик Финама, но это какое-то извращение. Если ли нормальные способ исправить ситуацию?
Обновление пользовательской таблицы/окна
 
Цитата
Владимир написал:
У меня ОДИН ЕДИНСТВЕННЫЙ скрипт, который делает ВСЁ
У Вас скрипт узконаправленного действия - торговля акциями, фьючерсами. У меня скрипты на много чего. Все разом они не запускаются. Когда что-то надо, то запускаю, то что нужно. Я и опционы мониторю и торгую иногда. Даже есть визуализация в отдельных окнах(график, dll строит в отдельных потоках) стратегий набранных прямо с доски опционов(строится самостоятельно). Онлайн показывает график и движение фьючерса на нём отображается. Меняются цены - меняется график с опционной стратегией. Много чего разного есть.
Обновление пользовательской таблицы/окна
 
Цитата
Alexander написал:
Цитата
Владимир написал:
Alexander , Нафига брать данные из таблий КВИКА? ЕДИНСТВЕННЫЙ случай, когда мой скрипт берёт данные из таблицы Квика - клик правой кнопкой, чтобы определить, по какому именно тикеру кликнули, дабы вызвать соответствующее контекстное меню.
Как нафига? Скрипт берёт данные в основном либо из ТТТ, либо из стакана. Из своих собственных таблиц я данные не считываю, я их тута только вывожу.
Не ну вернее я тоже считываю только когда надо узнать куда мышкой щёлкнул для дальнейших действий.
Обновление пользовательской таблицы/окна
 
Цитата
Владимир написал:
Alexander , Нафига брать данные из таблий КВИКА? ЕДИНСТВЕННЫЙ случай, когда мой скрипт берёт данные из таблицы Квика - клик правой кнопкой, чтобы определить, по какому именно тикеру кликнули, дабы вызвать соответствующее контекстное меню.
Как нафига? Скрипт берёт данные в основном либо из ТТТ, либо из стакана. Из своих собственных таблиц я данные не считываю, я их тута только вывожу.
Обновление пользовательской таблицы/окна
 
Цитата
Владимир написал:
Alexander, А таблицы-то здесь каким боком? Это же только справочная информация для юзера. В моём скрипте даже "спящий режим" есть, когда таблица вообще не выводится. И что ещё за "немедленный выход из скрипта"?! Мой работает часами, днями, даже месяцами, и событий там как собак нерезаных. И при чём тут "внутрь main"? Я говорил про ПОТОК main. И уж точно ни одна таблица скрипту нафиг не нужна. Какие ещё могут быть "другие случаи"?
В информационные таблицы вывод информации после рассчётов некоторых данных берущихся из таблиц квика в реальном времени. Мне нужны эти рассчётные данные онлайн для моего анализа. Немедленный выход не из скрипта, а из цикла в той же функции. Выход нужен для робота того же по условию. Если ни одна таблица скрипту во вашему не нужна, то тогда прошу ответить зачем в вашем скрипте есть таблица? Я предпочитаю те же сделки отображать в таблице, не только в файл всё писать. Есть например простой скрипт - щёлкнул по таблице - купил, щёлкнул - продал, сделка отобразилась. У меня разные всякие есть скрипты. Некоторые следят, некоторые позволяют определённую позицию например брать - продавать(покупка базы + продажа фьючерс например за раз), а решение для этого я могу принимать по другой таблице, в ней считается, данные из стакана берутся лучшие, выводится что мне надо. Короче, смотря что мне надо, то и использую. Ваш скрипт единственный он вообще что делает? Акциями торгует? Явно вроде не робот внутридневка.
Обновление пользовательской таблицы/окна
 
Цитата
Владимир написал:
SetCell работает вполне прилично. Раз в две секунды я переписываю всю таблицу, всё происходит довольно быстро.
У меня есть таблицы, там тоже раз в секунду обновление. Но это просто информационные таблицы с кое-какими рассчётами для анализа и там всё работает как положено. Но кое где такие задержки просто не приемлемы. При возникновении события нужен немедленный выход из скрипта без всяких задержек, либо само событие произойдёт как раз во время задержки, что тоже не приемлемо, так как не выйти пока в задержке. Поэтому SetCell прилично работает в информационных таблицах, но совершенно не приемлемо в других случаях. Раз SetCell не даёт гарантии 100%-ного обновления таблицы после его вызова - лично для меня это абсолютно не приемлемая работа данной функции. Не знаю, как повлияет на работу SetCell перенос всего в main(), может и станет работать как надо, но у меня всё построено на вызовах функций и всё переносить внутрь main() для меня лично это не подходит, так как  запутывает всё, никакой читабельности, всё в одной куче - не вариант для меня.
Обновление пользовательской таблицы/окна
 
А ведь ещё, что интересно? Что вызов главного рисовальщика WM_PAINT, который собственно и рисует в буфер окна и после которого апдейт содержимого из него автоматом после EndPaint не приводит к обновлению окна! А вот обработчик WM_SIZE обновляет. Значит он игнорирует изменение буфера окна не понятно по каким причинам. А такие события как изменение размера окна(вызов виндой WM_SIZE) это делают.
Обновление пользовательской таблицы/окна
 
Цитата
Nikolay написал:
Вы говорите что нет проблем, у меня же тот же скрипт на чистом демо квике выдает обратное. Себе я верю больше.
Вот в том и дело, что nikolz думает, что раз у него работает, значит и у всех работать будет. Это не так. От чего там и когда идёт апдейт? Может даже зависит от количества других окон, от выводимой информации в окне и мало ещё от чего. Главное это то, что вызов SetCell абсолютно не гарантирует физический вывод в окно. Только куда-то там внутри окружения чего-то. Гарантировано апдейт всего окна делает обработчик WM_SIZE в оконной процедуре окна, что уже доказано.
Обновление пользовательской таблицы/окна
 
Вобщем я решение предложил: https://forum.quik.ru/messages/forum10/message71748/topic3777/#message71748, а будут ли заниматься?
Обновление пользовательской таблицы/окна
 
Вот с утра скрипты работают. Один не обновлял ячейку, когда в диапазоне, сейчас обновляет нормально. Количество выводимой информации в другие ячейки изменилось, сейчас её стало больше. Как это связано знают только разработчики.
Обновление пользовательской таблицы/окна
 
Но похоже заниматься этим не будут. Хотя интересно. Сам квик иногда просит обновиться. Значит работают. Чего-то там делают, меняют. Что тогда меняют и для чего? Казалось бы вот и надо с каждым новым обновлением исправлять то, что уже накопилось. Но нет. Что тогда обновляют?
Обновление пользовательской таблицы/окна
 
Как SetCell работает это тайна. Но как можно было бы попробовать сделать. SetCell выводит данные сразу, без промежуточного хранения, в нужную часть буфера окна(DrawText, TextOut). Видимая часть окна разбивается на регионы. Если часть буфера окна под вывод данной ячейки в видимой части окна, то InvalidateRect в самом конце SetCell для региона окна для этой ячейки. Как-то так.  
Обновление пользовательской таблицы/окна
 
Цитата
Владимир написал:
Вы можете здесь плакаться в жилетку сколько угодно, но это Ваши, И ТОЛЬКО ВАШИ проблемы!
Получается проблемы мы решаем только общаясь здесь между собой. А как же тогда достучаться до поддержки? Они же сайт этот сделали для чего-то? Чтобы в нём не участвовать?
Обновление пользовательской таблицы/окна
 
Цитата
nikolz написал:
Посмотрите Выше мое сообщение от 29.12.2022 20:34:14 относительно Вашего теста.
Посмотрел. Я же писал, что пробовал варианты с последним параметром в SetCell и Highlight - ом экспериментировал. Толку нет. В некотрых скриптах помогает, в некоторых нет. Это первое, что я делал. Да что толку-то. Ну исправит на раз, на другой раз не поможет. Проблему надо решать на стороне квика. Как я понимаю в реализации SetCell разрабы не хотят после каждого её вызова делать апдейт всего окна, что в принципе логично. Могли бы обновлять регион окна, где ячейка, но видимо и по этому пути идти не хотят или не умеют. Как именно реализована работа SetCell у них я не знаю. Я вижу только одно, что если ты сделал вызов SetCell, то нет никакой гарантии, что вызов функции приведёт к реальному обновлению части окна, ответственного за эту ячейку, не говоря уже про всё окно. В этом случае со стороны разработчиков возможно было бы просто делать апдейт всего окна целиком по таймеру, но они и этого делать не хотят. Они тупо как-то накапливают изменения видимо не от одного SetCell - а, а от нескольких и по какому-то только им известному алгоритму в какой-то только им известный момент делают апдейт и видимо всего окна таблицы сразу. Если бы работа каждого SеCell - а приводила бы только к обновлению региона окна где ячейка, думаю всё работало бы без проблем, и не надо было бы обновлять всё окно. Но для этого нужен алгоритм, которого у них нет. Этот алгоритм у них работает по ихнему и явно не лучшим образом. Тут со стороны разработчиков требуется работать на уровне оконных API виндовс.
Обновление пользовательской таблицы/окна
 
Цитата
Nikolay написал:
Тестовые скрипты уже были предоставлены, поддержка написала "Проблема изучается" и "Будет исправлена"  https://forum.quik.ru/messages/forum10/message49120/topic3777/#message49120 .
Афигеть просто. С 2020 года проблема признана разработчиками и до сих пор не решена! Вот это да! Супер товарищи разработчики! Просто супер! Ну что тут можно ещё сказать? Спасение утопающих - дело рук самих утопающих. Вот крутятся все, как могут. Разработчики хоть бы ответили что-нибудь, а то молчат, как партизаны.
Обновление пользовательской таблицы/окна
 
Далее из-за того, что проблема до сих пор не решена разработчиками квика придётся(хотя не хотелось бы) писать полноценную программы с поиском нужного окна, начиная с окна самого квика, чтобы каждый раз не запускать spy++, искать хэндл, вставлять его в прогу и перекомпилировать прогу с новой константой.
Обновление пользовательской таблицы/окна
 
Цитата
Владимир написал:
Alexander , Проблема В СКРИПТЕ! У всех данные прекрасно обновляются, а у Вас нет. Квик тот же, скрипты - разные. Точка.
Ещё раз! И причём для всех кто читает эту тему. Никакой проблемы в скрипте нет и быть не может! Сейчас я вам всем это покажу. Запустил скрипты. Один из скриптов перешёл в режим, когда ячейка не обновляется. Через spy++ я нашёл HWND окна таблицы. Я не поленился и только что написал программу на С++. Эта программа в цикле тупо отсылает сообщение WM_SIZE прямо в окно с найденным мной HWND c периодичностью 50 мс. И всё. Как только запускаешь программу, то таблица начинает обновляться сразу же и отображать ячейку с last синхронно с  ТТТ !!!!!!!!!! Останавливаешь прогу и перестаёт обновляться! Запускаешь - начинает! Всё проблема найдена! Как я и писал выше всё дело в обновлении окна. Оно КРИВО реализовано в квике! Криво! Для обновления того, что должен делать квик мне пришлось это делать из вне. Ну не абсурд ли это? Я должен извращаться и обновлять таблицу за квик? Бред какой-то. Неужели нельзя решить этот элементарный вопрос? Вот код с программы:

while (true) { HWND hWndPar = (HWND)0x0005006E;
SendMessage(hWndPar, WM_SIZE, 0, 0);
UpdateWindow(hWndPar);//Контрольный
Sleep(50);
};

При отсылке WM_PAINT не обновляется. Только WM_SIZE. Ну можно ещё от мыши воткнуть, будет наверняка работать. UpdateWindow(hWndPar) можно убрать, он WM_PAINT шлёт.
Так что вот и всё. И после этого кто-то скажет, что проблема в скрипте? Надо как-то по особенному писать скрипт? Скрипт работатет как надо. Пусть разрабы решают и устраняют свой косяк.
Обновление пользовательской таблицы/окна
 
Цитата
nikolz написал:
если хотите выложите скрипт я могу его запустить на демо сервере и сказать Вам конкретно.
Я не буду скрипт отсылать. В этом необходимости нет. Проблема ясна. И она в квике. Проблема в обновлении окна на стороне квика!
Обновление пользовательской таблицы/окна
 
То, что проблема не в скрипте это же вообще элементарно понятно! Скрипт работает. Я в ТТТ вижу текущее значение last. В таблице в ячейке значение не равно last, там старое какое-то значение. Я бац - ткнул мышкой в табличку и значение поменялось!!! И стало равно значению в ТТТ. Скрипт работает!!! Далее в таблице это обновлённое значение так и висит. А last опять поменялся в ТТТ, а в таблице нет. Опять щёлк в таблицу и оооо, ура!!!, опять значение поменялось и стало равно как в ТТТ. О чёт это всё говорит? Что скрипт нормально себе работает, нормально всё считывает и отправляет в ячейку. Но сама таблица не обновляется. Скрипт за обновление таблицы отвечает только на уровне SetCell, а вот за реальное обновление уже отвечает сам квик. И делает он это криво! Еще раз. Как и при каких обстоятельствах происходит обновление таблицы на уровне оконной процедуры в квике, когда мы не тыкаем таблицу и она просто на экране? Как? Когда в буферах актуальные данные от SetCell? С какой периодичностью они  в WM_PAINT реально выводятся в рабочее окно таблицы?
Обновление пользовательской таблицы/окна
 
Я ранее уже как-то писал и отправлял сообщение прямо в окно. Но я не помню, что именно. Может я слал сразу WM_PAINT или UpdateWindow делал. Тогда это не помогло и забросил это всё. Сейчас я подумал по другому, что надо слать не это, а именно то, от чего срабатывает, т.е. WM_SIZE. Просто может быть, что когда WM_SIZE, то разрабы туда воткнули обновление буферов окна из того, куда сначала SetCell шлёт, а потом уже и InvalidateRect. А когда напрямую WM_PAINT, то обновление окна идёт, но в буферах не те данные ещё. Короче был бы у меня код, что у разрабов, я бы сделал так как надо!
Обновление пользовательской таблицы/окна
 
Цитата
nikolz написал:
Гадать нет смысла, а запустить у себя Ваш скрипт нет возможности.Но ,без обид,уверен, что ошибка Ваша, а не КВИКА.
Сто процентов не у меня! Какая нахрен ошибка? Один и тот же скрипт с утра и с вечера по разному заработал! В скрипте ничего не меняется. Один и тот же код, один и тот же цикл - то выводит, то не выводит. Я скажу так. В курсе вообще как и когда обновление окна происходит надеюсь. WM_PAINT это его дело! Так вот при при щелчке мышки в окне, WM_SIZE срабатывает, его разрабы написали, что он обрабатывает его, при этом все данные от SetCell попадают туда, куда надо - в буфер, а далее InvalidateRect или UpdateWindow, что вызывает WM_PAINT, где и перерисовывается таблица. Тож самое при щелчке мышкой WM_LBUTTONDOWN только срабатывает. Так вот а когда и как срабатывает WM_PAINT для окна, когда мы не щёлкаем, не меняем размер окна, когда окно просто на экране и ничего с ним не делаем? Вот это пусть разрабы и ответят. Об этом я их уже сколько прошу? Нет ответа никакого. Думаю вот если проблема не закроется - писать прогу, чтобы слала в окно сообщение WM_SIZE из вне с определённой переодичностью. Т.е. насильно извне заставить обработать WM_PAINT/ Может так и заработает, но при условии, что все данные от SetCell уже есть в нужном буфере. А если они не в буфере из которого идёт обновление таблицы, а "болтаются" неизвестно где, мало ли как у них там это реализовано?, промежуточные буфера, очереди и прочее, тогда ничего и так не получится!
Обновление пользовательской таблицы/окна
 
Цитата
Nikolay написал:
Пять аргументов передается если тип колонки таблицы число.Вы я  приводил простейший пример, приводящий к замедлению обновления таблицы  для светлой темы терминала. На темной теме тот же скрипт работает  плавно.Уже давно добавил Highlite при выводе в светлой теме, т.к. ждать решения разработчиков долго. Ну и отказался от частых обновлений таблиц. Затратное это дело в терминале.
Вот тоо, что при разных темах квика таблицы по разному обновляются вам ни о чём не говорит? При чём здесь скрипт? В том и дело, что ни причём! А вот тема причём! Какого хрена смена темы влияет на результат работы вывода скрипта? Вот сюда надо копать, а не искать проблемы в скрипте! Я и Hightlite пробовал, иногда помогает, но всё тоже самое, добавишь код или изменишь код - перестаёт. В одном скрипте Highlite поставил удачно - помогло, это в тот где много выводит и считает. Сейчас помогает через раз. Бывает  в sleep() секунды ставишь и ничего не обновляет, пока не ткнёшь в таблицу. Ну и причём здесь скрипт? А отказываться от частых обновлений почему должны? Таблицы квика обновляются все как положено и даже все стаканы как угорелые меняются.
Обновление пользовательской таблицы/окна
 
Цитата
Владимир написал:
Весь этот ужас вроде:SetCell(tbl.t_id, LevNum + 1,  FUT,  tostring(price), 1)я даже смотреть не хочу. Навскидку: вот мои пара операторов для прорисовки таблицы:SetColor(T,a[0][9],-1,k,l,-1,-1);SetCell(T,a[0][9],0,d(i));То есть у меня в SetCell четыре аргумента, а здесь их пять.
В чём ужас? В 5-м параметре? Я могу его убрать. Это ничего не меняет! Скинул то, что было на данный момент. Я и ранее и сейчас как только не пробовал. И стринг в таблице и 4 параметра и доубл таблица и 5 параметров, и стринг таблица и 5 параметром, причём 5-й тоже число, что и 4-й, и не то, и наоборот доубл таблица и 4 параметра. Всё это ничего не меняет абсолютно. То обновляет, то нет. При замене может начать обновлять или наоборот если обновляло  - перестать. Иной раз скрипт работает не обновляет. добвил коду или что-то чуть изменил, запускаешь, всё начало обновлять.
Обновление пользовательской таблицы/окна
 
Цитата
nikolz написал:
Попробуйте убрать его.
Я не могу убрать цикл. При попадании в диапазон цен я вывожу текущий last для информации и показываю его напротив текущего диапазона. При этом так же при измениении last считаются и финрезультаты по диапазонам и тоже выводятся в нужные ячейки. А при выходе за границы текущего, вот тут уже начинаются действия(buy/sell - пока в тесте). Короче без цикла никак. Да и вообще весь скрипт - это сплошной цикл. Если вне всех диапазонов, то цикл while в main() и тоже вывод в ячейки, при попадании в новый диапазон - опять вызов функции и крутимся там с выводом до тех пор, пока из него не выйдем.
Обновление пользовательской таблицы/окна
 
Цитата
nikolz написал:
Проблема в Вашем скрипте .  Возможно у Вас внутренний цикл блокирует обновление таблицы.
Проблема не в моём скрипте абсолютно! Ничего нигде не блокируется. Тупо чтение last, тупо вывод, какое блокирование. Скажу больше. Вечером накидал простейший скрипт. В нём вообще ничего нет, кроме чтения last и вывод в ячейку. Таблицы. Всё выводит просто идеально. Даже без всяких задержек sleep(). Я пытался сделать так, чтобы он перестал выводить, но что я только не делал, и  ячейки добавлял и сетколоры и циклы вставлял дополнительные, короче много чего. Мне так и не удалось сделать так, чтобы скрипт перестал обновлять ячейку. Всё работала как часы. В SetColor использовал 4 параметра, не 5, так как в в таблице стринг поля. Потом я добавил в SetCell последний числовой 5-й парметр - перестало обновляться. Сделал всё так же в своих скриптах. И у меня после этого стало всё наоборот. Тот диапазон, который не обновлялся - стал обновляться, а тот который обновлялся - перестал обновляться. Делаешь наоборот - меняется. Но даже когда начинает обновляться допустим в одном диапазоне, добавляешь код в скрипт, и даже не в цикле, и всё ломается - перестаёт обновляться. Хоть как ты SetCell используй. Ещё раз - от скрипта не зависит, зависит от времени выполнения участков кода.
Обновление пользовательской таблицы/окна
 
Цитата
nikolz написал:
Выше я выкладывал скрипт, который тестировал. И все там обновляется.
С утра запущены 4 скрипта абсолютно одинаковые. Выставлены разные переменные просто. Все 4 скрипта сейчас идеально всё выводят в ячейку и показывают last синхронно с ТТТ. При этом код сейчас крутится в вышеприведённом цикле(так как last в определённом диапазоне). При выходе из этого диапазона идёт выход из цикла и из функции и попадаем в main() в цикл while(так как уже в другом диапазоне last). Там во while тоже идёт вывод в ячейку last, но только уже в другую и нихрена уже ничего не выводит! Щёлкнишь мышкой по строке - данные обновятся. Или размер окна дёрнешь - обновятся. Опять попадает last в нужный диапазон, опять вызов функции и в repeat цикл и опять всё обновляется. Вчера было всё НАОБОРОТ!!! while обновлял ячейку, repeat нет.
Обновление пользовательской таблицы/окна
 
Цитата
nikolz написал:
Если желаете решение то выкладывайте пример.
Да какой пример? Пример огромный, как я его сюда весь выложу? Я же говорю, всё элементарно. Цикл. В цикле читается ТТТ, поле last выводится в одну и ту же ячейку. Один и тот же скрипт может то вывожить, то не выводить, с одной задержкой к конце цикла выводить, с другой задержкой не выводить. Вот сейчас 4 ОДИНАКОВЫХ скрипта работают, разница только а начальных переменных. И всё. Один обновляет ячейку, 3 нет. Тот, что обновляет при выводе в другую ячейку перестаёт выводит. Меняя задержки можно добиться вывода, но стоит что-то добавить или убрать(код) из цикла и опять может либо выводить, либо не выводить. Вот ниже часть, которая сейчас не выводит:
   repeat
        price = tryInt(getParamEx(ClassCode, SecCode, "LAST").param_value)
        OfferPrice, BidPrice = getPrice()
        if not OfferPrice  then
             is_run = false
             return
        end

        if OfferPrice > Max or BidPrice < Min then
             break
        end

       if price ~= oprice then
             ---  ячейку для вывода текущего значения фьючерса в диапазоне устанавливаем значением фьючерса
             SetCell(tbl.t_id, LevNum + 1,  FUT,  tostring(price), 1)
             local finres = getLevelsSum() + LevelsFinRes(price) + getCloseSum()
             if finres ~= 0 then
                  SetCell(tbl.t_id, LevelsCount + 3,  FRA,  tostring(finres), 1) --- +/- финансовый результат общий
             end
        end
---         sleep(1000)
        oprice = price
   until is_run == false

Этот цикл внутри функции, которая внутри while, который  в main()
Когда внутри этого цикла крутится - ничего сейчас не обновляется. Бывает я даже в другую часть скрипта код добавлю или убавлю и тогда начинает когда внутри этого цикла выводить или наоборот перестаёт выводить если сначала выводило.
Когда из этого цикла вывожу в основной while, то там тоже вывод в ячейку, сейчас он выводит там, а бывает наоборот всё меняется местами, во while перестаёт выводить
Короче это от скрипта вообще не зависит, это зависит от кода, сколько его и за сколько времени какая часть кода выполняется. Если это время как-то согласовывается со временем обновления таблицы у квика, то обновляется, если не попадает в какой-то диапазон, то всё.
У меня многие таблицы есть большие, обновляются без проблем, но там много выводов и в разные ячейки и всё это в перемешку с вызовами функций.
Обновление пользовательской таблицы/окна
 
В очередной раз поднимаю тему. Прошу ответить разработчиков почему до сих пор ничего не сделано для решения данной проблемы. Ещё раз. Есть таблица. Производим обновление ячейки или ячеек в цикле. Данные берутся с ТТТ(в данном случае цена последней сделки) и выводятся в таблицу. В ТТТ данные меняются как положено. Никакого обновления ячейки в таблице на экране монитора НЕ ПРОИСХОДИТ!!! Бывает, когда добавишь или убавишь код в скрипт обновляться начинает. Или поставишь задержку в цикле, подобранную начиная с 10 миллисекунд и до тех пор пока не начнёт обновляться синхронно с ТТТ. Потом запускаешь скрипт повторно и уже опять ничего не обновляется. Меняешь задержки, бывает и до секунды ставишь и ничего не обновляется. А бывает вообще никаких задержек не ставишь и всё обновляется. Скрипт может быть любой, не важно какой. Везде так. Цикл. Вывод и всё. Для того, чтобы точно обновилась таблица надо либо изменить размер таблицы вручную, либо ткнуть на строку в таблице, но только на любую новую строку, а не на ту, что уже текущая. Вот и что делать предлагаете? Без конца сидеть и менять размер окна таблицы? Или без конца тыкать по строкам? Ну это же бред какой-то!!! Все таблицы квика нормально обновляются. Что там не так у вас работает? Или напишите хоть принцип как и когда при каких условиях у вас происходит обновление таблиц пользователя. Ну в конце-то концов проблему надо же как-то решать. Задолбало уже просто. Пишешь, пишешь и ничего не обновляется. То обновляется то нет. Проблема на стороне квика и её решить можно 100%.
getParamEx
 
Цитата
БорисД написал:
Я уже писал что этот сайт при отсутствии разработчиков  ( а их здесь нет от слова совсем )  нужного уровня  необходимо перевести на другую площадку .... ну например на  phpBB  а они глупцы даже этого понять не могут. ...............  Таких  программистов нужно увольнять пачками и не принимать  на работу от слова " не при каких условиях " .....................    к сожалению они работают здесь и на этом сайте и поэтому мы получаем от них ответы типа : ............................  ну вообщем ответы мы от них уже все читали и не буду их здесь вставлять.  
Тут дело скорее всего не в разработчиках программы квик. Разработчики программу написали, она используется и брокерами и клиентами. Разработчики думаю своё дело знают. А вот организационные вопросы это уже не дело программистов, а дело других людей кто за эту организацию отвечает. И вот организационная работа оставляет желать лучшего. По хорошему руководству компании надо бы всерьёз задуматься над этим вопросом. Поувольнять тех кто за это ответственен и нанять толковых людей. Ну это же не дело совсем! Программа такого уровня и так обслуживается! Поразвели одних менеджеров за столько лет, а толку полный ноль.
getParamEx
 
Цитата
paluke написал:
https://forum.quik.ru/forum10/topic5558/  четыре года прошло...
Вон оно как оказывается))) Оказывается всё уже обсуждалось ранее!!! И я тут пытаюсь решить тоже самое что и тогда решали. И с тех пор техподдержка ничего не сделала? Вот если бы разрабы закрыли вопрос по этой теме: https://forum.quik.ru/forum10/topic5558/, то и не пришлось бы эту тему здесь поднимать заново!!! Одни и те же вопросы поднимаются через ГОДЫ!!! Это как вообще такое, а?
Лимиты
 
Попробуем раскачать тему. Я вот как-то спрашивал брокера Открытие про всякие там ГО на разные вещи. Среди разных ответов брокера была такая фраза, что типа у опционов БГОНП будет больше чем БГОП. Ну вроде как логично. Раз непокрытая, продаём типа, значит и больше БГОНП. Но потом тогда заметил, что это не так. БГОП > БГОНП. Вот только что просмотрел ряд опционов, причём и на покупках и на продажах у них у всех БГОП > БГОНП.
Тут встаёт вопрос, что считается за покрытую позицию, а что за непокрытую и когда какое ГО применяется в каких ситуациях? Толи непокрытая это чисто шорт-продажа опциона, но тогда почему у опциона, который покупаем есть поле БГОНП? Мы же не продаём, а покупаем, а поле БГОНП есть. Или покрытая это когда например продали колл и купили фьючерс? Но тогда БГОП опциона должно быть меньше БГОНП, а оно почему-то больше. Почему? Или это суммарное ГО на позицию опцион + фьючерс? И если так, то почему БГОП это поле относится к опциону раз это суммарная штука?
Страницы: 1 2 3 4 5 След.
Наверх