Старатель написал: При добавлении / удалении индикатора возникают ошибки:ЦитатаFunction OnChangeSettings: ACCESS VIOLATION at address 000007FC524B89CCACCESS VIOLATION at address 000007FC524B89CCЧто не так?
Проблема изучается. Постараемся в ближайшее время дать ответ.
Цитата
TGB написал: Зачем двойная последовательность вызов функции OnCalculate(index)?:1) index: 1, 2, 3 ….2) index: 1, 2, 3 ….И это, похоже, происходит в любых индикаторах.Добавляйте в любой график, меняете, например, толщину линии и убеждайтесь.
Проблема изучается. Постараемся в ближайшее время дать ответ.
Kolossi написал: 1. Доработать функцию AddLabel возможностью выставлять метку на график в соответствии с параметром "тикер инструмента". При отсутствии параметра пусть лепит в текущее окно.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Цитата
Kolossi написал: 2. Дать возможность позиционировать средствами qlua указатель в таблице текущих торгов на нужный тикер с тем что бы текущий график переключился на нужный инструмент. Тут наверное придется создать еще функцию получения текущей позиции укозателя.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Это нормальная ситуация. Объем в таблице заявок рассчитывает торговая система. Расчет производится по параметру минимально/максимально возможной цене по инструменту в зависимости от направления операции. Объём в таблице сделок - это тот объём, что получился по факту совершения сделки.
Forbius написал: Вопрос: а на более свежих релизах десктопного клиента Quik 8 и 9 поддерживается или нет?
Да, Qpile-скрипты должны работать во всех версиях терминала.
Цитата
Forbius написал: На 9.5. попробовал, не работает. Может нужно специально что то донастроить, не знаю.
Уточните, пожалуйста, при работе скрипта возникают какие-либо ошибки, если это так, то просьба прислать скриншот ошибки, также просьба прислать код скрипта.
Заметим, что QPILE признан устаревшим и более не развивается. Рекомендуем использовать QLUA.
Касательно нагрузки на GPU, проверьте останется ли проблема в случае, если: - Запустить программу без файла настроек (по умолчанию, info.wnd), перенеся его из папки с программой в другое место, далее создать необходимые для Вас графики и таблицы. - Временно отключить скрипты. - Поменять тему оформления на стандартную.
Также существует вероятность, что описанная Вами проблема может возникать при исчерпании программой GDI-ресурсов, рекомендуем Вам проделать следующее: 1) откройте диспетчер задач, в нем откройте вкладку "Подробности", кликните на области заголовков столбцов правой клавишей мыши и выберите команду "Выбрать столбцы". В открывшемся диалоге выберите параметры "объекты User" и "объекты GDI". 2) Запустите терминал и в процессе работы наблюдайте в диспетчере задач за данными параметрами для процесса info.exe. Если значение любого из этих двух параметров начнет расти и приближаться к значению 10000, то наша гипотеза верна, в этом случае нужно уменьшить кол-во открытых графиков.
Исполненные заявки не появляются в таблице сделок, Сделал торгового робота для quik на языке lua. Исполнилось 6 заявок, 3 на покупку и 3 на продажу, но в таблице сделок они не появились
В таблице сделок Вы можете не увидеть сделки в том случае, если у Вас в панели инструментов стоит настройка "Подставлять код клиента из фильтра" (если указан код, то выберите параметр "Не указан", см. скриншот). Если сделок по-прежнему не видно, то посмотрите были ли совершены или отвергнуты транзакции в Таблице транзакций (F7 - Прочее - Таблица транзакций). Также просьба прислать скриншот Вашего рабочего места (с открытыми таблицами по сделкам и заявкам).
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Функция TABLE getPortfolioInfoEx (STRING firm_id, STRING client_code, NUMBER limit_kind) предназначена для получения значений параметров таблицы «Клиентский портфель», соответствующих идентификатору участника торгов «firmid», коду клиента «client_code» и сроку расчётов «limit_kind», подробнее в Руководстве пользователя Qlua / Функции взаимодействия скрипта Lua и Рабочего места QUIK / getPortfolioInfoEx.
Старатель написал: А нельзя добавить меню "Сохранить вкладку без фильтров"?
На данный момент такой возможности нет, чтобы сохранить настройки/вкладки без информации по счетам - необходимо предварительно убрать их из настроек по алгоритму выше. Если Вас интересует функционал в виде одной кнопки для сохранения вкладки без счетов/торговых кодов, но чтобы текущие настройки это не затрагивало, то можем зарегистрировать пожелание. Регистрируем?
Действительно, на данный момент так реализовано изменение шага сетки. Тем не менее, Ваша мысль понятна, и мы зарегистрировали пожелание на добавление опционально изменение этого поведения в соответствии с Вашим описанием.
Подобные ситуации в подавляющем большинстве случаев являются следствием какого-либо сбоя на стороне брокера. Рекомендуем обратиться к брокеру, если он не сможет помочь, инициируйте его обращение к нам.
1. По умолчанию, для клиентского места количество стаканов ограничено 200 шт. Настройки выполняются на стороне серверного ПО QUIK. В решении вопроса об увеличении количества стаканов сможет помочь непосредственно Ваш брокер. Если вопрос скорости обработки стаканов не критичен, то Вы можете поочередно подписываться и отписываться на группы стаканов, например в цикле. 2. Имеющимися средствами QUIK экспортировать по DDE через LUA нельзя. Возможно существуют сторонние решения. Также нет возможности выводить данные из терминала по DDE из таблицы созданной с помощью Qlua. Возможность сохранять данные в формат csv файла есть и она реализуется стандартными средствами Lua.
Комментарий можно указать в поле CLIENT_CODE - это 20-ти символьное составное поле, которое может содержать код клиента и текстовый комментарий с тем же разделителем, что и при вводе заявки вручную (например, CLIENT_CODE = "10190//Комментарий"). При вызове функций OnTransactReply и OnOrder комментарий можно получить с помощью параметра brokerref.
Для получения значений параметров таблицы "Клиентский портфель" существуют функции getPortfolioInfo и getPortfolioInfoEx, подробнее в Руководстве пользователя Qlua -> Функции взаимодействия скрипта Lua и Рабочего места QUIK -> getPortfolioInfo/ getPortfolioInfoEx . Например, money = getPortfolioInfo(firm_id, client_code) message(tostring(money.in_assets))
Однако параметры данной таблицы формируются на основе позиций клиента, которые отражены в соответствующих таблицах терминала, к которым в свою очередь можно получить доступ средствами QLUA. Рекомендуем почитать документацию. Подробное описание полей Таблицы "Состояние счёта" находится в Руководство пользователя QUIK v.9.7zip, 14.6 МБ -> Раздел 3. Просмотр информации -> 3.5 Состояние счета.
Расчёт объёма ГО выполняется с учётом отклонения указанной цены от текущей котировки клиринга по инструменту. Величины "ГО покупателя", "ГО продавца" будут использоваться только в случае, если заявка вводится по котировке клиринга(см. скриншот), в противных случаях расчёт будет другим.
Если Вы вводите заявку по котировке клиринга и значения отличаются, то просьба прислать скриншот с окном ввода заявки и Таблицы текущих торгов, где будут видны данные значения.
В библиотеке QLUA функции для получения данных параметров нет. Вы можете рассчитать их самостоятельно, либо использовать уже готовые решения, если такие удастся найти.
Евгений написал: Передайте пожалуйста разработчикам, это очередная недоработка.Тут надо сделать какие то варианты, создавать временный файл внд если он так необходим или сохранять вкладки без привязки к файлу внд, что более правильно и логично
Ваше письмо получено, проблема изучается. Постараемся в ближайшее время дать ответ.
Цитата
Евгений написал: Но что интересно )), откуда эта информация появляется в файле внд, который сохранил перед сохранением вкладок, он ведь должен быть вобще чистым без каких либо счетов. Так что при сохранении внд квик еще грузит информацию из каких то файлов где она сохранена.
В wnd- и tab- файлах Ваши персональные данные (счета/коды клиента) попадают в случае, если в таблица используются фильтры по ним (пользовательские или глобальные). Чтобы гарантировано очистить эти фильтры в файле настроек и убрать информацию по Вашим счетам надо сделать следующее:
0) Отключитесь от сервера QUIK 1) Нажмите комбинацию клавиш CTRL+G 2) В открывшемся окне поставьте галочку "Применить к окнам на всех закладках" 3) В этом же окне во всех всплывающих списках "Фильтр фирм", "Фильтр счетов депо" и "Фильтр клиентов" выберите "СНЯТЬ". Напротив Фильтр клиентов нажмите на кнопку с троеточием и перенесите код из Выбранного столбца в Доступный, нажмите Да и нажмите "Применить" 4) Войдите в меню - (F9) Торговля> Настройка счетов> Очистить список выбранных счетов 5) Выполните команду Система/Заказ данных/Перезаказать данные. Отметьте Торговые данные и Локальные справочники. 6) Подключитесь к серверу.
После этого в wnd- и tab- файлах данных по счетам и торговым кодам не будет. Однако после подключения к серверу QUIK терминал вновь их запросит и сохранит в локальные хранилища (файлы с расширением *.dat).
Nikita написал: Подскажите если название функции или где взять пример чтобы робот докупался ,если к примеру цена идет не туда то покупает еще
Такой функции нет.
К сожалению, пример привести не можем, но Вы можете реализовать данную логику самостоятельно, для отправки транзакций используется функция sendTransaction, подробнее в Руководстве пользователя Qlua, также можно поискать примеры на форуме. Проверить своего робота Вы можете на нашем демо-сервере.
Serge написал: Есть таблица текущих торгов, в которой отображаются только некоторые бумаги (допустим 20), другие просто не нужны.(Бумаги добавлены в табло мануально через окошко редактирования таблицы)Требуется вывести данные из этой таблицы в файл. Как это сделать на QLua?
Вы можете получать значения таблицы "Текущие торги" с помощью функций getParamEx, getParamEx2, далее записывать полученные значения в файл. Подробнее Руководство пользователя Qlua/ Функции взаимодействия скрипта Lua и Рабочего места QUIK/ Функции получения значений таблицы «Текущие торги».
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Денис написал: Я хочу получить список таких классов. Возможно это можно сделать каким-то другим путем?
Такой возможности нет.
Рекомендуем явно указывать классы. Список кодов инструментов для класса можно получить с помощью функции getClassSecurities, далее можно получить строки по всем инструментам с помощью getBuySellInfo.
Извиняемся за задержку с ответом. Действительно функция getBuySellInfo предназначена для получения параметров таблицы «Купить/Продать». Правильно ли мы понимаем, что Вы говорите о том, что возвращаемые значения функции getBuySellInfo отличаются от значений в таблице Купить/Продать, если да, то какие именно?
Цитата
nikolz написал: QUIK для всех акций считает как не маржинальные
Определить, как будет считать Quik можно по столбцу Тип, где указано является ли инструмент маржинальным или нет.
Цитата
nikolz написал: формула очевидно учитывает маржинальные
Руководство пользователя Qlua -> Структуры данных -> Позиции по инструментам:
Цитата
Срок расчётов. Возможные значения: limit_kind NUMBER -- положительные целые числа, начиная с «0», соответствующие срокам расчётов из таблицы «Позиции по инструментам»: «0» – T0, «1» – T1, «2» – T2 и т.д.; -- отрицательные целые числа – технологические лимиты (используются для внутренней работы системы QUIK)
В Вашем примере OnDepoLimit получает технологический лимит (limit_kind=-3), технологические лимиты используются для внутренней работы системы QUIK. Их самих, как и их значения, можно (и нужно) полностью игнорировать.
КВИК ПОД ДРУГУЮ ОПЕРАЦИОННУЮ СИСТЕМУ ОТЛИЧНУЮ ОТ Windows, В связи с последними известными события Microsoft уходит из РФ а в случае обострения вообще блокнуть могут через обновления
На данном историческом этапе рабочее место QUIK разрабатывается и тестируется только для Windows ОС. Информации по возможности разработки версий на иные ОС, на текущий момент, к сожалению, нет. Запуск рабочего места QUIK на отличных от Windows-системах возможен с использованием эмуляторов или виртуальных машин с Windows. Инструкции по установке рабочего места на компьютеры OC Linux, macOS находятся по ссылке https://arqatech.com/ru/support/files/ .
Смотрите сообщение выше, там есть ответ на Ваш вопрос:
Цитата
Egor Zaytsev написал: Добрый день. Как уже сказали выше, данные едут разными потоками. Ограничения по фьючерсам едут с FORTS и не гарантии, что сразу после прихода сделки ограничения обновятся.
Возможно вам подойдет вариант проверять totalnet после вызова OnFuturesClientHolding()
Поэтому рекомендуем воспользоваться функцией OnFuturesClientHolding().
С помощью DDE у Вас есть возможность получать тиковые данные из Таблицы обезличенных сделок, далее по ним формировать свечи.
Также Вы можете: - Cохранить данные свечей в виде текстового файла, для этого нужно нажать правой кнопкой мыши по легенде графика и выбрать "Сохранить данные в файл". - Использовать Qlua, подробнее Руководство пользователя QLua/ Функции для работы с графиками/ CreateDataSource.
Не получилось воспроизвести проблему, просьба прислать нам на quiksupport@arqatech.com архив Вашего рабочего места QUIK без ключей pubring.txk и secring.txk, если они там присутствуют и скрипты индикаторов на которых наблюдается проблема. Дополнительная просьба в письме укажите, пожалуйста, ссылку на данную ветвь форума.
Цитата
Евгений написал: либо это как то связано с шаблонами окон, может когда то я сохранял графики с этим индикатором и в шаблоне они остались, хотя сейчас я им не пользуюсь, вобщем пока вопросов больше чем ответов
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Просьба описать более подробно проблему, пришлите, пожалуйста, код скрипта, скриншот индикатора, также стоит отметить
Цитата
Евгений написал: при загрузке на график этого индикатора вместо TYPE_BAR, появляются просто линии
константы TYPE_BAR не существует. Если у Вас в Settings "Type = TYPE_BAR", то поле Type инициализируется значением по умолчанию, то есть на индикаторе будет отображаться линия (TYPE_LINE). Если в таблице settings будет указан type=TYPET_BAR, то при добавлении индикатора, линия будет типа TYPET_BAR.
Цитата
Евгений написал: При загрузке этого же индикатора но с другим названием, все ок
Правильно ли мы понимаем, что два идентичных индикатора, но с разным названием, при добавлении на графики, отображают разный результат?
Насколько нам известно начиная с MySQL 5.6 типы CHAR и VARCHAR по умолчанию используют кодировку UTF-8. Просьба проверить в какой кодировке колонки с типами CHAR и VARCHAR, если utf8, то просьба сменить на cp1251.
Цитата
Paul написал: и еще проблема. quik работает все время. и с утра наблюдаю такую картину отваливается соединение
Действительно, в Quik имеется такая особенность функционала. Можем зарегистрировать пожелание на то, чтобы терминал пытался переподключиться к СУБД. Регистрируем?
Данный функционал предназначен для отправки транзакций, подготовленных программой клиента. Библиотека содержит в себе функции, описание которых приводится ниже, при вызове которых можно: 1. Установить или разорвать связь между терминалом QUIK и библиотекой Trans2QUIK.dll. 2. Проверить наличие соединения между терминалом QUIK и библиотекой Trans2QUIK.dll и между терминалом QUIK и сервером QUIK. 3. Отправить транзакцию. 4. Получить информацию по заявкам и сделкам.
Получение каких-бы то ни было параметров инструментов и торговых данных (кроме заявок и сделок) - не является задачей данной библиотеки. Для того, чтобы передать какие-либо параметры Вы можете использовать выгрузку данных по ODBC/DDE и из соответствующих таблиц передавать данные в своё решение с trans2quik.
Альтернативное решение - использовать Qlua, что, как ожидается, упростит решение задачи.
Игорь написал: Господа разработчики: поделитесь планами создания нормально работающего дистрибьютива QUIK x64 под Linux для обычных пользователей? Данная тема сейчас очень актуальна в связи с санкциями. Например разработать программу QUIK x64 в docker-контейнере для пользователей которые работают под linux, тем более что многие предпринимает попытки перехода на linux? Ни актуальных инструкций, ни каких либо телодвижений в эту сторону от вас не наблюдается? Давайте пообщаемся на тему современных решений для пользователя? А то как-то ваше молчание на эти темы совсем не правильное.
На данном историческом этапе рабочее место QUIK разрабатывается и тестируется только для Windows ОС. Информации по возможности разработки версий на иные ОС, на текущий момент, к сожалению, нет. Запуск рабочего места QUIK на отличных от Windows-системах возможен только с использованием эмуляторов или виртуальных машин с Windows. Инструкция по установке рабочего места на компьютеры OC Linux находится по ссылке https://arqatech.com/upload/iblock/9c7/quik_to_linux_instruction.pdf.
Цитата
Игорь написал: Есть win x64 (QUIK) приложение которое кое-как с ошибками запускается на debian под wine (альтернативы под linux этому приложению нет)
Уточните, пожалуйста, какие именно возникают ошибки?
Цитата
Игорь написал: Вопрос если: win x64 (QUIK) приложение которое запускается на debian под wine запустить в docker-контейнере, БД тоже запустить в docker-контейнере, то как быть с ODBC-драйвером?
Насколько нам известно контейнеризация приложений Windows с графическим интерфейсом в настоящее время не поддерживается.
Sergey Denegin написал: Но совсем не понятно, где найти полный список значений param_nameКак это сделать?
Многие параметры приведены в Руководстве пользователя Quik/Раздел 8. Алгоритмический язык QPILE/Функции для получения значений Таблицы текущих торгов/Значения параметров функций.
К сожалению, привести полный список не представляется возможным, т.к. параметры таблицы текущих торгов варьируются в зависимости от класса и транслирующей площадки. Поэтому рекомендуем пользоваться экспортом по DDE с включенной опцией "Формальные заголовки". Подробнее Руководство пользователя Quik/Раздел 6. Совместная работа с другими приложениями/Экспорт данных через DDE-сервер.
Определить можно с помощью параметров "Максимально/Минимально возможная цена"(Макс.возм.цена, Мин.возм.цена), в скрипте наименование параметров PRICEMAX и PRICEMIN, для того, чтобы посмотреть наименование параметра можно воспользоваться экспортом по DDE с включенной опцией "Формальные заголовки". Обращаем внимание, что трансляция этих параметров зависит от настроек на стороне брокера, если у Вас таких параметров нет, то Вам необходимо обратиться к брокеру.
Виктор написал: Я уже встречал в интернете такую запись, но не смог найти её в документации. Подскажите, пожалуйста, в каком документе она описана?
В справке QUIK Раздел 6. Совместная работа с другими приложениями/Импорт транзакций/Формат .tri-файла с параметрами транзакций. Описан формат и примеры, которые Вы можете использовать при подаче транзакций. Поля, которые не описаны, можно получить в универсальном формате. Например, поместить транзакцию в карман транзакций, сохранить ее в tri файл и полученный результат использовать в своем скрипте.
Файл скрипта необходимо сохранить в кодировке ANSI (Win-1251).
Таблица trade_accounts в поле class_codes содержит список классов, к которым привязан счет и этот список в зависимости от прав пользователя не изменяется. Этот список диктуется набором шлюзов, которые есть у брокера, а не правами. Таблица сlasses меняется в зависимости от прав пользователя, вследствие этого Вы видите то, что некоторых классов из class_codes нет в таблице classes.
По скриншоту видим, что у Вас некорректно распознаются типы данных, сообщите, пожалуйста, какой драйвер Вы используете? Если Вы используете Unicode-драйвер, то попробуйте выбрать ANSI-драйвер.
Уточните, пожалуйста, функция приводит к зависанию только в приведенном Вами индикаторе или при использовании в других скриптах возникает аналогичная проблема, если да, то просьба прислать пример такого скрипта. Также сообщите какую версию терминала Quik и Qlua Вы используете.
Формула, по которой вычисляется индикатор, представлена в Руководстве пользователя QUIK v.9.5 zip, 17.6 МБ -> 4 Графики.pdf -> Методы технического анализа -> ATR (Average True Range). Если Вы делали расчёт по этой формуле и результат не совпадает с значениями на графике, то просьба повторно прислать скриншот.
Ваш брокер может ограничивать диапазон цен торговли настройками на сервере Quik, за дополнительной информацией Вы можете обратиться к своему брокеру. В качестве временного решения проблемы рекомендуем скорректировать параметры стоп-заявки.
Цитата
Евгений написал: Значит проверка максимальной цены работает с ошибкой? Или все-таки в форме надо указывать отрицательные отступ и спред?