max max написал: Тогда получается 2 разных времени . БИРЖА И БРОКЕР Если у них есть расхождение по времени то будут ошибки!
Даже более того, один сервер может работать одновременно с несколькими разными биржами и на каждой время легко может отличаться. С трудом можно представить чтобы например биржи в Лондоне, Америке и России договорились о том чтобы их часы шли синхронно вплоть до тысячных секунды.
Подскажите как правильно складывать вычитать и сравнивать время ?
Пользователь
Сообщений: Регистрация: 23.01.2015
24.08.2016 09:41:35
Цитата
max max написал: order_table.datetime как и getInfoParam("SERVERTIME") берется с сервера брокера?
Время сервера это время сервера. А время на заявке проставляет биржа, а не сервер.
Цитата
max max написал: Есть возможность получить тек время сервера как то по другому ? не через getInfoParam("SERVERTIME")
А чем getInfoParam не устраивает?
Подскажите как правильно складывать вычитать и сравнивать время ?
Чтобы сравнить время нужно для начала привести его к одному формату. К сожалению исторически так сложилось что getInfoParam("SERVERTIME") возвращает строку формата "HH:MM:SS" а order_table.datetime вернет таблицу с полями {year, month, day, week_day, hour, min, sec, ms, mcs}
Соответственно, через string.match переводите SERVERTIME в часы минуты и секунды
Код
HHMMSS=getInfoParam("SERVERTIME")
if string.len(HHMMSS)==7 then
h,m,s = string.match(HHMMSS,"(%d)%p(%d%d)%p(%d%d)")
else
h,m,s = string.match(HHMMSS,"(%d%d)%p(%d%d)%p(%d%d)")
end
указывать нужно папку а не exe файл И в самом терминале проверьте включена ли обработка внешних транзакций.
И, если что тут есть пример на VB
Не регистрируется trans2quik.dll
Пользователь
Сообщений: Регистрация: 23.01.2015
23.08.2016 12:25:53
Здравствуйте, Библиотеку не надо регистрировать. просто положите ее в любую папку указанную в переменной PATH или в папку с Вашей программой
Какие потоки нужно закрывать?
Пользователь
Сообщений: Регистрация: 23.01.2015
22.08.2016 06:14:41
Здравствуйте, Трудно судить только по описанию проблемы не видя кода. Если зависает только в момент остановки, на вскидку, такое может быть если в OnStop крутится какой-то цикл. Отвечая на вопрос, кроме ds:Close() и нечего то больше закрывать.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 23.01.2015
22.08.2016 06:10:58
Цитата
Старатель написал: А вы проверяйте скриптом через getInfoParam('LASTRECORDTIME')
Уточните где именно проверяется LASTRECORDTIME? Если в каком-либо колбеке, то в каком? Или в цикле в main? Было бы замечательно получить хотя-бы пример на котором повторяется проблема. И проверить поведение на последней версии 7.2. У нас никак не получается повторить проблему
Получение данных о транзакции по стоп-заявке
Пользователь
Сообщений: Регистрация: 23.01.2015
20.08.2016 06:47:33
Цитата
WennY написал: Я лишь хочу быть уверенным, что сделка состоялась или же, если она может не состояться, что она предприняла отчаянную попытку, которая закончилась провалом.
Сделка не может "предпринять попытки"! Это сделка - факт совершения операции. Если сделка сама по себе просто существует, это уже означает что заявка исполнилась, либо частично исполнилась.
Цитата
WennY написал: Означает ли заполнение 22526627011 у стопа-заявки гарантией того, что сделка состоялась? или она может все-таки не состояться?
Совершенно нет, linkedorder это заявка!, а не сделка. Грубо, приходите на рынок и говорите что хотите купить, но не факт что у Вас кто-то что-то купит.
Цитата
WennY написал: Есть выставленный руками/робот стоп-ордер. Как мне наиболее грамотно проконтролировать осуществление им сделки в формате "успешно осуществлена/попытка осуществлена, но неудачно"?
По количеству исполненного количества. Как контролировать исполненное количество уже на Ваш вкус, хотите через заявки, хотите по сделкам.
Получение данных о транзакции по стоп-заявке
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 13:55:36
Цитата
WennY написал: Ну, может стоп заранее резервирует id под будущий трейд
На московской бирже, где собственно и исполняются заявки, нет возможности заранее зарезервировать номер заявки.
Цитата
WennY написал: А зачем нужен flags сделкам? Сделка - это ведь исполненная заявка, так какие ещё статусы там могут быть?
посмотрите документацию, там не только статусы.
Получение данных о транзакции по стоп-заявке
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 13:35:09
Цитата
WennY написал: Параметр linkedorder, указанный в стоп-заявке, сразу в ней доступен или он туда прописывается уже после срабатывания условий стопа?
Пока стоп не сработает не будет заявки и значит нечего писать в linkedorder
в таблице стоп заявок это номер заявки в торговой системе, зарегистрированной по наступлению условия стоп-цены. в таблице заявок это исходный номер заявки с указанной датой исполнения при замене заявки в ходе клиринга. Параметр заявок срочного рынка FORTS.
Цитата
WennY написал: Его можно использовать в качестве привязки?
в сделках этого параметра нет, но там есть order_num по которому можно найти заявку и стоп заявку (как раз по полю linkedorder)
Логарифмическая шкала меняет классическую шкалу (шкала цены) на логарифмическую, на которой данные как бы сжимаются в процессе увеличения значений.
подробнее можно почитать в интернете. Возможно Вам нужно просто привязать второй график к другой ось? если так это делается в свойствах графика.
Вот график сбера: сверху красным обычный, снизу чёрным ... Мне непонятна шкала логарифмического графика, почему текущее значение на обоих графиках одинаковое ?
смотря что понимать под "открыта позиция", некоторые понимают под этим заявку, а некоторые сделку. Вот Вы как это понимаете?
Заявка - это лимитный биржевой ордер, выставленный напрямую или через условный стоп на брокере. Под сделкой я имею в виду именно свершившийся акт входа в позицию, а не отправку на биржу лимитной заявки.
Соответственно, если Вам нужна сделка смотрите колбек для сделок OnTrade. Или саму таблицу сделок через getItem
Получение данных о транзакции по стоп-заявке
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 12:20:36
Цитата
WennY написал: Хорошо, допустим, я отловил таблицу с моей транзакцией. Как теперь достоверно определить, была ли открыта (а не просто выставлена) позиция?
смотря что понимать под "открыта позиция", некоторые понимают под этим заявку, а некоторые сделку. Вот Вы как это понимаете?
Работа с файлом несколькими скриптами
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 12:18:44
Здравствуйте, Вопрос обменена данных между двумя программами не относится именно к Lua Это вопрос который касается вообще всех существующих языков программирования и таких способов для обмена в интернете предложено очень много. Это и сетевые протоколы, и pipe и sql базы и т.д, обмен через файлы это только один из множества способов.
Обмен информацией через файл возможен но, только в случае если одновременно одна программа будет только считывать файл, а вторая только записывать. И это не потому что так устроен Lua, а потому что так устроена файловая система Windows. У Вас же в коде в обоих случаях io.open открывает файл в режиме записи, а значит происходит конфликт при одновременном доступе. Либо открывайте один файл но по очереди, либо используйте два файла (1й скрипт пишет в 1й файл и читает 2й файл, а 2й скрипт пишет в 2й файл и читает 1й файл), либо используйте другой способ обмена.
Справка по AddLabel
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 12:06:29
Здравствуйте,
Цитата
Алексей Орешкин написал: чтобы эти графики не смещались и начинались с единой точки отсчёта.
Если речь про первую свечку, то нужно в параметрах диаграммы указать "Диапазон данных" - "за период" и установить фильтр по времени.
Цитата
Алексей Орешкин написал: Также в идеале нужен выбор шкалы приращений - абсолютная или относительная , чего тоже нет.
Возможно речь про "Процентное изменение" в свойствах графика?
Цитата
Алексей Орешкин написал: Хотя в настройках области видимости графика есть пункт Логарифмическая шкала, но я честно сказать вообще непонял как она работает в квике и работает ли вообще
Логарифмическая шкала меняет классическую шкалу (шкала цены) на логарифмическую, на которой данные как бы сжимаются в процессе увеличения значений. подробнее можно почитать в интернете. Возможно Вам нужно просто привязать второй график к другой ось? если так это делается в свойствах графика.
Получение данных о транзакции по стоп-заявке
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 11:48:32
Цитата
WennY написал: А разве нельзя просто по trans_id запросец направить? Только с сеточкой для ловли транзакций стоять?
на транзакциях отправленных через интерфейс терминала, параметр trans_id отсутствует и установить его нельзя.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 09:38:19
Цитата
Старатель написал: Также хочу отметить, что по какой-то причине после рестарта сервера и смены даты иногда (?) параметр "LASTRECORDTIME" равен 23:59
К сожалению описанная ситуация не повторяется. Просьба сообщить больше подробностей, когда запускали терминал, когда подключали к серверу и т.д. также, просьба выложить поясняющие скриншоты
Получение данных о транзакции по стоп-заявке
Пользователь
Сообщений: Регистрация: 23.01.2015
19.08.2016 06:12:33
Здравствуйте, В OnTransReply приходят ответы только на транзакции отправленные из Lua
Тест наличия идентификатора графика
Пользователь
Сообщений: Регистрация: 23.01.2015
17.08.2016 12:03:55
Здравствуйте, Вариант не работает. Штатного способа решить задачу нет. Однако упомянутый getLinesCount возвращает 1 если идентификатор задан, а если нет то вернет 0
Здравствуйте, Данное пожелание пока еще не реализовано. Следите за обновлениями. Регламент работы с пожеланиями опубликован по ссылке:
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 23.01.2015
17.08.2016 06:31:28
Цитата
Старатель написал: Почему были проигнорированы мои сообщения 3 месяца назад?
К сожалению не готов назвать причины, будем разбираться с этим внутри компании. Приносим извинения.
ZeroBrain Studio
Пользователь
Сообщений: Регистрация: 23.01.2015
16.08.2016 13:14:12
Здравствуйте, Рекомендуем обратиться на сайт разработчика редактора
Подмена TransId c версии сервера 5.4.2
Пользователь
Сообщений: Регистрация: 23.01.2015
16.08.2016 10:51:29
Здравствуйте!
Информация получена, проблема изучается. Постараемся в ближайшее время дать ответ.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 23.01.2015
16.08.2016 08:52:29
Старатель, Помощь брокера не требуется. Ситуацию удалось воспроизвести на тесте. Проблема изучается. Постараемся в ближайшее время дать ответ.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 23.01.2015
16.08.2016 07:33:50
Старатель, Вопрос был о способе определить период окончания вечерней сессии, на это и был дан ответ. Время сервера напрямую зависит от трансляции данных в терминал. Предположительно, причиной может быть отсутствие активных торговых шлюзов на сервере Если интересует исследование вопроса, необходимо смотреть со стороны сервера, то есть нужен брокер.
Здравствуйте, Период окончания вечерней сессии указан в расписании торгов. Если данный способ не устраивает, рекомендуем уточнить у специалистов биржи, рекомендуемый ими метод.
Порядок работы со списком инструментов при безостановочной работе Quik'а и Lua-скрипта
Пользователь
Сообщений: Регистрация: 23.01.2015
16.08.2016 06:16:40
Цитата
Вячеслав + написал: В какой момент нужно проверять, что таблица всех инструментов обновилась (добавились новые, удалились старые)? В момент начала выполнения обработчика OnConnected таблица инструментов уже обновлена?
Проверять после смены сессии в OnCleanUp
Цитата
Вячеслав + написал: Что делать с подписками по Subscribe_Level_II_Quotes на удаленные инструменты?
ничего не делать
индекс РТС, разные значения
Пользователь
Сообщений: Регистрация: 23.01.2015
12.08.2016 22:47:10
Здравствуйте, Графики индексов (в отличии от графиков по торгуемым инструментам) строятся по таблице текущих торгов, которая обновляется срезами данных (раз в таймаут) поэтому часть данных может быть пропущена при попадании на график
Отправка заявок на покупку/продажу из excel (VBA)
Пользователь
Сообщений: Регистрация: 23.01.2015
11.08.2016 23:03:29
Здравствуйте, Роман, помимо Trans2quik есть еще способ отправки транзакций. Он немного попроще, возможно это то что Вам нужно. В QUIK есть функционал Динамического импорта транзакций из текстового файла. Суть его в том что QUIK считывает обычный текстовый файл и в случае появления в нем определенных строк, отправляет транзакции на сервер. То есть Вам достаточно написать VBA макрос который будет при определенных условиях просто записывать строку в текстовый файл, а QUIK уже сделает все остальное. формат тектового файла описан в документации -Раздел 6. Совместная работа с другими приложениями --Импорт транзакций ---Формат .tri-файла с параметрами транзакций
там же есть и примеры.
Получить последний тик бумаги
Пользователь
Сообщений: Регистрация: 23.01.2015
11.08.2016 20:08:22
Здравствуйте,
Цитата
WennY написал: Раз уж тему уже создал... Как получить макс/мин. возможную цену бумаги?
через тот же getParamEx, с параметром pricemin или pricemax однако на фондовой секции они транслируются не всегда (зависит от настроек на стороне брокера)
Недостаточно лицензий!
Пользователь
Сообщений: Регистрация: 23.01.2015
11.08.2016 17:25:00
Цитата
Alex написал: Отключил BTrading.dll , видимо в нем была причина
Да верно. Ваш брокер не предоставляет услуги использования плагина корзины ценных бумаг (BasketTrading) Если Вам нужен этот плагин, Вам нужно обратиться к брокеру.
Не изменяется содержимое файла в ЦИКЛЕ, Не изменяется содержимое файла в ЦИКЛЕ
Sergey Gorokhov написал: Здравствуйте, Так не должно быть. Возможно время на Вашем компьютере на 3 часа меньше реального?
Нет, конечно. ОС Win2003, может с ней какая-то особенность...?
Нет никаких особенностей. Проверьте какой часовой пояс у Вас в настройках системы.
Не изменяется содержимое файла в ЦИКЛЕ, Не изменяется содержимое файла в ЦИКЛЕ
Пользователь
Сообщений: Регистрация: 23.01.2015
10.08.2016 21:24:30
Здравствуйте, Так не должно быть. Возможно время на Вашем компьютере на 3 часа меньше реального?
Как установить плечо?, Кнопка "установить остаток и плечо" не работает
Пользователь
Сообщений: Регистрация: 23.01.2015
10.08.2016 15:58:26
Цитата
Антон Поташев написал: Получил демо на вашем сайте, ситуация точно такая же. Плечо по умолчанию стоит 2. Как его можно убрать?
На нашем демо, плечо 2 автоматически ставится всем. Уточните зачем Вам его нужно убрать?
Как установить плечо?, Кнопка "установить остаток и плечо" не работает
Пользователь
Сообщений: Регистрация: 23.01.2015
09.08.2016 23:33:42
Здравствуйте, Рекомендуем обратиться к брокеру
Получить последний тик бумаги
Пользователь
Сообщений: Регистрация: 23.01.2015
09.08.2016 22:46:54
Здравствуйте, Функция getItem возвращает строку из таблицы. В частности у Вас в примере, выводит цену из последней строки таблицы обезличенных сделок. В этой таблице может быть несколько разных инструментов. В примере никакой сортировки нет, а значит вернется просто какая-то цена по непонятному инструменту. Если нужен конкретный инструмент, напишите цикл который будет перебирать строки таблицы от последней к первой и при нахождении нужного инструмента выходить из цикла.
помимо этой функции, цену последней сделки можно получить через функции CreateDataSource, getCandlesByIndex или getParamEx
Создание нескольких (с одинаковым или разным содержанием столбцов) из одного скрипта
Пользователь
Сообщений: Регистрация: 23.01.2015
09.08.2016 17:19:55
Здравствуйте, Создать несколько таблиц можно. Однако средствами LUA, к сожалению нельзя указывать расположение таблиц на вкладках
Перенос лимитных заявок ?, Перенос лимитных заявок через вечерний клиринг?
Пользователь
Сообщений: Регистрация: 23.01.2015
09.08.2016 14:46:53
Здравствуйте, Узнать параметры транзакции можно если добавить ее в Карман транзакций и от туда сохранить в tri файл. Открыв файл блокнотом Вы увидите нужные названия параметров.
не работает функция sleep(), на одном компе не работает функция sleep()
Повторите проблему, после чего закройте терминал QUIK и пришлите нам quiksupport@arqatech.com всю папку (кроме ключей доступа) для анализа вместе с тестовым скриптом.
не работает функция sleep(), на одном компе не работает функция sleep()
Пользователь
Сообщений: Регистрация: 23.01.2015
04.08.2016 06:27:21
Здравствуйте, Функция sleep появилась позже появления LUA в QUIK, возможно у Вас устаревшая версия терминала? Актуальная сейчас версия 7.2
Таблица сделок - связи, схема данных
Пользователь
Сообщений: Регистрация: 23.01.2015
03.08.2016 13:53:33
Цитата
Василий Арефьев написал: А этот алгоритм прописан где-нибудь? С ним можно ознакомиться?
Рекомендуем ознакомиться с правилами торгов на московской бирже. Или получить консультацию у Вашего брокера.
Таблица сделок - связи, схема данных
Пользователь
Сообщений: Регистрация: 23.01.2015
03.08.2016 13:21:12
Здравствуйте, Второе.
Можно ли из LUA перейти на графике на нужный интервал?
Пользователь
Сообщений: Регистрация: 23.01.2015
03.08.2016 06:49:25
Здравствуйте, В LUA вообще нет ни одной функции которая как либо может управлять интерфейсом терминала QUIK и добавление таких функций в обозримом будущем не планируется. Для решения вопроса можно использовать CreateDataSource в котором есть возможность выбрать нужный таймфрейм
Таблица сделок - связи, схема данных
Пользователь
Сообщений: Регистрация: 23.01.2015
03.08.2016 06:45:42
Здравствуйте, Если говорить о программировании, то связать данные можно по полю "ID транзакции" которое будет иметь одинаковое значение для стоп заявки/заявки/сделок указанное программистом. Если говорить о визуальном интерфейсе, то в таблице стоп заявок и сделок есть поле "Номер заявки", а в таблице заявок есть поле "Стоп-заявка" Все это описано в документации на терминал QUIK (клавиша F1).