Павел Иванов написал: Здравствуйте! При отображение подневных графиков наблюдается следующая картина (см. скриншот). Графики все одинаковые.
Добрый день.
По данной проблеме необходимо обратиться к брокеру. Перед этим выполните перезаказ данных и архива графиков через пункт меню Система - Заказ данных - Перезаказать данные.
maxl85 написал: Здравствуйте. Есть ли возможность изменить параметры линии тренда, которые установлены по умолчанию?. Необходимо, чтобы после рисования линии тренда на новом графике, не вызывать каждый раз окно настроек и устанавливать цвет линии и толщину
Добрый день.
Сделайте следующим образом. Постройте график, зайдите в настройки диаграммы/внешний вид, для трендов задайте нужное отображение, нажмите "применить". После на графике нажмите правой кнопкой мыши/шаблоны/сделать шаблоном - сохраните в отдельный шаблон, выберите его по умолчанию. Далее перезагрузите QUIK.
Печагина написал: помогите понять. у меня в квике есть торговый счёт. недавно открыла ИИС. как добавить его в программу ?
Добрый день.
Проверьте счет в пункте меню Система - Настройки - Основные настройки - Торговля - Настройка счетов, убедитесь, что торговый счет присутствует в доступных (слева), добавьте его в выбранные (справа) Если в этом разделе торгового счета нет, то необходимо обратиться к брокеру.
Цитата
У меня такая же проблема. Завел в Финам ИИС, оказалось, что основной счет и ИИС расположены на разных платформах. Например, могу я установить два QUIK и работать с ними одновременно в Финам, но в разных платформах.
Здравствуйте,
Если две разные пары ключей, то да, одновременно сможете.
Вопрос к разработчикам: Вы можете предложить надёжный способ убедиться, что getParamEx даёт действительно последнюю цену инструмента, а не её отсутствие?
Добрый день.
Мы Вас поняли. Можем предложить вариант сравнивать с параметром "время последней сделки". Если цена ноль, а время последней сделки есть, то да цена ноль, если нет, то цена отсутствует.
petrovichpas написал: Всем привет! Подскажите начинающему, какую команду добавить в код робота, чтобы получить текущую цену фьючерса из квик ?
Добрый день.
Для этого Вам необходимо воспользоваться функцией getParamEx. Функция предназначена для получения значений всех параметров биржевой информации из Таблицы текущих торгов.
Если работу с Qpile портфеля, то пункт меню Сервисы/Qpile скрипты, если Вам нужен клиентский портфель, то раздел "Создать окно - Настроить меню" и из левой области добавляете нужную таблицу в правую.
Николай Камынин написал: Быстрее будет, если вместо поиска свечки назад, просто запоминать индекс последней существующей свечки. При отсутствии свечки брать сохраненный индекс.
Возможно, но не всегда надо именно прошлую свечку. Часто надо -3, -2. Так что просто запоминать будет та еще конструкция. А эта функция универсальна, получив индекс бери любое значение свечи.
Хотелось бы иметь "железную" функцию получения ближайшей существующей свечи к идексу вниз и вверх.
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Алексей Злобин написал: Добрый день! Есть бот ,работающий в Quik (ОС Windows),а есть запущенный в виртуальной Windows(основная ОС Mac). Так вот у второго бота есть особенность.Функция отправки транзакции возвращает nil trans_i=nil и res=nil,но при этом транзакция проходит и заявка выставляется на бирже.У первого бота все нормально.В чем проблема где "копать"?
Добрый день.
Алексей, давайте посмотрим на код робота, пока затруднимся дать точный ответ.
Старатель написал: Причина остановки скриптов, видимо в том, что используются QLua-таблицы с колбэком
Код
SetTableNotificationCallback (ID, function (t_id, msg, par1, par2) if msg = = QTABLE_CLOSE then OnStop() end end )
Но это не объясняет, почему самопроизвольно закрываются QLua-таблицы.
Здравствуйте,
Старатель, спасибо за пояснения, теперь вопрос стал более понятен. Данное поведение связано с внутренней архитектурой, то что вы описываете действительно так должно работать.
мы попробовали воспроизвести. Что делали. Подключились к серверу, запустили скрипт, скрипт работает, отключились от сервера, закрыли QUIK, запустили, подключились, система предложила заменить инструменты, при замене скрипт остался в положении "запущен".
Опишите свой ход действий, сообщите версию QUIK, будет хорошо если выложите свой скрипт.
Здравствуйте, если в стакане QUIK вы вы видите также по 20, то предполагаем, что проблема не на стороне брокера. Вопрос нужно исследовать. Сообщите версию рабочего места QUIK, пришлите Ваш скрипт и рынок на котором наблюдается проблема.
Анатолий написал: еобходимо, чтобы при перемещении графика по вертикальной шкале, значения графика по оси и свечи не менялись в отображении? Т.е график был статичен?
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Анатолий написал: Да. Требуется именно это. Зарегистрируйте, пожалуйста, пожелание добавить такую возможность.
Анатолий, давайте уточним, правильно понимаем, Вам необходимо, чтобы при перемещении графика по вертикальной шкале, значения графика по оси и свечи не менялись в отображении? Т.е график был статичен?
Григорий Батраченко написал: Добрый день, подскажите пожалуйста, возможно ли в программе видеть склейку фьючерсных контрактов??? Проводя анализ рынка, хочется видеть полную картинку а не 3 месяца.
Здравствуйте,
Такой возможности в текущей версии QUIK нет, однако "склеить" фьючерсы может брокер на стороне сервера. Можете обратиться к нему.
Григорий Батраченко написал: Добрый день! Подскажите пожалуйста когда в программе квик появится возможность смотреть горизонтальные объёмы????? Так называемые профиль рынка
Здравствуйте,
Такие пожелания есть, но назвать сроков по реализации пожеланий мы, к сожалению, не можем. Следите за новостями на сайте.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Александр написал: Спасибо! Прилагаю скрин. Настройка стоит. Версия 7.5.0.72
Здравствуйте, У Вас неверно строится график, в том плане, что сейчас строится по таблице всех сделок (график цены и объема), а должен по "индикативной котировке". Просьба нам на quiksupport@arqatech.com прислать файл INFO.INI от рабочего места QUIK.
1. Версию рабочего места QUIK. 2. График индикативной котировки. Просьба сделать его скриншот и выложить здесь, скриншот нужно сделать полностью всего окна с графиком. Проверьте еще настройку: Зайдите в пункт меню Система/Настройки/Основные/Программа/Сохранение данных/ и выберите пункты "Данные, отражающие текущее состояние и всю историю изменений» и «Получать пропущенные данные
Егор Масалкин написал: Здравствуйте! Пишу торгового робота. При запуске появляется ошибка в терминале:
"TransOpenPos(): Error: Не указано значение поля "К/П" "
Что такое это неизвестное "К/П"?
Здравствуйте,
Это направление транзакции. Покупка/Продажа. Откройте форму ввода заявки и посмотрите, как у Вас обозначено направление заявки. Именно так и нужно указать. Т.е если Купля, то в роботе указываете Купля, а не Покупка.
То есть если у меня написано "Покупка", то в строке отправки заявки ['OPERATION'] = Соответственно указываем "Покупка" или "Продажа", верно?
Да, если транзакция записывается в универсальном виде, если используется примеры из документации на QUIK, то нужно писать «S» – продать, «B» – купить. Выложите свой код транзакции, мы посмотрим и скажем точно.
Егор Масалкин написал: Здравствуйте! Пишу торгового робота. При запуске появляется ошибка в терминале:
"TransOpenPos(): Error: Не указано значение поля "К/П" "
Что такое это неизвестное "К/П"?
Здравствуйте,
Это направление транзакции. Покупка/Продажа. Откройте форму ввода заявки и посмотрите, как у Вас обозначено направление заявки. Именно так и нужно указать. Т.е если Купля, то в роботе указываете Купля, а не Покупка.
Алексей написал: Обнаружилось, что QUIK ищет скрипты индикаторов не только в самой папке LuaIndicators, но и во всех её подпапках. Хотелось бы, чтобы на это было обращено внимание начинающих пользователей в руководстве по эксплуатации QLua, что бы предостеречь их от пустой траты времени.
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Цитата
Где-то я встречал на просторах форума жалобы пользователей на тормоза quika при вызове контекстного меню в окнах графиков, а также на старте терминала, но не видел от технической поддержки внятных комментариев по этому поводу.
С каждым случаем нужно разбираться. Если у Вас проявляются вами описанные проблемы, то сообщите версию рабочего места QUIK, а также опишите, тормоза именно при запуске QUIK или при старте после подключения к серверу QUIK ?
Юрий Балашов написал: Для оптимизации работы робота хотелось бы узнать в какой очередности данные поступают в различные таблицы Квика и насколько (в % или млсек) отличается скорость постановки этих данных? Интересуют следующие таблицы: "стакан" Таблица заявок Текущая таблица параметров Позиции по клиентским счетам Таблица лимитов по бумагам Таблица транзакций Таблица лимитов по денежным средствам Ограничения по клиентским счетам
В свободном доступе я этой информации не нашел. С уважением
Здравствуйте,
К сожалению мы не можем предоставить Вам однозначную схему приоритезации и синхронизации разных потоков торговой информации. В общих чертах, как правило соблюдается следующий порядок рассылки на клиентские места QUIK — таблица текущих параметров, котировки, собственные сделки, заявки, стоп-заявки, лимиты, графики, обезличенные сделки.
Скорее всего здесь вышла некоторая заминка конкретного пожелания по поводу привязки трендов. В данном случае пожелание есть, а с отвергнутым мы сейчас разберемся.
sandyman написал: Зачем? У меня сейчас так: таблица + 3 графика на разные таймфреймы (5M, 60M, D + возможно ещё 1M) - всё заякорено и при смене инструмента в таблице на графиках инструмент также меняется.
Не знал о такой функции как "якорение". А можете поподробнее рассказать как это делается? О какой таблице идет речь? и как график привязать к этой таблице? Заранее спасибо!
sandyman написал: Как спасут вкладки если у меня инструментов в ежедневной работе почти 60 и каждому нужно ещё и по 3-4 таймфрейма?
Так в этом и вопрос : вы что на каждом таймфрейме будете 60 раз менять код бумаги?
Тогда уж надо делать такую заявку: сделать возможность замены кода бумаги во всех окнах одной вкладки! При этом чтобы список инструментов (кодов бумаг) был настраиваемый и выпадал из того списка, который где-то можно задать. Желательно чтобы этот "выбор кода бумаги" был расположен в верхней панели, где и все важные кнопки. Просьба зарегистрировать это пожелание к доработке. Заранее спасибо!
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
_JJ_ написал: При изменении инструмента на графике (без разницы как - через редактирование или через выбор инструмента в таблице текущих значений) все графические построения относящиеся к какому-либо инструменту переходят и на график нового инструмента, т.е. эти построения привязаны к окну графика, а не как это было бы логично и необходимо трейдерам - к конкретному инструменту. Зайдя на форум в надежде найти простой способ это исправить, я понял, что такое поведение рассматривается разработчиками программы как норма. Вы серьёзно? В этой связи хотелось бы обратиться к разработчикам с просьбой немедленно исправить это недоразумение. Пользовался или просто знакомился, наверное, с дюжиной различных терминалов и программ ТА, но такой дикости не встречал! Мне что на каждый инструмент свой график делать? Так их у меня не одна сотня будет - программа-то и так не сильно шустрая, а тут ещё это...
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Как правильно указывать параметр: "bid" или "BID", или без разницы?
Правильно "bid"
Цитата
Эти наименования параметров подходят для Param в CreateDataSource? Этот список исчерпывающий?
Да. Полный список можете получить самостоятельно. Для этого открываете таблицу текущих торгов, экспортируете ее по DDE с "формальными заголовками" и получает перечень нужных параметров.
Проблема проявляется постоянно, т.е при каждой попытке экспорта или периодически? Дополнительно создайте в директории с QUIK файл quik_metastock.log, в него будут записываться операции экспорта данных в системы тех анализа, после повторения проблемы пришлите данный файл на quiksupport@arqatech.com
Надо нажать "вывод" убедиться, что данные не поступаю, проверить файл quik_metastock.log, если он не пустой, то пришлите его.
Старатель написал: Предлагаю модифицировать функцию getDataSourceInfo: добавить необязательный параметр: STRING Tag и сделать функцию доступной как в индикаторах так и в обычных скриптах. При задании параметра функция будет возвращать параметры графика с идентификатором Tag.
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Старатель написал: Добавьте, пожалуйста, для Lua-таблиц возможность работать в режиме связанных окон. Скажем, функцией SetLink(t_id, row, class_code, sec_code) устанавливаем, какой инструмент будет передаваться при выделении строки с номером row в связанные окна.
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Старатель написал: Stanislav Tvorogov , ничего никуда отправлять не нужно. Эффект вполне воспроизводится на любом рабочем месте при подключении как к боевому, так и демо серверу с дефолтными настройками (удалены все dat, log, ini файлы). А проблема заключается в том, что активация кнопок завязана на обновление таблицы котировок после того как отобразится своя заявка в стакане. На следующее обновление таблицы, карл. Поэкспериментируйте на неликвидной бумаге, и вы увидите, что кнопки "Снять выделенную заявку" и "Заменить выделенную заявку" никогда не активируются в стакане. Только если второй раз кликнуть по своей заявке. Более того, после снятия заявки той же кнопкой "Снять выделенную заявку" кнопки не перестают быть активными. Специально для вас: поиграйте с "Химпром ап" на демке. Если же вы будете настаивать, что у вас де не воспроизводится, выложите сюда видео, как вы воспроизводили. Я не верю, что вы что-то делали вообще.
Stanislav Tvorogov , я сделал за вас всю работу! Вам осталось только отправить моё сообщение программистам, чтобы они поправили в коде: сделали активацию/деактивацию кнопок одновременно с отображением/снятием своей заявки в стакане.
Добрый день,
Описанная в данном инциденте проблема была устранена в версии 7.7.0 терминала QUIK. Рекомендуем Вам обновить версию программы.
Денис Лесных написал: Здравствуйте! Может ли кто-нибудь подсказать, почему у меня параметр "Доходность по предыдущей оценке" (идентификатор YIELDATPREVWAPRICE) показывает в моей таблице нули по всем облигациям? (В коде строка №17) Заранее спасибо!
Код:
Код
PORTFOLIO_EX BOND_YIELDS_TEST1;
DESCRIPTION Доходность облигаций тест;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST MC0061900000;
PROGRAM
delete_all_items()
brd = "EQOB"
BondCodeList = get_class_securities(brd)
mymap = CREATE_MAP()
k = 0
FOR m in BondCodeList
sname = get_value(get_param_ex(brd, m, "LONGNAME" ), "PARAM_IMAGE" )
snominal = get_value(get_param_ex(brd, m, "SEC_FACE_VALUE" ), "PARAM_VALUE" ) + 0
sYieldEstim = get_value(get_param_ex(brd, m, "YIELDATPREVWAPRICE" ), "PARAM_VALUE" ) + 0
mymap = SET_VALUE(mymap, "sname" , sname)
mymap = SET_VALUE(mymap, "snominal" , snominal)
mymap = SET_VALUE(mymap, "sYieldEstim" , sYieldEstim)
add_item ( 1 , mymap)
k = k + 1
END FOR
END_PROGRAM
PARAMETER sname;
PARAMETER_TITLE Название;
PARAMETER_DESCRIPTION Полное название бумаги;
PARAMETER_TYPE STRING( 40 );
END
PARAMETER snominal;
PARAMETER_TITLE Номинал;
PARAMETER_DESCRIPTION Номинал бумаги;
PARAMETER_TYPE NUMERIC( 10 , 2 );
END
PARAMETER sYieldEstim;
PARAMETER_TITLE Доход.пред.оц.;
PARAMETER_DESCRIPTION Доходность по предыдущей оценке;
PARAMETER_TYPE NUMERIC( 10 , 2 );
END
END_PORTFOLIO_EX
Добрый день,
Описанная в данном инциденте проблема была устранена в версии 7.7.0 терминала QUIK. Рекомендуем Вам обновить версию программы.
SG написал: Если функцию sendTransaction вызвать одновременно из двух потоков - один вызов из main, а другой из функции обратного вызова, то на корректную транзакцию может прийти ответ с ошибкой "Неверный формат заявки".
Ниже приведён скрипт, воспроизводящий проблему. В нём нужно перед запуском заменить номер счёта в первой строке. Для появления ошибки может потребоваться несколько запусков скрипта.
В терминале версии 7.2.2.3 ошибки не было. В версиях 7.4, 7.5 и 7.6 ошибка есть.
Скрипт: Скрытый текст
Код
local accountName = "SPBFUT00000" -- заменить на правильный номер счёта
local classCode = "SPBFUT"
local secCode = "SRZ6"
local priceMin = nil
local logFile = nil
local running = true
local testStarted = false
local activeOrders = {}
function Log ( message )
if logFile ~ = nil then
local timestamp = os.date ( "[%Y-%m-%d %X]" )
logFile:write(timestamp .. " " .. message .. "\n" )
logFile:flush()
end
end
function LogTable ( message , tbl)
local res = {}
for key, value in pairs(tbl) do
local vtype = type(value)
if vtype = = "nil" then
res[ # res + 1 ] = key .. " = <nil>"
elseif vtype = = "number" then
res[ # res + 1 ] = key .. " = " .. value
elseif vtype = = "string" then
res[ # res + 1 ] = key .. " = " .. string.format ( "%q" , value)
else
res[ # res + 1 ] = key .. " = ?"
end
end
Log( message .. table.concat (res, "; " ))
end
function PlaceOrders (price, count, id)
for i = 1 , count do
local transaction = {
[ "ACTION" ] = "NEW_ORDER" ,
[ "CLASSCODE" ] = classCode,
[ "SECCODE" ] = secCode,
[ "ACCOUNT" ] = accountName,
[ "OPERATION" ] = "B" ,
[ "PRICE" ] = tostring(price),
[ "QUANTITY" ] = "1" ,
[ "TRANS_ID" ] = tostring(id),
}
LogTable( "Placing order: " , transaction)
local message = sendTransaction (transaction)
Log( "Result: " .. id .. ", [" .. message .. "]" )
id = id + 1
end
end
function CancelOrders (id)
for ordernum, value in pairs(activeOrders) do
local transaction = {
[ "ACTION" ] = "KILL_ORDER" ,
[ "CLASSCODE" ] = classCode,
[ "SECCODE" ] = secCode,
[ "ORDER_KEY" ] = tostring(ordernum),
[ "TRANS_ID" ] = tostring(id),
}
LogTable( "Cancelling order: " , transaction)
local message = sendTransaction (transaction)
Log( "Result: " .. id .. ", [" .. message .. "]" )
id = id + 1
end
end
function OnTransReply (transaction)
LogTable( "OnTransReply: " , transaction)
if not testStarted then
-- этот код вызывается только один раз для старта теста
Log( "Starting test" )
testStarted = true
-- ставим тестовые заявки
PlaceOrders(priceMin, 5 , 3000 )
end
if transaction.status = = 3 then
activeOrders[transaction.order_num] = true
else
-- если попали сюда, значит произошла ошибка
Log( "ERROR: " .. transaction.result_msg)
end
end
function OnStop ()
running = false
end
function GetPriceMin ()
local param = getParamEx (classCode, secCode, "pricemin" )
if param = = nil or param.result ~ = "1" then
return 0
end
local value = tonumber(param.param_value)
if value = = nil then
return 0
end
Log( "pricemin = " .. value)
return value
end
function OnInit (scriptName)
logFile = io.open (scriptName .. ".log" , "at" )
end
function main ()
-- получаем нижний лимит цены
priceMin = GetPriceMin()
while running and priceMin = = 0 do
sleep ( 100 )
priceMin = GetPriceMin()
end
-- отправляем первую заявку
PlaceOrders(priceMin, 1 , 1000 )
-- активное ожидание начала теста
while not testStarted do
end
-- ставим тестовые заявки
PlaceOrders(priceMin, 5 , 2000 )
-- ждём исполнение всех транзакций
sleep ( 2000 )
-- снимаем все заявки
CancelOrders( 4000 )
-- ждём исполнение всех транзакций
sleep ( 2000 )
logFile:close()
logFile = nil
end
Добрый день,
Описанная в данном инциденте проблема была устранена в версии 7.7.0 терминала QUIK. Рекомендуем Вам обновить версию программы.
Павел Щербаков написал: Добрый, подскажите, пожалуйста, можно ли используя TRANS2QUIK 1.3 получить обезличенные сделки? Например, используя TRANS2QUIK_SUBSCRIBE_TRADES, но только не свои, а обезличенные.
5. Привязка (якорение) графиков, стаконов и пр. к таблице состояние счёта. Хочется иметь возможность привязать переключение графика к текущему инструменту в таблице состояния счёта, так же как и в таблице текущих торгов. Было бы удобно быстро посмотреть графики по тем позициям которые у тебя открыты. Не приходилось бы создавать отдельную таблицу текущих торгов, где только те инструменты, по которым есть открытые позиции и постоянно её поддерживать в актуальном состоянии.
Спасибо.
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.