Уточните пожалуйста, почему для Ваших целей не подходит сохранение/загрузка файла настроек (info.wnd)?
Цитата
Максим написал: Было бы неплохо иметь возможность отдельно сохранить и восстановить: настройки конкретной таблицы по типу, шаблоны стаканов, состояние вкладки (открытые таблицы с их настройками).
Первое и второе можно перенести (отдельно) как раз при помощи файла настроек:
Вкладки также переносятся в .wnd файле, но, при желании, их можно перенести и без него - "сохранить вкладку в файл/загрузить вкладку из файла" в контекстном меню вкладки.
Здравствуйте, Не подходит по причине пункта 2. У меня всё настроено и работает, я не хочу закрывать всё ради переноса настроек одной таблицы. Про вкладки спасибо, слона не приметил. Этого хватит, можно ничего не регистрировать.
Здравствуйте, Возникла потребность скопировать настройки таблиц из одного квика в другой. info.wnd для этих целей не подходит. Руками все настройки копировать - то ещё удовольствие. Было бы неплохо иметь возможность отдельно сохранить и восстановить: настройки конкретной таблицы по типу, шаблоны стаканов, состояние вкладки (открытые таблицы с их настройками).
В настройках Программа/Получение данных есть опция по добавлению нового инструмента во все таблицы. Это неудобно, когда есть таблица, в которую добавлен ограниченный круг инструментов, а следом в неё начинает прилетать всякий мусор. Предложение: либо сделать эту галку на каждой конкретной таблице, а не глобально, либо сделать возможность зафиксировать набор инструментов в таблице и не добавлять автоматически туда ничего.
Это как раз не на практике, а бла-бла заинтересованных лиц. На практике ядро циркон написал один человек достаточно быстро, гуголь потом на нем фуксию налепил (опять по привычке выкачав весь гитхаб со всем мусором и списав на это баблеца, но это уже другая история). Затем, сама идея делать ось на все существующее железо - провальная, надо делать платформу на конкретных деталях и под нее пилить конкретную ось с конкретными драйверами, главное тут зафиксировать апи оси и придерживаться его в дальнейшем, а не менять в каждой минорной версии. И все, будет щасте. Конкретно для рф по шагам: поддержать байкал-м, на нем сделать линейку плат по типу хоть бы малины, под платы разработать ось, опубликовать апи и сдк, портировать несколько приложений, файрфокс там, ллвм, еще что-то. И все, полетит штуковина, если ценник не ломить (продотировать из бюджета по первому времени).
Ну да, ну да. Все в интернете знают сколько стоит разработать софт кроме тех в Ростелекоме и этих заинтересованных (чем?) в Вики.
новичок написал: куда розтелеком якобы вбухал 9 ярдов
Примерно 2500 человеко-лет хорошего программиста. По идее, за этот бюджет должны были сделать свой компилятор, свой рантайм, свое ядро и весь софт тоже свой.
Та же ерунда, только версия 7.26.0.26, раз в неделю и под wine. Один раз OOM killer грохнул, сегодня некий unhandled exception случился, логов не сохранилось где именно. В директории 'dmp' без изменений. Запустите квик сами, подключитесь к настоящему брокеру, дождитесь падения и будет вам архив рабочего места.
Максим написал: Есть ли какая-то разница между Quik Junior, скачанным с вашего сайта, и Quik, полученным от брокера? Кроме ip.cfg, конечно? https://smart-lab.ru/blog/513482.php тут говорят, что есть, но не помнят в чём.
Абсолютно ничем не отличается. Текст написанный по ссылке на смартлабе полная чушь. Если версии идентичны, и (как я вижу в каментах на СМ) даже сравнились хеши модулей, очевидно что это тот же самый квик ;)
Конечно же настройки могут быть различны. И набор плагинов да. Другой вопрос, что серверная часть демо-квика и боевого могут быть разными и настроены по-разному. Но к терминалу это никакого отношения не имеет.
Вот мне тоже показалось, что разницы в коде быть не должно, край - настройки (потому только от кода и взял md5). На Смарте к демо-серверу подключаются и говорят есть разница чем подключаться.
Alexandr Shumilin написал: Добрый день! Функционально учебный терминал и "боевой" от брокера идентичны. Возможная разница - "боевой" терминал от брокера может быть дополнен различными модулями, такмими как модуль опционного аналитика, модуль торговли корзинами и.т.п., Т.е. функциональность может быть расширена. Мы ознакомились с тем , что приведено по ссылке - действительно написанно несколько туманно, поэтому постараемся привнести ясность. Функционального ограничения на торговые терминалы Quik на учебном сервере никогда не накладывалось - котировки не прореживаются, всё как на боевом сервере. Вот волатильность торгов на учебном сервере, динамика может легко отличаться от аналогичного в реальной жизни. Для большинства пользователей это не имеет существенного значания, но для некоторых пользователей, кто использует игровой сервер для отладки роботов иногда может быть важным фактором.
Здравствуйте, Есть ли какая-то разница между Quik Junior, скачанным с вашего сайта, и Quik, полученным от брокера? Кроме ip.cfg, конечно? https://smart-lab.ru/blog/513482.php тут говорят, что есть, но не помнят в чём. Хотелось бы знать - стоит так же заморачиваться (ставить отдельно боевой и давать ему настройки демо) или нет?
Алексей Дуванов написал: у меня такое недавно было с Открытием. вылечилось, не поверите! - сменой сервера, к которому присоединяюсь. поперебирал их в списке.
Когда столкнулся с проблемой, тоже попробовал переподключиться, правда, только к одному серверу - не помогло. Сегодня перебрал все из списка доступных, так ничего и не починилось. Тоже Открытие, версия 7.12.1.10, запускаю в Wine под Linux. У поддержки с моим архивом проблем нет, рекомендовали попробовать на Маке. Попробовал - там работает. Но сломалось-то на Линуксе. Пока сервера перебирал, обратил внимание, что один из них предлагал квик обновить. Скачал 7.14.1.7 с сайта брокера, поставил в отдельный WINEPREFIX - пофиг, пустые списки. В общем, видимо в моём случае что-то не дружит у квика с вайном именно под линуксом.
Максим. Я нашел Вашу проблему. У Вас установлен вайн выше релиза 3.0! Я сейчас поставил 3.4 (winehq-devel) точно так же себя проявляет квик как Вы описываете. Поставьте релиз 3.0 и всё у Вас будет работать. Кроме тех косяков, что я описывал здесь https://forum.quik.ru/messages/forum1/message29981/topic3509/#message29981 это несовместимость comctl32 в 3 ветке вайна.
Действительно, запуск 'winetricks comctl32' решил проблему. Благодарю! Стандартные диалоги пашут норм, но тема светлая. Тёмная при появлении не взлетела, я её и вырубил в info.ini theme=0.
Алексей Дуванов написал: у меня такое недавно было с Открытием. вылечилось, не поверите! - сменой сервера, к которому присоединяюсь. поперебирал их в списке.
Когда столкнулся с проблемой, тоже попробовал переподключиться, правда, только к одному серверу - не помогло. Сегодня перебрал все из списка доступных, так ничего и не починилось. Тоже Открытие, версия 7.12.1.10, запускаю в Wine под Linux. У поддержки с моим архивом проблем нет, рекомендовали попробовать на Маке. Попробовал - там работает. Но сломалось-то на Линуксе. Пока сервера перебирал, обратил внимание, что один из них предлагал квик обновить. Скачал 7.14.1.7 с сайта брокера, поставил в отдельный WINEPREFIX - пофиг, пустые списки. В общем, видимо в моём случае что-то не дружит у квика с вайном именно под линуксом.
Были перенесены. Попробовал их перенести в "Доступные", сохранил, перенёс опять в "Выбранные" - все равно списки счетов и кодов клиента в форме заявки пустые.
Если есть доступ к скриптам, то надёжней будет нечто вроде global_trans_id = trans_id * 10 + robot_id trans_id = trans_id + 1
Если роботов до 10 включительно - умножаем trans_id на 10, до 100 - на 100 и т.д.
Ну и разбирать обратно это проще простого, пришёл ответ на транзакцию с global_trans_id - берём остаток от деления на 10 (100, 1000, etc) и обрабатываем только если совпадает с текущим robot_id.
В кои-то веки решил запульнуть заявку руками, а в форме ввода заявки куда-то пропал список кодов клиента и торговых счетов (поле для ввода данных есть, значений в выпадающем списке нет). Раньше было. Когда пропало - не знаю, т.к. давно не делал ручных заявок. Пробовал менять настройки формы ввода - ничего не помогло. Заполнил поля сам, всё сработало, заявка ушла. Как вернуть списки?
Фёдор Сухов написал: Вы про какую сейчас версию Квика пишете?
Добрый день. Речь шла о 7 версии терминала и выше.
Попробовал 7.4.0.79, правда на демо, может на реальном счёте иначе будет. Вот скрипт
Код
local stopped = false
local f = io.open(getScriptPath() .. "\\alltrades.log", "w")
function OnAllTrade(trade)
f:write(trade.trade_num .. "\n")
end
function OnStop(signal)
stopped = true
end
function main()
while not stopped do
sleep(100)
end
end
если все остальные скрипты остановлены и ТВС закрыта - в файле alltrades.log ничего не появляется. При этом в настройках "Получение данных" выбрано "С учётом настроек лалала". В "Система/Заказ данных" для котировок и сделок выбраны все инструменты.
Но стоит открыть ТВС хоть для одного инструмента - в файле начинают появляться записи.
Хотелось бы в списке доступных соединений иметь возможность игнорировать некоторые сервера, не удаляя их навсегда. Просто галочка "выкл" и он в списке есть, а подключаться к нему не пытаемся.
Можно ли в таком случае добавить в таблицу depo_limits что-то из следующего: 1. либо поле вроде balance_in_lots=true/false, и lot_size=XXX (т.к. например у SMAL&TQBR для одной и той же бумаги разные размеры лота, надо знать какой именно используется в депо) 2. либо продублировать currentbal полем currentbal_items где всегда выдавать штуки.
Покупаем 1 лот QJSIM/SBER (lot_size=10), смотрим в луа на содержимое depo_limits. Видим currentbal=1. У брокера показывается в штуках, т.е. currentbal=10. И это логично, т.к. понятие размер лота применимо к торгам (e.g. TQBR vs SMAL), а не депозиту. Может ли у какого-то другого брокера qlua так же возвращать депо в неких лотах или это только на демо так? Если это глюк демо, то можно ли его исправить? Если не глюк или исправить нельзя, то откуда брать размер тех лотов, которые фигурируют в depo_limits?
А 64-битный квик планируется? Странно выпускать продукты, которые должны работать друг с другом на одном хосте, но при этом имеют разные разрядности. Ну или дайте из квика не пайп, а сокет и раскройте протокол - каждый сам себе какую хочет trans2quik напишет.
В общем, если возможно, просьба зарегистрировать хотя бы одно из пожеланий: 1. 32битный trans2quik 1.3+ 2. 64битный квик 3. Открытую альтернативу trans2quik через сокет
Максим написал: Егор, речь про 32-битную версию библиотеки 1.3. Можно ли её выложить? 'double orderNum' - да, про колбеки, напрягает такое использование типа, а в 1.3 это исправлено.
32 битной версии нет. Если у Вас QUIK версии 7.0 и выше, можете устанавливать 64битную версию.
Не могу, т.к. окружение всё 32 битное. И библиотека загружается в контексте 32 битного приложения.
Егор, речь про 32-битную версию библиотеки 1.3. Можно ли её выложить? 'double orderNum' - да, про колбеки, напрягает такое использование типа, а в 1.3 это исправлено.
Imersio Arrigo написал: А в чем именно "крещение"? Темная тема не работает под wine-ом. Виснет на старте. А в светлой все нормально.
Ну вот в этом и вопрос - сделать, чтоб тёмная тоже работала. Сейчас выходит так, что скачал дистриб квика, поставил с нуля и пойди догадайся почему оно не работает. Если следом они и со светлой что-то сделают - вообще печально будет.
А почему не сделали сабж, только 64-битную сборку? Можно восстановить справедливость? Не очень-то прикольно получать 'double orderNum' в 1.2, да и новые функции в 1.3 хотелось бы посмотреть в деле. А ещё это, скажите вашему отделу по средним ценам, что они сокр. называются "avg", а не "awg"
У кого-то получилось скрестить? Единственный способ, что нашёл, это в info.ini либо удалить 'theme=1', либо заменить на 'theme=0'. Но хотелось бы более надёжный вариант, на случай если с очередным обновлением и стандартную тему поломают.
Когда удалённо подключаешься к квику из-за медленной отрисовки иногда вместо переключения между вкладками они перетаскиваются. Можно сделать опцию "закрепить вкладки", чтоб их нельзя было таскать пока она включена?
Максим пишет: Отлично, теперь эта проблема и у брокера вылезла (Открытие). Видимо он обновил серверную часть? Предлагает обновить терминал до 6.17.3, но я как-то привык сперва проверить новую версию на демо, убедиться что опять что-то не сломали. Но там 6.17.1.17 и обновиться не предлагает. Можно туда 6.17.3 выложить?
Добрый день,
Для получения версии рабочего места QUIK 6.17.3 необходимо направить запрос нам на почту: quiksupport@arqatech.com Обращаем внимание, что данная ошибка будет исправлена в одной из следующих версий программы.
Просьба зарегистрировать пожелание пересмотреть процесс выпуска новых версий терминала в сторону более раннего их обновления на демо, а уж потом рассылать брокерам. Причина описана выше. Тем, у кого такая же проблема, вот временное решение (уж не знаю в чём сложность это исправить в той же 6.17.3):
Код
function getFuturesLimitFixed(firmid, accountid, limit_type)
local ret = getFuturesLimit(firmid, accountid, limit_type)
if ret ~= nil then
return ret
end
for i = 0, getNumberOf('futures_client_limits') - 1 do
local entry = getItem('futures_client_limits', i)
if entry.firmid == firmid and entry.trdaccid == accountid and entry.limit_type == limit_type then
return entry
end
end
return nil
end
Отлично, теперь эта проблема и у брокера вылезла (Открытие). Видимо он обновил серверную часть? Предлагает обновить терминал до 6.17.3, но я как-то привык сперва проверить новую версию на демо, убедиться что опять что-то не сломали. Но там 6.17.1.17 и обновиться не предлагает. Можно туда 6.17.3 выложить?
Максим пишет: В Блумберг-терминале можно делать арифметические операции с графиками. Например, цену нефти в долларах умножить на курс доллар-рубль. Можете и себе такое прикрутить.
Добрый день.
Если есть навыки программирования, то данную задачу можно решить при помощи LUA.
Вы уж определитесь, кто является целевой аудиторией ваших терминалов =) Программисты, трейдеры, трейдеры-программисты или ещё кто.
В Блумберг-терминале можно делать арифметические операции с графиками. Например, цену нефти в долларах умножить на курс доллар-рубль. Можете и себе такое прикрутить.
Создаю, например, ТТП и график с привязкой. Потом ещё график, ещё какое-нибудь окно. И вот встаёт задача занять ими всё возможное пространство, благо есть опции "Окна/Чем-нибудь". Хотелось бы, чтоб была возможность и без того висящие поверх других окна исключить из этой интересной процедуры. Они ж все равно сверху. Хотя бы сделать такое поведение настраиваемым.
Предложение номер два - сделать окна фиксированной высоты, ширины или обоих размеров сразу (т.е. я ручками размер подогнал, тыкаю в контекстном меню "зафиксировать высоту"). Тогда всякие таблицы вроде ограничений по счетам при упорядочивании не будут занимать совершенно ненужное им пространство.
Короче, основная идея - иметь возможность пользоваться функцией автоподгона размеров и координат без печальных последствий вроде неэффективного использования полученного пространства. Может в этом контексте ещё какие идеи у кого-то будут.
На брокерском счёте такой проблемы нет, на демо же, несмотря на то, что в таблице futures_client_limits присутствуют три записи с limit_type=0,3,4, функция getFuturesLimit возвращает только последние две, вместо первое возвращает nil. Т.е. вызов
getFuturesLimit("SPBFUT000000", "SPBFUT00981", 0)
на демо не работает. Не то, чтобы это сильно нужно, но как-то неаккуратненько.
Michael Bulychev пишет: Добрый день. OnQuote вызывается на каждое изменение стакана, полученное с сервера. Если вы получите на терминал 1000 изменений с сервера и ваш скрипт обрабатывает 100 в секунду, то сетевая очередь на стороне клиента будет разобрана за 10 секунд.
Т.е. getQuoteLevel2 внутри одного вызова OnQuote будет всегда возвращать одно значение до следующего вызова OnQuote? А вызов getQuoteLevel2 в main тоже не вернёт новый стакан до тех пор, пока OnQuote не обработает старый? Если у меня торги длились секунду, было 1000 изменений, за эту секунду OnQuote обработал 100 стаканов, то в начале второй секунды он получит стакан, который в реальности был после 0.1 секунды от начала потока, т.е. 0.9 секунд назад, верно? Как объяснить эксперимент выше, где в OnQuote показывалось меньше данных, чем в OnParam?
Идёт с сервера bid=10, offer=11 вызывается OnParam, печатает bid=10, offer=11 вызывается OnQuote, печатает bid=10, offer=11 идёт с сервера bid=9, offer=11 вызывается OnParam, печатает bid=9 идёт с сервера bid=10, offer=11 вызывается OnParam, печатает bid=10 вызывается OnQuote, печатает ... а ничего не печатает, для него ничего не изменилось.
Я такую ситуацию имел в виду. Что "та же котировка" и "те же значения чисел лучших спроса-предложения" - несколько разные вещи.
Кстати, сотрудники арки, можете описать механизм вызова OnQuote? Вызывается ли он на каждое изменение котировок? Если случилось 1000 обновлений стакана в секунду, мой скрипт обрабатывает OnQuote со скоростью 100 в секунду, сколько раз будет вызван OnQuote? 1000 (и будет работать 10 секунд)? 100 (и будет работать секунду)? Другое число? Те же вопросы к OnParam.
Так OnParam на кучу всего реагирует, так что частота не показатель. Возможно OnQuote дёргается не на каждую котировку, а только если стакан поменялся с момента последнего вызова OnQuote. Т.е. если с сервера идёт 1000 котировок в секунду, а я могу обрабатывать только 100, то нигде эти котировки не копятся, просто меняется объект, возвращаемый по getQuoteLevel2, после возврата из OnQuote она вызывается ещё раз, итого ровно 100 раз в секунду. Ну я бы так реализацию написал :) Попробуйте добавить getQuoteLevel2 в OnParam и getParamEx в OnQuote. Может статься, что в OnParam показывается вообще не та же котировка, что потом покажется в OnQuote. И ещё, у вас же в скрипте хитрость - если между двумя вызовами OnQuote действительно стакан может несколько раз туда-сюда сходить, то вы на второй вызов ничего не напечатаете, т.к. best bid/offer "те же". Для OnParam оно имеет смысл, а тут уменьшает кол-во настоящих записей в логах. Или можно не гадать и дождаться ответа разработчиков =)
Сомнительные выводы из эксперимента (что непременно через OnParam надо котировки доставать). Там разница в пределах погрешности измерения + время на вызов колбека. Наверняка в квике написано что-то вроде --- нашКрутойОбработчикКотировок(котировка) начать засунутьКотировкуВТТП(котировка) вызватьЭтотВашOnParam(paramPamPam) вызватьЭтотВашOnQuote(класс, бумага) закончить --- Т.е. если OnParam нет, то и переживать не стоит, что он мог бы раньше вызваться. Кроме того, в привидённом примере есть запись, противоречащая (по крайней мере на первый взгляд) утверждению о последовательности:
Предлагаю по аналогии с ТТП сделать по нажатии Alt-I отображение инфы по инструменту. В случае облигаций было бы полезно. Ну может и для позиций на срочном рынке так же сделать для единобразия. Например, чтоб стоимость шага цены быстро глянуть, не открывая дополнительных таблиц.