тот самый написал: можно было бы, конечно, "пофантазировать" на тему применения жёстких ссылок в 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 только недавно вышла, и что-то у меня сейчас нет желания запускать непроверенную версию в бой.
Надо делать так, как надо. А как не надо - делать не надо.
QUIK v.7.0.4.10 Проблема длительного открытия формы ввода стоп-заявки по опционам при подключении к боевому серверу всё ещё актуальна.
Надо делать так, как надо. А как не надо - делать не надо.
qpile или qlua
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
19.04.2016 09:24:27
Цитата
Алексей Орешкин написал: И есть ли хоть что то реализуемое на qpile и нереализуемое на qlua ?
QPILE выгодно отличается от QLua в том, что таблицы на QPILE после закрытия QUIK сохраняют свои размеры и положения в отличие от таблиц на QLua. Так, в QLua не сохраняются ширины колонок и вкладка, на которой был запущен скрипт.
Надо делать так, как надо. А как не надо - делать не надо.
Плата за транзакции - а где их взять, У биржи есть плата за транзакции - вопрос в том где их взять
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
18.04.2016 12:52:23
Если у брокера установлен лимит на количество бесплатных транзакций в единицу времени, то это касается в т.ч. и транзакций по стоп-заявкам.
Надо делать так, как надо. А как не надо - делать не надо.
Плата за транзакции - а где их взять, У биржи есть плата за транзакции - вопрос в том где их взять
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
16.04.2016 13:12:35
Цитата
Николай Камынин написал: Если я не ошибаюсь, то плата за транзакции возникает при более 30 транзакций в секунду. Эту плату берут с брокера, а он берет с Вас, если об этом есть в регламенте. например у БКС введено ограничение на не более 30 в секунду если больше то имеют право вообще отключить.
Это другие поборы, к биржевым не имеют отношения. Так, брокер возьмёт плату и за транзакции по стоп-заявкам, которые на биржу не выводятся.
Надо делать так, как надо. А как не надо - делать не надо.
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
Если у вас многоядерный комп, то main и колбэки будут работать параллельно.
Цитата
Николай Бехтерев написал: А что будет если замутить в коллБеке OnQuote( ) цикл while (пока заявка активна) do sendTransaction(убить заявку)
Тут надо включить мозг и подумать над написанным раннее:
Цитата
Старатель написал: вы не получите следующий колбэк, пока не закончите обрабатывать текущий. А чтобы получить новое состояние заявки - снята - терминал должен получить колбэк OnOrder с этим состоянием.
Все колбэки приходят последовательно.
Надо делать так, как надо. А как не надо - делать не надо.
Может кто уже мучился с лучшим BID, OFFER?!, Пытаюсь реализовать алгоритм выставления лучшими заявками...
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
09.04.2016 10:23:59
1. sleep в колбэке с большой долей вероятности приводит к зависанию скрипта и QUIK в целом. Поэтому, использовать sleep в колбэках опасно. 2. Даже если бы это было не так, вы не получите следующий колбэк, пока не закончите обрабатывать текущий. А чтобы получить новое состояние заявки - снята - терминал должен получить колбэк OnOrder с этим состоянием. Поэтому, после подачи транзакции на снятие заявки вам ничего не остаётся, как ждать следующего OnOrder с новыми флагами.
Надо делать так, как надо. А как не надо - делать не надо.
Как в LUA осуществить поиск файла в заданной папке с заданным именем ?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
08.04.2016 09:28:19
Файл может быть заблокирован другим приложением на чтение. А тем более на дозапись (параметр "r+").
Надо делать так, как надо. А как не надо - делать не надо.
Как в LUA осуществить поиск файла в заданной папке с заданным именем ?
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
08.04.2016 09:17:16
Цитата
Sergey Gorokhov написал: Если функция вернула nil значит файла не существует
Или он занят другим приложением.
Надо делать так, как надо. А как не надо - делать не надо.
Сортировка по дате исполнения в "Доске опционов"
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
04.04.2016 15:10:09
Цитата
Zoya Skvorcova написал: Старатель,Спасибо за объяснение. Именно так и проверяли на версиях 7.х. Сообщите, пожалуйста, полную версию QUIK, где проблема воспроизводится.
Проблема была в версии 6.17 В версии 7.0 проблема не воспроизводится.
Надо делать так, как надо. А как не надо - делать не надо.
Сортировка по дате исполнения в "Доске опционов"
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
04.04.2016 14:37:05
Фильтр не выполняет свои функции. Поставьте, к примеру, фильтр "меньше либо равно", и всё станет ясно.
Надо делать так, как надо. А как не надо - делать не надо.
Сортировка по дате исполнения в "Доске опционов"
Пользователь
Сообщений: Регистрация: 30.01.2015
Роботорговец
04.04.2016 10:10:39
В Доске опционов не обновляется параметр "До исполнения". Чтобы он обновился нужно вручную устанавливать параметры опционов. Пользовательский фильтр по параметру "До исполнения" не работает.
Надо делать так, как надо. А как не надо - делать не надо.