The conversion of a float to a string now adds a .0 suffix to the result if it looks like an integer. (For instance, the float 2.0 will be printed as 2.0, not as 2.) You should always use an explicit format when you need a specific format for numbers. (Formally this is not an incompatibility, because Lua does not specify how numbers are formatted as strings, but some programs assumed a specific format.)
Цитата
ISR написал: Кого леи как лечить не очень понятно :(
В этом и причина, они НЕ должны быть одинаковые. Как минимум то что Lua индикаторы имеют лишнюю линию в начале. Тот же MA рисуется второй по счету линией, значит в Get_Collection_Item надо указывать не 0, а 1.
meteop написал: Есть ли возможность получить значение пользовательского индикатора (со звездочкой) в скрипт QPILE?
Да есть.
Цитата
meteop написал: Функция GET_CANDLE_EX ничего не выдает, хотя значение "Идентификатор" прописываю в свойствах скрипта точно так же, как при использовании встроенных индикаторов.
Проверьте корректно ли Вы указали параметры функции.
Здравствуйте, Через main такой возможности нет. Рисовать графики можно только через lua индикаторы. в документации глава "Индикаторы технического анализа" Но это будет совершенно точно не то что обычный график.
Татьяна написал: К брокеру-то я обращусь, когда будет время. А сейчас спокойно (если так можно сказать) работаю на данном "Терминале".
Хотелось бы знать, с чем связано такое предупреждение? Может слишком активно и по многим позициям и нет уверенности в защите инфы? Но у меня хорошо защищенный "терминал". Сегодня ночью буду разбираться и привыкать к Квику на компе...
На наш взгляд всё очевидно, Вам не дали разрешения на подключение данным типом терминала. Какие тут могут быть вопросы?
Максим написал: ответ на транзакцию делается именно Квиком, то есть это ваше поле деятельности? Просто я смотрю, его содержание со временем может измениться.
Вы торгуете не в QUIK, а на бирже через QUIK. И на транзакции отвечает биржа, а не QUIK.
Цитата
Максим написал: Очень много народа сидит на этом Qpile и просто так убрать его будет нечестно по отношению к пользователям,
Дмитрий написал: тогда просьба сделать на лунный язык более подробную справку - типы данных, условия, циклы, работа с файлами, строками и так далее. В интернете всё на разных ресурсах
Максим написал: я не пойму, почему нет? На Квике 7 разве не будет Купайла? Разве нельзя использовать в текстовом виде эти 19 значные номера?
Если Вы не торгуете на срочном рынке, то и беспокоиться не о чем. Если торгуете, то да, Вы сможете получить номер заявки из ответа на транзакцию. И, при условии что этот номер не будет преобразовываться в число, сможете передать его в транзакцию на снятие заявки и заявка снимется. Однако, Вы не сможете использовать этот номер в поиске заявки по таблице заявок, т.к. там тип данных числовой, а при переводе строки в число, или обратно, потеряется точность. Следовательно, Вы не сможете по полученному номеру из транзакции определить текущее состояние выставленной заявки. Если Вас это устроит, то возражений нет. Если не устроит, предлагаем искать свою заявку в таблице заявок по TRANS_ID, а не по номеру, но тогда Вы и только Вы будете в ответе за сохранение уникальности TRANS_ID. Т.е. в любом случае придется переделывать логику скрипта. Лучше, надежней и на наш взгляд правильней, переделать скрипт на Lua, а про QPILE забыть как про устаревший архаизм, т.к. рано или поздно биржа опять что-нибудь придумает и тогда уже точно придется навсегда от него отказаться. Да следовать современным реалиям не всегда легко, да проще сидеть на привычном старом, да лень заморачиваться. Но рынок диктует новые веяния и поддерживать их в устаревшем ПО мы технически не готовы, само ядро QPILE не рассчитано на это, просто потому что оно старое. Как в свое время Microsoft рекомендовала отказаться от XP в пользу более современных систем, так и мы рекомендуем отказаться от QPILE в пользу Lua.
ЛуаСкрипт написал: Возникают проблемы с производительностью, стабильностью работы роботов и самого QUIK
Это зависит от квалификации программиста, а не от наличия/отсутствия примеров. Lua придумали не мы и существует он очень давно. Что мешает посмотреть алгоритмы на не связанных с QUIK ресурсах, посвященных Lua? И не надо говорить про "специфику", вся специфика относящаяся непосредственно к QUIK уже миллион раз обсуждалась еще со времен QPILE и с тех пор мало что изменилось. И даже более того, 99% вопросов по "специфике", вообще никак не относятся к программированию на Lua, а относятся к функционалу самого терминала QUIK. А функционал самого терминала QUIK должен быть Вам хорошо известен до того как Вы возьметесь программировать.
Цитата
ЛуаСкрипт написал: Проблема - нет эталонного торгового робота от разработчиков
Да нет, и не будет. Все наши функции необходимые для реализации такого робота описаны в документации QLUA.chm. Все Lua функции можно найти в документации на Lua и сторонних ресурсах которые ему посвящены. Если Вам не понятно, как отправить транзакцию или получить нужные данные, готовы подсказать.
Цитата
ЛуаСкрипт написал: 2. проблема - нет типового способа получения данных их QUIK
Что значит "типового"? Вот мы считаем что все имеющиеся способы (DDE, ODBC, QLUA) являются типовыми.
тот же комментарий, мы считаем имеющиеся способы "типовыми".
Цитата
ЛуаСкрипт написал: как передавать данные из QUIK в EXCEL
Что тут писать если есть DDE? А в Excel есть VBA. А дальше куда угодно.
Цитата
ЛуаСкрипт написал: принимающий кода на VBA для MS Excell
такой пример уже есть, см примеры для Trans2quik
Цитата
ЛуаСкрипт написал: также самый простой контроль выполнения заявок
что такое "контроль выполнения заявок"? Если интересует как получить данные то уже было отвечено выше. Если интересует как считать состояние портфеля, то формулы можно посмотреть в документации на терминал.
запись в файл, это штатный функционал Lua, посмотрите его документацию, функция io.open
Цитата
ЛуаСкрипт написал: 3. Если вы сделаете штатный способ прикрутить Python 3 к QUIK - вообще будет супер!!
а почему Python? Вот лично Вам он нравится и удобен, а вот лично мне нет, теперь все языки поддерживать? Простите но нет. И наша позиция относительно универсального API однозначна, для таких целей существует FIX адаптер. Да он платный, бесплатного аналога нет и не будет.
Цифра 41 в данном сообщении указывает на строку где возникла ошибка.
Код
if C(i)>maximum then
Т.е. у Вас C(i) возвращает nil А значит свечи нет. И то что Вы говорите что это не так, совершенно ничего не значит. Свечи может не быть на момент обращения к ней из-за сдвига или из-за наличия нескольких графиков. Совет тот же, добавьте проверку через CandleExist
Максим, нам не известно какой график Вы смотрите, не известно какие индикаторы на нем кроме указанного, не известно какой таймфрейм, вообще ничего не известно. Только код, на котором у нас проблема НЕ воспроизводится.
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
Максим написал: можете на примере показать, как выдернуть номер заявки ?
Нет, но можем дать совет по алгоритму: В результате транзакции смотреть параметр get_value (trans_result, "DESCRIPTION") Из него выдернуть номер заявки через функцию substr Самое сложное, выделить нужный участок строки, т.к. в зависимости от типа транзакции и рынка, ответ может быть разным. В этом месте универсального способа нет, нужно под конкретный биржевой ответ писать отдельную функцию.
Для срочного рынка, ответ на транзакцию будет такой "Заявка 1925050633224719691 успешно зарегистрирована." Значит, получить номер можно вызвав функцию substr со следующими параметрами: num=substr(get_value (trans_result, "DESCRIPTION"), 7, 19)
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
Нельзя будет снять заявку так: kill_order(ordnum,ordSECCODE,class) Потому что вот это: ordnum=get_value(get_item("ORDERS",count-gc),"NUMBER") работать НЕ будет.
Уведомление о необходимости обновления торговых терминалов в связи с изменениями на срочном рынке Московской биржи, Список проблем при работе устаревших версий QUIK после обновления торговой системы срочного рынка МБ
Если явно заказаны только конкретные инструменты (т.е. задан фильтр по инструментам), то каким образом можно узнать, какие есть еще активные инструменты в текущей сессии для заказа данных?
Есть функция getClassSecurities которая вернет список доступных инструментов. что такое "активные" инструменты? Те что торгуются? Если так то надо заказать какой-нибудь торговый параметр, например цену последней сделки, или еще что-нибудь похожее и проверить.
Цитата
Latrop написал: Будет неявно заказывать оба параметра для обоих инструментов, или он умеет заказывать такие "частные" параметры в разрезе инструментов?
умеет заказывать такие "частные" параметры в разрезе инструментов
Mikhail написал: Здравствуйте! Не подскажете почему во время приостановке торгов фьючерсами например сегодня в 11.17.55 LKH0 ф-ии getParamEx(class, name, "STATUS").param_value getParamEx(class, name, "TRADINGSTATUS").param_value возвращают 1? Кто ее ставит брокер или биржа? Какая функция в итоге показывает приостановку торгов инструментом?
Статус транслирует биржа. Если статус был некорректным, Вам следует обратиться к брокеру для проведения диагностики совместно со специалистами биржи.
Сергей написал: Здравствуйте.В "Таблица обезличенных сделок" можно сделать вывод по ODBC и получить данные с начала сессии. Также, через "Сохранение в файл" можно получить данные и с таблицы "Новости", но тоже с начала сессии.Как можно получить архивные данные по этим таблицам?Заранее благодарен за ответ.
Исторические данные хранятся только в виде графиков.
Latrop написал: Код: getParamEx2(marketCode, secCode, "TRADE_DATE_CODE") - возвращает дату торгов в виде параметра конкретного инструмента.
TRADE_DATE_CODE - возвращает дату торговой сессии сервера QUIK, а не инструмента Для ее получения, кроме getInfoParam("TRADEDATE"), есть еще функция getTradeDate ()
Если так сделать, то Вы не сможете открыть таблицу текущих торгов, т.к. не будет списка инструментов.
Цитата
Latrop написал: - Попытаться получить этот параметр getParamEx2(marketCode, secCode, "SECTYPESTATIC") , где marketCode, secCode соотв код класса и код инструмента, любого
Функция getParamEx2 возвращает параметры предварительно заказанные с помощью функции ParamRequest. А вот getParamEx не требует такого заказа.
Цитата
Latrop написал: Признаете вышеуказанное поведение ошибочным?
Нет.
Цитата
Latrop написал: Как получить эти значения в виде кодов (1,2,3...) в lua-скрипте?
К сожалению, такой возможности не предусмотрено. Можем предложить зарегистрировать пожелание на добавление функционала.
Алексей написал: Здравствуйте! У меня такой же вопрос, недостаточно лицензий. Брокер БКС. Подскажите из-за каких библиотек эти ошибки, и какие, в связи с этим, будут ограничения?
Те библиотеки у которых написано "Отказ", Вам нужно их удалить
Latrop написал: - Попытаться получить этот параметр getParamEx2(marketCode, secCode, "TRADE_DATE_CODE") или getParamEx, не важно
Дата торгов, это не параметр инструмента, а параметр сервера и получить его можно в getInfoParam("TRADEDATE")
Цитата
Latrop написал: Признаете вышеуказанное поведение ошибочным?
Нет.
Цитата
Latrop написал: 2. Вообще, что за такие static параметры? Может есть смысл выдавать их в составе getSecurityInfo()?
Статичные параметры инструментов и так передаются в getSecurityInfo
Цитата
Latrop написал: 3. SECTYPESTATIC, SECSUBTYPESTATIC (и т.п.) - строковые, и они как бы есть всегда. Каким образом они определяется? Ведь не строкой же с сервера приходят? Значит есть исходные кодовые поля? Как их получить?
Тип инстр-та и Подтип инстр-та формируются на основе данных поступающих с биржи. В иных случаях определяются сервером. Тип инструмента. Возможные значения:
Sergey Gorokhov написал: Александр М , К сожалению мы не можем разглашать даты выпуска обновлений Можем сказать только то что оно планируется к выпуску до того, как данное изменение в торговой системе будет внедрено.
Отдельный вопрос: после выпуска вашего обновления будут ли какие-то проблемы с компилированием скриптов через luac?
К сожалению, на данный момент информации нет. Однако мы обязательно это проверим перед выпуском версии и если такая необходимость возникнет то сообщим.
Александр М, К сожалению мы не можем разглашать даты выпуска обновлений Можем сказать только то что оно планируется к выпуску до того, как данное изменение в торговой системе будет внедрено.
Александр М написал: Я правильно понял ваш ответ, что после Вашего обновления и перехода на 19-ти значные номера заявок и сделок функцией tostring в рамках данных номеров пользоваться будет нельзя?
никто такого не говорил, не пытайтесь читать между строк. Пока непонятно что будет с tostring
Александр М написал: Что делать разработчики? Это не апрель, это уже сейчас.
Конкретно с этим кейсом ничего не делают и не будут делать, и даже если захотят ничего не смогут сделать т.к. проблема НЕ в QUIK, а конкретно в функции tostring, которая является частю самого Lua, который не является нашей разработкой.
Зачем? разве одного только факта что они будут некорректные не достаточно? Какая разница в чем именно будет заключаться некорректность, она просто будет и всё.
Дмитрий написал: А ещё подскажите по поводу второго изменения биржи о так называемом раздельном учёте заявок по коду актива. Надеюсь клиентских терминалов это не коснётся и все изменения будут на уровне сервера?
Дмитрий написал: но текстовый номер заявки всё равно приходит в сообщении о транзакции?
Да приходит.
Цитата
Дмитрий написал: Его можно будет использовать, хоть он и 19 значный?
да можно, при условии что нигде в коде не будет преобразования строка->число или обратно Нам не известно какая логика у Вас в скриптах, если для Вашей логики подойдет такое решение, значит Вам повезло.
_sk_ написал: выходит, что алготрейдинг в 7-й версии терминала с использованием QLua станет невозможным на срочном рынке.
ранее мы уже говорили что в старых версиях есть проблема и она будет исправлена, но исправление точно будет не в 7х версиях. так что да, можно говорить о том что на старых версиях корректная работа будет невозможна.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Скорость отклика настраивается в Windows, Панель инструментов - Мышь
Цитата
Kolossi написал: Все таки прошу рассмотреть необходимость вывода меню на ячейке данных при том, что меню сортировки так же выводится при клике на заголовок столбца, а ячейка данных задействована для обработки пользовательскиx функций qLua.
Пожелание не понятно, меню и так сейчас выводится на ячейке. Можете как-то по другому сформулировать?