Ув. разработчики, а автоперенос по строкам в Системных сообщениях добавите? Ну невозможно же прочитать всю новость, когда она заинтересовала! Двойной клик по новости тоже ни к чему не приводит.
Да ну какие ж проблемы то, напишите свой сервер и работайте 24/7/365 :) Или платите брокеру внеурочные и амортизационные, если не хотите спать по ночам и отдыхать хотя бы 2 дня в неделе.
Кстати, сейчас суббота, 21:04, тестовый сервер разработчиков не покладает рук...
добрый день, проблема обозначена выше - после применения функции SetLabelParams метка больше не поддается ручному перемещению. Ждем Вашего комментария - "фиксим баг и исправляем" или "так и было задумано"?
Здравствуйте, Ответа пока нет.
Сергей, день добрый, если такая проблема действительно выявится и будет решаться, есть пожелание: Добавить меткам контрол HandleMoving регулирующий разрешение на ручное перемещение, а функции SetLabelParams необязательный аргумент для передачи в этот контрол булев значение, по-умолчанию true.
добрый день, проблема обозначена выше - после применения функции SetLabelParams метка больше не поддается ручному перемещению. Ждем Вашего комментария - "фиксим баг и исправляем" или "так и было задумано"?
_sk_ пишет: В первом сообщении темы написан фрагмент функции main(). В скрипте только один xpcall, перехватывающий ошибки на самом последнем уровне. Вместо многоточия идут вызовы инициализации скрипта, цикл while is_running, закрытие ресурсов. Поэтому предоставить содержательный код не могу.
Было бы неплохо при таком как у меня падении скрипта, создавать что-то типа dump-файла с внутренним состоянием lua-машины, чтобы разработчики могли хоть как-то понять, что пошло не так.
Наверное всё-таки придется написать короткий код с провокацией ошибки. Иначе с чем разработчиками разбираться?
Допроситесь интерфейс плиточками аля винь 8 ))) Кнопочку бы вызова меню запуска скриптов LUA на панель инструментов, вот праздник был бы! )))) А горячие клавиши вызова этого же меню... Фантастика... Но верю! Сам не доживу - внукам завещаю следить за этой веткой! )
Старатель пишет: Тогда надо добавить функционал: двойной клик по строке - открывает сообщение в окне сообщений.
Поддерживаю, очень полезная опция была бы. Уже много лет использую терминал, и все годы пытаюсь дважды кликать на строку, чтобы развернулся весь текст сообщения. Хронически наивный "чукотский юноша". ) Избаловали меня профессиональные продукты других производителей.
Но случае добавления переноса по строкам в таблице это станет не так нужно.
green_X5 пишет: Здравствуйте. Сделайте пожалуйста автоперенос в строках таблицы сообщений, невозможно прочитать весь текст.
Для этого есть скроллбар. А еще можно открыть сообщение в пейджере и читать читать его полностью до получения удовлетворения.
Если Вам так удобно - крутить каждый раз "скроллбар", затем ратягивать границы поля сообщения, затем всё возвращать назад, или искать через какое меню вызвать "пейджер" ( для который лично я дописал в скрипте "убийцу", т.к. его появление совершенно не подчиняется регулировкам Квика), просто проигнориуйте очередное обновление Квик с таким исправлением. Мне лично удобно прочитать сообщение прямо в таблице без лишних манипуляций.
Да я лично только ЗА авто-добавление тикера в списки по запросу параметров из ТТП. ) Оформляйте пожелание. Зима впереди долгая, и не одна, может быть дождемся. )
Viktor MMM пишет: Получается так. Если пошло изменение полосы, то заявки снимаются и она становится неактивной. Нажали готово - и работа подхватывается Как то так. Конечно, блин, с контролем мышки было б шикарно. Порылся в инете, w32 не имеет в составе функций работы с мышью.
Вы точно готовы выходить за рамки справки по QLUA с таким багажом?:
Цитата
Viktor MMM пишет: Я не знаю как через WinAPI обработать мышь. Если б знал такие вещи не искал бы решения без длл и прочего.
Цитата
Viktor MMM пишет:
Николай, думаю по вопросу понятно что я не специалист по луа. И что в нем может быть в квике или не может мне не известно.
Цитата
Viktor MMM пишет: Посмотрел. Чтобы WinAPI обработать, надо подключать библиотеку. А на сколько я понял, подключение библиотеки всегда риск краха квика.
_sk_ пишет: если в ТТП нет инструмента или все ТТП вообще закрыты, то данные всё равно доступны через getParamEx, если их получение настроено через "Связь -> Списки"
Типа автодобавления тикера в списки при запросе данных из ТТП? Что же по-вашему должна ответить ТТП, если она даже не знает о существовании такого тикера? Пошлют нас разработчики с таким пожеланием и будут правы.
Viktor MMM пишет: или проще. Галку снял в табл, линия стала пунктиром. переставил, галку поставил, линия стало жирной и инициализировалась.
И утром завтрак в постель принесла? ) Можно конечно, если это ОЧЕНЬ хочется. Два рисунка - тонкая и толстая линия. Через winAPI читаем нажатие мышки, меняется лэйбл, новый не только тоньше, но и другого цвета. Отпускаем мышку, на новой позиции рисунок подменяется прежним. Только результат не стоит труда.
Viktor MMM пишет: аааа, ну шаг я не проверял. По отпусканию мыши есть мысли? Или придется дублировать хоткеем перенос?
Объясню. Проблемы шага цены, рывков и прочего решились бы событием "метка поставлена". Тогда программно метку можно было б привязать к шагу. Ну и инициализировать изменение. Если мышь не доступна, то на ум идет установить хоткей. Нажимаешь его скрипт ждет отпускания, чтобы инициализировать новый уровень/уровни линий. Есть такой функционал? вроде какие то события были.. надо поизучать.
Предложение навскидку - сервер видит попытку подключения "со второго места", проверяет - откликается ли "первое", если нет - закрывает "старую сессию", открывает новую. А не тупо отказывает в соединении, как сейчас.
Собственно проблема в названии. Работаем, переключаемся на другую точку доступа и больше не работаем, причина - "Вы уже работаете в системе". Кажется очевидной проблема с настройками серверов. С этим можно что-то сделать???
function func(x)
if x==1 then
var1=1
local var2=2
end
if x==2 then
message(tostring(var1))
message(tostring(var2))
end
end
func(1)
func(2)
message(tostring(var1))
message(tostring(var2))
Спасибо за желание помочь, но давайте дождемся разработчиков. Среда, 11:10, соединение с сервером установлено, все возможные параметры таблицы выведены, не могу найти значения RTSI
Если клиент не получит "10", значит нужно что-то предпринять, чтобы получал обязательно! Как я могу советовать где именно менять? Я ж не знаю, на каком конце у вас в такой ситуации зашиты условия "не обновлять до" или "не получать, пока", на сервере, или на клиенте...
green_X5 пишет: Сергей, ответ "Не будем заниматься этой проблемой, потому что - не будем!" - тоже ответ, имеет право на жизнь. ) А вот "выполнил ли брокер процедуру - мы не знаем" и "какой именно форс-мажор имел место трудно установить" - не принимается. Я Вам дал описание проблемы, её дату, временной диапазон, назвал брокера, который имеет моё обращение (и не только моё), вроде как можете связаться с брокером (своим клиентом) и разобраться в проблеме. И в третий раз укажу Вам на важность проблемы - Если данные исправились только после "Перезаказать данные с сервера", значит терминал не получал обновленные данные, когда они уже лежали (но почему-то не принимаются клиентским местом) на сервере. В результате клиентское место имеет неправильный параметр торгуемой бумаги, а именно "0", на не "28". Была бы пустая строка "" или nil, мы бы могли обнаружить это скриптом. Терминал отображал данные, не соотв. данным на сервере.
Если это проблема на серверной части, Вы наверное имеете возможность взаимодействовать и с их разработчиками. Подскажу адрес - support@quik.ru
Критика это конечно хорошо, но есть ли у Вас конкрентое предложение в изменении текущего поведения?
Да нет никакой критики. Есть просьба смоделировать проблемную ситуацию у себя. Наверняка у вас есть тестовая пара сервер-клиент. Перед "началом новой сессии" забейте фьючерсам "до погашения" ноль. Дайте соединение клиенту с сервером, клиент должен получить этот ноль. Затем, не разрывая соединения и не меняя сессии и даты торгов измените принудительно у сервера этот ноль на например 10. Посмотрите, изменились ли данные на клиентском месте. И как скоро изменились. Вот и предложение.
Сергей, ответ "Не будем заниматься этой проблемой, потому что - не будем!" - тоже ответ, имеет право на жизнь. ) А вот "выполнил ли брокер процедуру - мы не знаем" и "какой именно форс-мажор имел место трудно установить" - не принимается. Я Вам дал описание проблемы, её дату, временной диапазон, назвал брокера, который имеет моё обращение (и не только моё), вроде как можете связаться с брокером (своим клиентом) и разобраться в проблеме. И в третий раз укажу Вам на важность проблемы - Если данные исправились только после "Перезаказать данные с сервера", значит терминал не получал обновленные данные, когда они уже лежали (но почему-то не принимаются клиентским местом) на сервере. В результате клиентское место имеет неправильный параметр торгуемой бумаги, а именно "0", на не "28". Была бы пустая строка "" или nil, мы бы могли обнаружить это скриптом. Терминал отображал данные, не соотв. данным на сервере.
Если это проблема на серверной части, Вы наверное имеете возможность взаимодействовать и с их разработчиками. Подскажу адрес - support@quik.ru
Серж пишет: Если брокер использует такую возможность, то что является сигналом для смены статических параметров? Дата торгов?
Дата торгов не показатель, так как есть режимы которые торгуются и после полуночи. Сигналом для смены статических параметров является параметр "Идентификатор сессии" в информационном окне. Сам этот параметр меняется по ряду условий на сервере после рестарта.
Добавлю, что очищать данные можно и после смены даты а не сессии. Это настраивается в терминале меню Настройки - Основные - Программа - Сохранение данных, секция "Очищать данные после смены даты" «На локальной машине» – очищает в памяти данные предыдущей торговой сессии сразу после запуска программы, до установления связи с сервером. Используйте этот вариант, если нет необходимости получать информацию о торгах за предыдущий день перед началом торгов за текущий день. «На сервере (при установлении связи)» – очищает данные предыдущей торговой сессии при появлении на сервере данных, относящихся к новой торговой сессии. Используйте это вариант, если информация о торгах принимается утром следующего дня (например, из-за существенной разницы в часовых поясах).
Не вариант решения проблемы. В указанном мною случае проблема висит в течении всего одного дня, в течении всей торговой сессии. Флагов проблемы нет, и инструментов для решения со стороны пользовательских скриптов клиента вы тоже не дали. Развивать экстрасенсорные способности по определению поступ. параметров актуальности и соотв. биржевым данным не предлагайте, к тому же это не описать языком qLua. Ещё раз обращу Ваше внимание ,в данном случае проблема не столько в кривых поступивших данных, сколько в необновлении их в терминале после обновления на сервере.
green_X5 пишет: Переподключал, меняя сервера, это не помогало. Только "Перезаказать данные заново".
Если проблема более не повторяется, значит на сервере брокера была какая-то авария. считаем тему закрытой.
Сергей, если позволите, я против "считаем тему закрытой." Я не знаю, но возьмусь предположить, что вы (разработчики) с целью оптимизации трафика между сервером и клиентским местом внесли жесткие или мягкие (на стороне сервера) настройки по паузе передачи данных, неизменяемых долгое время, например, как в данном случае, параметра "до погашения осталось". Как видите, инцидент показал, что клиенту это может выйти боком. По факту, клиент, получив однажды кривые данные, не получает автоматически исправленные, даже если они уже появились на сервере. Это проблема, и решать её нужно. Вам.
green_X5 пишет: Потом цены пошли, но у текущих фьючей "до погашения" ноль дней. Хотя жить им ещё 28.
Так не должно быть. Пришлите скриншот на котором видно проявление проблемы дату и инструмент
День добрый, Сергей. К сожалению, скриншот уже поздно делать. Судорожно набирал тех.поддержку брокера (я активно торгую скриптами-ботами), они признали проблему с утра, не я один обращался. Помогло, по их совету, "Перезаказать данные заново". "До погашения" у фьючерсов стало отображать правильные цифры вместо нулей.
С самого утра вообще никаких параметров бумаг, совсем ничего. пустые поля в таблицах. Потом цены пошли, но у текущих фьючей "до погашения" ноль дней. Хотя жить им ещё 28. Просто офигенно, у меня бот автоматом меняет бумаги перед экспирацией! Благо позиция бота была нулевая.
Понаблюдал, проблема не повторяется, наверное можно закрывать это обращение. Это походу серверы брокера ПСБ чудеса вытворят. Сегодня например с утра выдавал жуткие данные по инструментам с утра, и не мне одному, всем клиентам. С помощью техподдержки брокера разобрались, но пожалуй нужно в скрипты ещё кучу защит от такого идиотизма брокерских серверов прописывать.
Александр Иванов, о том, что = не копирует, а присваивает ссылку, как раз "висит на каждом заборе". Почитайте любой интродакшн к языку Lua. Впрочем, поздно, чума наверное уже поразила все бразильские дома...
Роман, нет никаких глюков и расхождений. LUA считает точно то, что вы пишете. Но складывается впечатление, что вы сами не можете понять, что написали. Где конкретно какой глюк? Дайте нормальный пример.
s_mike@rambler.ru пишет: А не проще в качестве уникального идентификатора взять номер потока, исполняющего main?
Насчет простоты - наверное то же самое. Прочитать хвостик названия файла-скрипта вроде не проблема. ) А вот насчет остального наверное мой вариант поудобнее будет. Как я уже написал, кроме Name, уникальными и опознаваемыми создаются и фалы логов и обмена, к которым "новому" скрипту предстоит обращаться и при следующем запуске. Например скрипты bot+one.lua и bot+two.lua создадут логи log_bot_one.log и log_bot_two.log, файлы обмена с такими же окончаниями, Name vcl тоже уникальны.
swerg, да нет проблем, уже есть быстро решенная задача. ) Назначаю имена принудительно, чтобы потом ловить events по Name в общем обработчике. Появилась потребность запускать несколько экземпляров скрипта для работы с разными бирж. тикерами и patch-ми к файлам обмена. Соотв. решил задачу как описал выше. Можно конечно было решить по-другому - дать именам самогенерироваться и потом их перехватить в переменные. Но так получилось комплекснее под мои задачи. Ваша qvcl, что на базе vcl 0.5.0, c хаком от Михаила.
Добавлю для картины понимания общей задачи - создаём вторую копию скрипта, дописываем к его имени файла уникальный хвостик, запуск, хвостик считывается и создает уникальные имена элементов vclua. Т.о. два скрипта не мешают друг другу в библиотеке vcl. Заранее признателен за идеи.
А в основном теле скрипта, вне колбэков, никак не узнать? Проблема в том, что имя файла-скрипта нужно для начального задания множества глобальных переменных-констант. Если точнее - имён Name граф. элементов vclua. А колбэк OnInit() срабатывает уже ПОСЛЕ прохождения тела скрипта... Можно конечно инициализировать весь vclua в OnInit(), но стрёмно как-то... ))
Уважаемые разработчики QUIK. Ещё и ещё раз спасибо за возможность работать на LUA. И за развитие QLUA также низкий поклон.
Прошу сделать ещё немного. Добавить в панель инструментов кнопку быстрого вызова доступа к списку скриптов. И назначить сюда же горячие клавиши. По-сути дублирование нажатия вот сюда
Есть функция, возвращающая путь, по которому находится исполняемый скрипт - getScriptPath(). Можно прочитать литеру диска и имена папок. А имя самого файла-скрипта можно как-то получить? Может быть средствами LUA? Спасибо.
Ну, если разработчики не могут справиться со своим рукотворным чудовищем, прошу знатоков w32.dll написать скрипт, чтоб мочил всплывающие сообщения на корню. Мне, например, не нужны ни какие сообщения с биржи, ни "срочные", ни "не очень", если я не установил это в настройках.
Вот такой вариант? 1. в начале скрипта run=false; 2. Получили с колбэка сигнал на совершение транзакции, присваиваем переменной run=true; 3. Этот же колбэк блокируется на первой строчке if run then return end; 4. Колбэк на проверку изменения позиции разблокируется на первой строчке if not run then return end; 5. Пришло подтверждение изменения позиции, run=false; Обычный флаг. Неплохо бы ещё учитывать ответ колбэка на результат отправки транзакции.