local status = getParamEx(class_code, sec_code, "tradingstatus")
message(status.param_value)
выводит "0.000000". Но мы уже наученные - понимаем, что ноль в QUIK - это не всегда ноль. Проверяем тип данных, чтобы не был равен 0:
Код
message(status.param_type)
выводит 2. Вроде, нормально. Ан, нет: для параметра "tradingstatus" тип должен быть 4. Значит данный параметр Квиком не получен. И так для многих параметров.
Но надо сделать так, чтобы можно было однозначно определить, без гаданий, получен ли параметр торговой системой или нет.
Надо делать так, как надо. А как не надо - делать не надо.
Добрый день. Правильно я понимаю, что параметры "Исходный номер" и "Стоп-заявка" в таблице заявок соответствуют параметру linkedorder? Как можно понять, что заявка выставлена именно при срабатывании стопа?
Надо делать так, как надо. А как не надо - делать не надо.
При отсутствии значения искомого параметра в ТТП всегда param_value = "0.000000" и param_image = "" ? Т.е., они не могут быть nil ни при каких обстоятельствах?
Надо делать так, как надо. А как не надо - делать не надо.
1) Сделайте при наведении курсором на график вывод в подсказке значений всех индикаторов на данном временном баре, а то порой бывает сложно "поймать" какой-то конкретный индикатор в месте пересечения с ценой.
2) А также на панели "Координаты курсора" при включённом перекрестии (и снятой галке "Показывать подсказку на свечке") опцию "Всегда показывать подсказку", при включении которой в левом верхнем углу диаграммы отображались бы значения всех индикаторов в месте пересечения с горизонтальной линией курсора (на всех панелях данной диаграммы).
Надо делать так, как надо. А как не надо - делать не надо.
1. Предлагаю добавить в фильтры возможность задавать условия сравнения не только с текущим значением в другой колонке, но сравнение значения по другой колонке с любым произвольным заданным значением.
2. Сделать возможность добавления ещё строк с условиями. А то 2-3 иногда не хватает.
Надо делать так, как надо. А как не надо - делать не надо.
Не помню, было такое пожелание или нет... Сделайте возможным из QLUA-скрипта, если не добавлять индикатор на диаграмму, то хотя бы управлять уже созданным индикатором: вызывать функцию Refresh, ту самую, которая вызывается при нажатии на кнопку "Сохранить" в настройках индикатора, а также изменить значения параметров таблицы Settings.
Надо делать так, как надо. А как не надо - делать не надо.
Возможно ли сделать в QUIK общее хранилище данных для обмена информацией между скриптами?
Я знаю, что есть стороннее решение. Но оно не удобно тем, что при обращении к объекту из общего "пространства имён" создаётся новый экземпляр объекта (вместо ссылки), что негативно сказывается на ресурсах.
Надо делать так, как надо. А как не надо - делать не надо.
Какую БД и библиотеку лучше использовать в Lua? Сейчас использую SQLite 3 через LuaSQL. Но есть проблемы при одновременном доступе к БД из разных потоков/скриптов даже при чтении.
Надо делать так, как надо. А как не надо - делать не надо.
Задача: Есть робот, торгующий по индикатору, рассчитываемому на основе графика цены. Нужно сделать контроль данных с графика на случай "потери" части свечей сервером (такое иногда случается). Кто как контролирует этот процесс? Или все полагаются на "авось"?
Надо делать так, как надо. А как не надо - делать не надо.
Как сделать, чтобы в окне ввода заявки в поле "Код клиента" отображались только те коды, которые соответствуют выбранному торговому счёту? И как сделать, чтобы, если выбранному торговому счёту соответствует только один код клиента, то этот код автоматически подставлялся в соответствующее поле?
Надо делать так, как надо. А как не надо - делать не надо.
Добрый день. Сделайте функцию "интеллектуального автомасштабирования" по оси Y графика с наложенным индикатором таким образом, чтобы в область диаграммы попадал график цены и правая часть индикатора. Чтобы было понятно:
Скрытый текст
По центру - текущая реализация автомасштабирования - график цены слишком сильно сжат. Справа - график масштабирован таким образом, чтобы в области диаграммы были видны график цены и правая часть индикатора
Надо делать так, как надо. А как не надо - делать не надо.
Задача: рассчитать индикатор по данным с графика. Устанавливаем колбек CreateDataSource(ClassCode, SecCode, Interval):SetUpdateCallback(fCB). В ответ приходят данные всех свечей с графика, по которым заполняем таблицу Candles[index].
Но! Если открыт график по данной бумаге, то в колбек приходят только данные с момента установки колбека.
Решение? (getCandlesByIndex не интересует)
Надо делать так, как надо. А как не надо - делать не надо.
Если в качестве цвета задана константа QTABLE_DEFAULT_COLOR, то используется цвет, заданный в цветовой схеме операционной системе Windows.
Цвет чего используется для фона в функции Highlight? Почему при использовании следующего кода цвет фона становится чёрным? Ведь видно, что по-умолчанию цвет фона белый:
В таблице всех сделок есть параметр "Время(мкс)", последние три цифры которого всегда равны нулю. Это у всех так или мой брокер что-то не обновил/не установил у себя?
Надо делать так, как надо. А как не надо - делать не надо.
Уберите, наконец, это ограничение на отображение максимум 3000 свечей. Неудобно анализировать историю на младших таймфреймах. При этом чтобы не грузить терминал пользователь может задать в настройках "Отображать последние x свечей", что уже реализовано.
Надо делать так, как надо. А как не надо - делать не надо.
При экспорте всех сделок в БД обнаружилось, что в один из торговых дней из архива "выпала" часть сделок в середине дня. Поэтому возникла необходимость проверки, все ли сделки закачаны. Для спота это можно проверить по параметрам "Кол-во сделок" и "Общее кол-во". Для ФОРТС сложнее: с вечерней сессии отсчёт начинается по-новой. Есть идеи, как проверить закачку всех сделок для ФОРТС?
Надо делать так, как надо. А как не надо - делать не надо.
Добавьте в настройки соединений параметр "При n неудачных попыток переключаться на другой сервер". А то приходится отключать возможность автоматического переключения, иначе при каждом "чихе" QUIK будет прыгать с одного сервера на другой и перекачивать все данные заново.
Надо делать так, как надо. А как не надо - делать не надо.
Задача: определить время начала интервала для заданного таймфрейма.
Код
function getTimeInterval(t, i)
i = i*60 -- переводим в минуты
return os.date('%d.%m.%Y %X', math.floor(t/i)*i)
end
local t = os.time({year=2015, month=02, day=10, hour=18, min=40, sec=20})
local i = 4*60 -- интервал 4 часа
print(getTimeInterval(t, i))
Но кажет не то время.
Надо делать так, как надо. А как не надо - делать не надо.
Перезаказать данные заново - Очистить полученные данные и заказать их заново Очистить все и начать новый сеанс - Очистить все накопленные данные и заказать их заново Перезаказать архив графиков - Очистить архив графиков и заказать заново данные с сервера
Описание довольно скудное. Не понятно, чем отличается "Очистить полученные данные и заказать их заново" и "Очистить все накопленные данные и заказать их заново". Поясните, пожалуйста, более подробно, что делает каждый пункт, какие настройки сбрасываются, какие файлы при этом очищаются/удаляются.
Надо делать так, как надо. А как не надо - делать не надо.
Прошёл почти год с момента обнаружения проблемы и отправки вам необходимой информации по данному вопросу. Ваша ИТС выдаёт неверные данные. Нужно выявить причину и устранить ошибку. Какие предприняты для этого меры?
Ответ типа "мы действительно не виноваты. Все необходимые данные для анализа мы передали специалистам биржи." не канает. Прошёл почти год. Ситуация не изменилась. Я ни за что не поверю, что в век информационных технологий вы отправили гонца с письмом пешком из Новосибирска в Москву, и по дороге в лесу его съели волки. Если "вы не виноваты", то нужно назначить "крайних" и пусть занимаются проблемой.
Надо делать так, как надо. А как не надо - делать не надо.
Могут ли списки кодов классов и кодов бумаг обновиться (добавиться новый класс или бумага) на клиентском месте в течение торговой сессии без переподключения к серверу?
Надо делать так, как надо. А как не надо - делать не надо.
Запускаем два скрипта: 1) Считаем количество всех сделок:
Код
function main()
local hID = AllocTable()
AddColumn(hID, 1, 'Количество', true, QTABLE_INT_TYPE, 13)
CreateWindow(hID)
InsertRow(hID, -1)
while bRun do
local nLen = getNumberOf('all_trades')
SetCell(hID, 1, 1, tostring(nLen), nLen)
sleep(100)
end
end
2) Заказываем все сделки:
Код
function main()
local sClassCode = 'QJSIM'
for sSecCode in string.gmatch(getClassSecurities(sClassCode), '([^,]*),') do
(CreateDataSource(sClassCode, sSecCode, INTERVAL_TICK)):SetEmptyCallback()
end
message('ТВС заказана', 2)
end
Через некоторое время QUIK падает с созданием дампа. После нескольких попыток все сделки наконец закачиваются в хранилище. Но при этом есть вероятность, что часть сделок теряется. Повторное переподключение к серверу не помогает. Помогает только удаление файла alltrade.dat с повторной закачкой данных.
Также удалось локализовать ошибку, когда все сделки заказываются только со 2-го вызова CreateDataSource: это происходит, если во время запуска QUIK инструмент уже находился в списке [ALL_TRADES_DATA] файла INFO.INI
Надо делать так, как надо. А как не надо - делать не надо.