Артем написал: Отбой, многооконный режим в квике и так имеется, просто по умолчанию окна создаются внутри центральной консоли и отцеплять их надо вручную.
Менеджер окон - выбрать все - ПКМ - вынести. Профит.
Цитата
Артем написал: То что окошки прямо на десктопе это бестолково - можно спорить, но что для нескольких мониторов требуется такой режим - нельзя.
Меня бы больше привлекло другое: выносить не отдельные окна, а прямо вкладки целиком. Одну вкладку на левом мониторе, другую - на правом. Удобно. А еще тайлинг окон! дайте мне тайлинг!!! Хотя... я один раз настроил конфигурацию и больше не меняю её... зачем мне это все.
Артем написал: тут "колбеки" функционируют как прерывания - при вызове он вычищает стек, загружает вектор, исполняет прерывание, и после выхода восстанавливает стек. При этом как бы исполнение кода идет в одном и том же VM Lua однопоточно, но из разных тредов.
"тут" - это где? в квике? С каких это пор?
Весь остальной текст после цитаты обсуждать не вижу смысла. По очевидным причинам.
Цитата
Артем написал: Есть более простые ляпы, например использование глобальных числовых констант вместо строковых идентификаторов и вообще С-образный интерфейс в целом вместо Lua-идиоматичных
Почему вдруг использование глобалов стало ляпом? А С-подобный интерфейс отчего вдруг стал плохим?
Артем написал: точнее сказать я не считаю окружающих за идиотов
Да я рад бы не считать, но они такую дичь говорят что появляются сильные сомнения.
Цитата
Артем написал: Обычно колбеки однопоточные - вызываются из того же треда, в котором работает скрипт, пока собственно скрипт лежит в спячке и ничего не делает.
Щта? Колбек - по сути функция, вызываемая извне. Никогда нельзя говорить что она "в том же потоке". Никогда.
Цитата
Артем написал: Но ввиду особенностей квика, колбеки тут многопоточные - вызываются из чужого треда в любой момент, причём вызываться они могут прямо посреди выполнения другого кода.
И это нормально. Это правильно. Событие во внешнем мире возникает независимо от твоего скрипта, и оно к нему асинхронно априори.
Цитата
Артем написал: Иногда это прямым образом разрушает стек ВМ
ЩТА?? Причем тут стек ВМ?? Вообще, причем?
Цитата
Артем написал: еще иногда колбек вызывается в момент обработки очереди данных, которые собирает этот же колбек, из-за чего соответственно происходит разрушение очереди, из-за чего скрипт тоже падает с ошибками обращения к нилам
Ээээ, батенька... Дык вы в гонки данных не умеете. Ну так с этого и надо начинать, а не требовать реализации каких-то непонятных костылей.
Цитата
Артем написал: Я говорил уже что от такой многопоточности надо избавляться, и делать скрипты Lua строго однопоточными. Колбеки можно вызывать из функции sleep, результат будет такой же только без всего этого многопоточного геморроя. Альтернативный вариант, без переписывания всей этой каши, это добавить вот такого рода две функции, чтобы заблокировать вызов колбеков когда не надо.
Рекомендую читать букварь. Много думать. И да, сразу, на будущее - если захватить лок в коллбеке и не вернуть его - квичек повиснет.
Цитата
swerg написал: Так определение "многопоточных колбеков" будет уже или нет?
Видимо под "многопоточными колбеками" подразумевается ВНЕЗАПНЫЙ вызов колбека квичком, и ... "из-за чего соответственно происходит разрушение очереди, из-за чего скрипт тоже падает с ошибками" :)
Вверху текстом написано что "сегодня сб 24" То, то квик говорит "дата торгов 23" - имхо достаточно скользкое понятие. Я вижу когда уже заполночь, а дата все ещё 23... Так что хз когда там "дата торгов"))
Но, судя по скрину, все свечи за день на месте и сессия закрылась. Поэтому я думаю что все это "вчера".
Еще раз: давайте дружно посмотрим как выглядит такая же ситуация в середине торгового дня. Например сегодня?
А если хочется помощи - опиши проблему, т.к. телепаты все в отпуске буквально со вчера, и по описанию "не работает" полезного ничего сказать не получается.
Anton написал: А толку, что гост, браузеры и сервера на него плюют с высокой колокольни, а с тлс 1.3 вообще набор циферей урезан и фиксирован и гостом там не пахнет и не запахнет, судя по всему.
Даже если запахнет, то сертификацию у наших маёров ему не пройти. Вроде есть инструкции, позволяющие openssl собрать с ГОСТом. И говорят что это даже работает. Но я не пробовал. Мне лень.
swerg написал: Что за умопомешательство на этом https ??
Ну вы же всякую дрянь с пола не едите, не так ли? В открытом канале, скачаю я например, скрипт у Михаэля. А провайдер подбросит мне пару лишних строк. А пару поменяет. А я в этом не разбираюсь и не замечу. А скрипт уже работает чуточку не так...
Цитата
Anton написал: Затем, это хорошо для производителей железа, криптография штука затратная, и вот уже юзер бежит за новым процессором. Особенно серверный юзер, за особенно дорогим процессором.
Для высоконагруженного сервера может быть это оказывает ощутимое значение. Для stand-alone сайтов на полузабытых площадках - вряд-ли. А клиент вообще не замечает разницы.
Цитата
Anton написал: Затем, это хлебушек для программистов, все эти изобретения надо кодить, и опасность демпинга минимальная, юные дарования ниасилят, а когда осилят, уже и сами ценник вывесят правильный
Там же цена вопроса три клика. Я имею ввиду добавить на сайт хттпс, а не реализацию ssl :)
Цитата
Anton написал: Затем, кое-кто, может быть, имеет закладочки в сертифицированных алгоритмах, ну чисто так на всякий случай
Отдельный доступ для тов.майора, кмк, куда лучше открытого канала для всех
Цитата
Anton написал: Затем, кое-какие реализации тихонько запрашивают юзерский сертификат, а кое-какие его тихонько отправляют
Ну во-1-х чтобы юзерский сертификат отправить, его нужно иметь. Много ваших знакомых имеют таковой? А во-2-х скрипты, куки и фингерпринты скажут о Вас достаточно для однозначной идентификации.
_DS = {}
function cb(index, secCode, param)
local id = secCode.."_"..param
local ds = _DS[id]
if ds == nil then
msg("DS was empty")
return
end
local price = ds:C(index)
--здесь целевой код колбека
end
function Subscribe(secCode, classCode, param)
local ds = nil
local err = nil
local id = secCode.."_"..param
if _DS[id] ~= nil then
msg("<"..id.."> Already req")
return
end
if param == "last" then
ds,err = CreateDataSource(classCode, secCode, INTERVAL_D1)
else
ds,err = CreateDataSource(classCode, secCode, INTERVAL_D1, param)
end
msg("Subscribe: <"..secCode..":"..param.."> is: "..tostring(ds))
if err ~= nil then
msg("Err: "..err)
return nil
end
ds:SetUpdateCallback(
function(idx)
cb(idx, secCode, param)
end
)
_DS[id] = ds
return ds
end
Александр Кашников написал: И когда будет добавлен код класса в таблицы "depo_limits" и "futures_client_holding"?
Не будет.
Цитата
Александр Кашников написал: Кстати, обновляются "depo_limits" и "futures_client_holding" секунд через 10-15 после того, как заявка "прописалась" или изменилась в таблице "orders" как такое возможно?
Это тоже нормально. Никто не может объяснить почему. Квик так устроен. Смирись.
Цитата
Александр Кашников написал: Обезличенные сделки - вообще вещь опасная - их может просто не быть с утреца и до обеда.И никакой перезаказ данных особо не помогает, только часа 2 общения с тех.поддержкой квик брокера (если дозвонишься), еще и спрашивают - "а зачем вам обезличенные сделки?"А действительно, зачем?
Похоже у вас проблемы с брокером. Такое бывает. Данных нет и суппорт брокера трубку часами не берет. Особенно когда движуха на рынке. Тут рецепта нет. Только страдать. Либо сменить брокера. И снова страдать.
Цитата
Александр Кашников написал: Если функционал по ним работает как попало и трансляцию ВСЕХ сделок по ВСЕМ инструментам никак не убить - спам? - спам чистейший.
Функционал работает нормально. Ненадо включать заказ "ВСЕХ сделок по ВСЕМ инструментам" и все будет хорошо.
Цитата
Александр Кашников написал: Мало того, роботы, алгоритмы которых основаны на обезличенных сделках, вынуждены крыть позиции внутри сессии, т.к. завтра обезличенных сделок может не быть с утра и привет дядя Коля.
Серьезно? Роботы, основанные на обезличенных сделках? Уж лучше на скользящих. чесслово.
Обезличенные сделки - асинхронная вещь. А это значит что, не считая собственных тормозов квика, могут отставать от реальности на хз сколько. Фактически отставание в 5-10 секунд уже фатально.
Цитата
Александр Кашников написал: Склейка инструментов на срочке - подтверждаю - это бред, который никому не нужен.Свечки это совсем не актуальная информация, их перерисовывают при каждом клиринге - скрывают сделки крупных ММ.
Как вы задрали с позицией "мне не нужно - никому не нужно". Вот мне - нужно. Вопрос в том, с какой целью используются эти свечки.
Цитата
Александр Кашников написал: А тут еще вы со своей склейкой и главное выбора никакого нет, а я не просил склейку и никто не просил
Вот это другой вопрос. Отключение можно было предусмотреть. С другой стороны - никто не заставляет же. Сними настройку "делать замену инструментов" и все.
Цитата
Александр Кашников написал: "Умный заказ данных" - реально в кавычках, т.к. какой-то неликвид, по которому последняя сделка была 2 года назад, вдруг начинает спамить сообщения по 50 штук в секунду, что у него планку долбит и вот-вот начнется аукцион.
Чето не вижу связи между заказом данных и сообщениями про ауцкионы.
Цитата
Александр Кашников написал: Вспоминаю quik 6,0 - афигенный шустрый терминал, транзакция до биржи летела 20-40 ms
Что мешает продолжать на нем сидеть? Только не надо потом говорить что и тут обезличенные сделки тоже кудато пропали.
Anton написал: Это не вопрос веры. Это вопрос взять и в сорцы луа посмотреть. Конкретно luaD_precall Код lua_unlock(L); n = (*f)(L); /* do the actual call */ lua_lock(L);
Это конечно разрывает мне моск. Но, видимо остается только следовать известному утверждению: максимально быстро отпускать колбек.
Для тех, кого забанили в Гугле, могу подсказать что в Винде есть настройка, для дефолтного языка приложений на русском языке. Квик вылечивается этим на отличненько.
Anton написал: Существенно, что в колбеке нет сишных вызовов, то есть лок удерживается все время
И кстати. Если лок удерживается все время, то наличие сишных вызовов не должно влиять на работу коллбеков никак. А в его снятие при вызове этих сишных вызовов я верю еще меньше.
Какой-то несходняк. Если бы колбек залочивал глобучий синхронизатор, то внезависимости от наличия слипа внутри, в майн мы никогда бы не зашли. т.е. приведенный код работал бы до первого срабатывания OnParam(), а после него весь квичок повиснет навеки независимо от наличия в нем слипа.
А соообщений нет изза того что пока висит колбек - квичек не процессит виндовые сообщения. Как только мы добавляем sleep(0) - оконные сообщения начинают обрабатывать и мы видим мессаги.
Мне кажется, если бы в майне задействовать функцию, которая никак не зависит от работы самого квичка - например вывод в файл. И тогда - прекращение вывода при залипании коллбека - было показателем того что колбеки и майн работают под единым локом. (правда я не уверен что вывод в файл в луа умеет в асиннхронность)
Anton написал: Выделю в процитированном для привлечения внимания Цитатав каждый момент времени с луа работает либо мейн, либо колбек.
Хочешь сказать когда Квик в колбеке - майн стоит? Он же в отдельном потоке? Или там какая-то внутренняя кухня луа, не позволяющая одновременно двум стейтам из двух потоков работать?
Anton написал: целенаправленному ломщику - семечки.
т.е. нужно дебагером подключиться к чужому процессу, по-быстренькому найти всё проверки и их обезвредить. ну я не ломщик, ломщику может и правда семечки...
в любом случае это сложнее нежели хранитель экрана убрать.
Если просто нужно залочить экран, то наполовину, т.к. это лехко снимается одминским доступом. К томуже, емнип, по рдп скринсейвер не работает.
А если мне нужно залочить только квичек, а остальной экран чтобы был виден? Ну и есть вариант, когда лочится только возможность делать действия - т.е. подавать заявки - т.н. "просмотровый режим".
Цитата
Игорь написал: Злоумышленник, гипотетически получивший доступ к серверу деньги наверное не выведет, но вот бед натворить может.