Не пойму о какой копии идёт речь? У вас в скрипте создаётся только одна таблица. Если вы имели ввиду, что копия создаётся после повторного запуска скрипта, то это буде таблица уже с новым идентификатором. Всё же хотелось бы узнать, в каких случаях таблица может быть не создана, кроме мной?
Что касается документации, то неплохо добавить в неё следующую информацию: ,
Надо делать так, как надо. А как не надо - делать не надо.
СПРАВКА ПО QLUA. ВЫЧИТКА (Версия 7.4)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
10.10.2016 20:39:51
Цитата
Stanislav Tvorogov написал: Функция возвращает 0 во всех остальных случаях, в которых таблица не была создана, за исключением указания значений, отличных от NUMBER.
Я как раз хотел от вас услышать, в каких случаях таблица может быть не создана.
Старатель написал: Если окно с указанным id было ранее создано и не закрыто, то CreateWindow вернёт 0.
В случае, если окно таблицы уже было открыто, будет создана его копия.
Вы уверены?
Надо делать так, как надо. А как не надо - делать не надо.
СПРАВКА ПО QLUA. ВЫЧИТКА (Версия 7.4)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
09.10.2016 12:02:45
Цитата
Старатель написал: В каких случаях (кроме некорректно заданного идентификатора) функция может вернуть 0?
Если окно с указанным id было ранее создано и не закрыто, то CreateWindow вернёт 0. Есть ещё варианты?
Надо делать так, как надо. А как не надо - делать не надо.
СПРАВКА ПО QLUA. ВЫЧИТКА (Версия 7.4)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
09.10.2016 11:56:17
Цитата
CreateWindow Функция создает окно таблицы с идентификатором «t_id». Функция возвращает «1» при успешном создании окна, иначе – «0».
В каких случаях (кроме некорректно заданного идентификатора) функция может вернуть 0?
Надо делать так, как надо. А как не надо - делать не надо.
проблема со стаканом
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
06.10.2016 13:08:34
В v.7.4 минимальную ширину стакана увеличили со 128px до 136px. Чем обусловлено такое решение?
Надо делать так, как надо. А как не надо - делать не надо.
Что быстрее - DataStore или GetCandlesByIndex?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
30.09.2016 10:47:20
Индикаторы все равно рассчитываются так или иначе: в роботе или самим квиком. Но в случае getCandlesByIndex ресурсы тратятся ещё и на отображение графика и индикатора, что более ресурсоёмко, чем просто вычисление.
Надо делать так, как надо. А как не надо - делать не надо.
Копирование значения ячейки в таблице
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
26.09.2016 19:04:37
Добрый день. Добавьте пункт меню "Копировать ячейку" (для копирования кодов бумаг, ISIN и пр.)
Надо делать так, как надо. А как не надо - делать не надо.
СПРАВКА ПО QLUA. ВЫЧИТКА (Версия 7.4)
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
23.09.2016 21:53:03
Цитата
Stanislav Tvorogov написал: Внесистемные сделки также присутствуют в потоке обезличенных сделок и OnAllTrade должен на них сработать.
Надо делать так, как надо. А как не надо - делать не надо.
коды событий поворотов колеса мыши SetTableNotificationCallback
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
23.09.2016 16:29:04
Цитата
Старатель написал: Зарегистрируйте пожелание, чтобы функция GetCell возвращала значения ячеек из нулевой строки (названия колонок).
Надо делать так, как надо. А как не надо - делать не надо.
Теоретическая разница получения данных CreateDataSource+SetUpdateCallback или getNumCandles()+getCandlesByIndex(), В чем разница получения данных 1 способом и 2 способом
Николай Камынин написал: CreateDataSource+SetUpdateCallback - получаем данный в момент прихода их с сервера, т е до помещения в хранилище в терминале.
в этом я сильно сомневаюсь. Всё, что сыпется с сервера - сериализуется на жёстком диске.
Практически было установлено, что сначала вызывается колбэк в момент получения данных, и лишь затем эти данные сбрасываются в хранилище на диске.
Цитата
Владимир Б****ов написал: Т.е если таймфрейм установлен в 3 минуты - то получение данных ~ 1 раз в 3 минуты
Нет, в течение 3-х минут свеча может обновиться несколько раз. В этом вы можете убедиться просто понаблюдав за последней свечой на 3-минутном графике. И на каждое изменение вы будете получать колбэк.
Надо делать так, как надо. А как не надо - делать не надо.
коды событий поворотов колеса мыши SetTableNotificationCallback
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
17.09.2016 14:35:48
Добрый день. Зарегистрируйте пожелание, чтобы функция GetCell возвращала значения ячеек из нулевой строки (названия колонок).
Надо делать так, как надо. А как не надо - делать не надо.
Утечка памяти
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
17.09.2016 11:01:02
Imersio Arrigo, спасибо, не знал, что символические ссылки можно создавать также и для файлов.
Надо делать так, как надо. А как не надо - делать не надо.
тот самый написал: можно было бы, конечно, "пофантазировать" на тему применения жёстких ссылок в NTFS но....
Не жестких, а символических.
Пофантазировать можно. Только при чём здесь жёсткие/символические ссылки NTFS?
Надо делать так, как надо. А как не надо - делать не надо.
Утечка памяти
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
15.09.2016 10:08:39
Цитата
s_mike@rambler.ru написал: Создайте ярляк для info.exe и укажате в нем путь к рабочей папке. Она и будет каталогом временных файлов.
Это будет каталог не только для временных файлов, но и файлов настроек, архива графиков. Не хочется их переносить на виртуальный диск.
Надо делать так, как надо. А как не надо - делать не надо.
Утечка памяти
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.09.2016 22:55:02
Предлагаю добавить настройку, где можно было бы задать каталог для временных файлов, таких как info.log, curr_data.log, alltrade.dat, чтобы их можно было бы перенести на виртуальный диск в оперативной памяти для ускорения работы терминала.
Надо делать так, как надо. А как не надо - делать не надо.
Шаг между страйками
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
14.09.2016 17:47:19
Надёжней отсортировать массив опционов одной серии по возрастанию/убыванию и найти min разность между соседними страйками. Это и будет искомый шаг.
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
27.08.2016 14:18:40
Код
local Date = getTradeDate().date
function main()
while not stopped do
local TradeDate = getTradeDate().date
if TradeDate and TradeDate ~= '' and TradeDate ~= Date then
message('Trade date: ' .. TradeDate .. '; Last record time: ' .. getInfoParam('LASTRECORDTIME'))
return
end
sleep(1) -- Чтобы воспроизвести наверняка, можете убрать sleep
end
end
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
27.08.2016 14:16:48
Цитата
Sergey Gorokhov написал: Уточните где именно проверяется LASTRECORDTIME? Если в каком-либо колбеке, то в каком? Или в цикле в main? Было бы замечательно получить хотя-бы пример на котором повторяется проблема.
Вот код:
Код
local Date = getTradeDate().date
function main()
while not_stopped do
local TradeDate = getTradeDate().date
if TradeDate and TradeDate ~= '' and TradeDate ~= Date then
message('Trade date: ' .. TradeDate .. '; Last record time: ' .. getInfoParam('LASTRECORDTIME'))
return
end
sleep(1) -- Чтобы воспроизвести наверняка, можете убрать sleep
end
end
Возможно причина в том, что getTradeDate меняется раньше, чем сбрасывается LASTRECORDTIME.
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
20.08.2016 14:23:59
Установлена настройка "Очищать данные после смены даты: На сервере (при установлении связи)"
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
19.08.2016 23:33:14
А вы проверяйте скриптом через getInfoParam('LASTRECORDTIME') Терминал работает круглосуточно. В настройках стоит "Восстанавливать связь автоматически". Утром после рестарта сервера и смены даты getTradeDate().date параметр "LASTRECORDTIME" бывает равен 23:59:хх Скринов нету, есть только логи:
Цитата
18.08.16 08:45:09.175 Disconnected 18.08.16 09:05:03.015 Trade date: 18.08.2016; Last record time: 23:59 18.08.16 09:05:03.506 Connected
Надо делать так, как надо. А как не надо - делать не надо.
Получение данных о транзакции по стоп-заявке
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
19.08.2016 07:32:00
Если заявка исполняется сразу, то, как правило, OnTrade приходит раньше OnOrder. Поэтому лучше отслеживать статус "Исполнена" порождённой заявки по OnOrder.
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
18.08.2016 23:12:57
Также хочу отметить, что по какой-то причине после рестарта сервера и смены даты иногда (?) параметр "LASTRECORDTIME" равен 23:59
Надо делать так, как надо. А как не надо - делать не надо.
Обновление данных в таблице обезличенных сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
17.08.2016 23:15:32
Цитата
Eys Eys написал: В чем причина обновления данных в таблице обезличенных сделок каждый раз
Возможно, происходит переподключение к другому серверу? Проверьте настройку
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
16.08.2016 21:29:29
Sergey Gorokhov, Это хорошо, что удалось воспроизвести. Почему были проигнорированы мои сообщения 3 месяца назад?
Надо делать так, как надо. А как не надо - делать не надо.
Порядок работы со списком инструментов при безостановочной работе Quik'а и Lua-скрипта
Вячеслав + написал: В какой момент нужно проверять, что таблица всех инструментов обновилась (добавились новые, удалились старые)? В момент начала выполнения обработчика OnConnected таблица инструментов уже обновлена?
Проверять после смены сессии в OnCleanUp
На самом деле в OnCleanUp ничего интересного не происходит. Списки инструментов обновляются позже. В OnCleanUp даже дата и идентификатор сессии не обновляются.
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
16.08.2016 07:25:17
Именно на регламент я и ориентируюсь. К примеру, в условии скрипта указано, что если время сервера больше 23:50, то необходимо сохранить данные за прошедший торговый день. Если раньше этот способ работал, и скрипт, будучи запущенным в любой момент, срабатывал в нужное время, то теперь время сервера не является надёжным источником. И при чём тут специалисты биржи, если ваш терминал не транслирует время сервера?
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
16.08.2016 06:52:54
Цитата
Sergey Gorokhov написал: Период окончания вечерней сессии указан в расписании торгов.
Я знаю. Но терминал не транслирует время сервера после 23:59:59, о чём я написал выше.
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
13.08.2016 00:53:25
Ув. разработчики, стоит задача выгрузки данных по окончании торговой сессии. Но в 7-м Квике вместо времени сервера и времени последней записи после 23:59:59 зачем-то транслируется пустая строка, в связи с чем невозможно понять, то ли данные не прокачались, то ли ещё что... Вы можете предложить надёжный вариант определить период окончания вечерней сессии без необходимости чтения локального времени?
Надо делать так, как надо. А как не надо - делать не надо.
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
26.06.2016 13:06:07
Цитата
Космонавт написал: А если компьютер на ночь уходил в гибернацию без выключения КВИКА, а утром ожил? Запомнятся ли переменные и будет ли читаться код до функции main?
Код читается один раз при запуске скрипта. Поскольку перезапуска скрипта не произошло, то код продолжит выполняться с точки останова. При этом все переменные сохранят свои значения.
Цитата
Николай Камынин написал: Полагаю, что при смене сессии , все начнется сначала.
При смене сессии всё не начнётся сначала. Код будет работать в соответствии с заложенной в него логикой. Так, если в коде предусмотрено "обнулять" значения переменных при смене сессии, то так и будет. Если "обнуление" не предусмотрено, то значения сохранятся.
Надо делать так, как надо. А как не надо - делать не надо.
Вопрос: как получить в переменную значение элемента массива, но чтобы не было связи между этой переменной и массивом
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
26.06.2016 12:55:03
Вариант второй: при сохранении таблицы BIG_DATA в файл выгружать только необходимые параметры, а не все подряд. Очевидно, что список этих параметров конечен.
Надо делать так, как надо. А как не надо - делать не надо.
Ошибки вычисления с плавающей точкой в LUA., LUA не может правильно посчитать 124.4 - 124.3? - Да ладно?!
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
17.06.2016 22:54:59
Скрытый текст
Николай Камынин, предлагаю воздерживаться от постов, не несущих никакой смысловой нагрузки.
Старатель написал: И как же получить таймфрейм одного индикатора из другого?
А зачем из другого? Если у них один источник данных то и таймфрейм у них будет один и тот же. А раз так, то его можно получить через getDataSourceInfo.
Речь про два и более источников данных.
Надо делать так, как надо. А как не надо - делать не надо.
Расчет стандартных индикаторов в QLUA
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
04.06.2016 14:26:23
Цитата
Sergey Gorokhov написал: И? Что мешает получить новый таймфрейм? Получить настройки одного индикатора из другого действительно нельзя. Но таймфрейм это не настройка индикатора.
И как же получить таймфрейм одного индикатора из другого?
Надо делать так, как надо. А как не надо - делать не надо.
Зависание квика
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
04.06.2016 14:03:05
Аналогичная ситуация, QUIK 7.0.4.10: Стоит настройка "Очищать данные после смены даты на сервере" Вечером, после окончания торгов, QUIK закрывается, а на следующий день, в вечернюю сессию я запускаю QUIK. При установлении связи с сервером данные очищаются, и QUIK зависает. Помогает только перезапуск программы. Данная проблема наблюдается ежедневно.
Надо делать так, как надо. А как не надо - делать не надо.
Фильтр по кодам клиентов, Доступ к фильтру из QLua
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
22.05.2016 12:53:15
Добрый день. Предлагаю дать доступ на чтение к фильтру по кодам клиентов из QLua и, соответственно, добавить колбэк при изменении этого поля. Будет полезно для брокеров и управляющих.
Надо делать так, как надо. А как не надо - делать не надо.
[ Закрыто] Отказ от поддержки встроенного языка QPILE, Отказ от поддержки встроенного языка QPILE
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
18.05.2016 21:39:35
Цитата
Sergey Gorokhov написал: существуют ли какие-либо препятствия к решению этих задач средствами LUA?
Надо делать так, как надо. А как не надо - делать не надо.
запуск робота при запуске квика
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
12.05.2016 21:49:27
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
11.05.2016 07:17:58
Хм... В 7-м Квике до начала следующего торгового дня время сервера не отображается, что ничем не лучше формата записи > 24 ч.
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
10.05.2016 00:48:22
А это вообще замечательно: Время сервера: 10:52:46 - "началась новая торговая сессия" от 06.05.2016 При этом на графике уже есть свеча за 18:45 от 06.05.2016.
Исправьте это недоразумение, чтобы скрипт всегда мог однозначно понять закончилась ли торговая сессия, дату которой QUIK транслирует или ещё не начиналась.
Надо делать так, как надо. А как не надо - делать не надо.
OnQuote
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
08.05.2016 23:21:42
Будет работать только та функция, которая описана последней.
Надо делать так, как надо. А как не надо - делать не надо.
Расчет цены клиринга по фьючерсам
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
08.05.2016 14:27:44
Таки в ТТП есть параметр, показывающий по фьючерсам цену закрытия (последней сделки) торговой сессии?
Надо делать так, как надо. А как не надо - делать не надо.
getInfoParam is not a string?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
08.05.2016 13:58:14
Здесь были какие-то изменения? Судя по всему, при подключении к серверу в неторговый день, теперь время сервера начинает отсчитываться с 9-ти утра, так, как будто торги последнего торгового дня ещё не закончились, точнее даже не начинались. Зачем?
Надо делать так, как надо. А как не надо - делать не надо.
Окно ввода заявки
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
28.04.2016 12:28:55
[img]file:///C:/Programs/Temp/Login.png[/img]Согласен, в v.7.2 диалоговые окна сделаны как-то не разумно:
Надо делать так, как надо. А как не надо - делать не надо.
Шлюз
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
25.04.2016 16:19:07
Цитата
написал: В таком случае рассчитывать на появление скодь- нибудь серьезных программ на встроенным языке нет причин.
А на не встроенном языке (C, C#) ситуация лучше что ли? Возможно, вы имели ввиду "программ под QUIK в целом"?
Надо делать так, как надо. А как не надо - делать не надо.
Что-то я не увидел в списках изменений упоминания об устранении обсуждаемой проблемы. Позже проверю: версия 7.2 только недавно вышла, и что-то у меня сейчас нет желания запускать непроверенную версию в бой.
Надо делать так, как надо. А как не надо - делать не надо.