Anton (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 28 След.
Отладка QUIK 8.13
 
Цитата
TGB написал:
Я собрал из исходников Lua 5.3.5 вариант исполняемого кода Lua (свой стенд)
Получился именно свой стенд, довольно далекий от того, как сделано в квике. Отсюда и проигрыш квику в скорости. Квик перехватывает создание стейта для скрипта (для этого в луа есть соответствующие макросы под переопределение), прицепляет к стейту дополнительную структуру и создает критическую секцию в этой структуре, свою для каждого скрипта (именно поэтому разные скрипты таки могут выполняться параллельно друг другу, у вас - нет). Макросы lua_lock/lua_unlock устроены сложнее, чем у вас, они получают из стейта указатель на эту дополнительную структуру и захватывают/выпускают критическую секцию, принадлежащую данному скрипту (а не одну общую, как у вас). Кстати, удаляется эта дополнительная структура весьма затейливым образом, поскольку при наивном подходе существует вероятность возникновения гонок. В частности, попытка захватить прибитую критическую секцию дает как раз наш любимый ACCESS VIOLATION. Совпадение? Не думаю! (но может быть и совпадение) Еще учтите, что в квике все эти макросы выбирают не только нужный скрипт, но и нужную версию луа, то есть они еще сложнее, чем я описал, вариантов "хотеть как лучше, а получить AV в продакшене" у программистов арки больше, чем хотелось бы.
Как установить поддержку сокетов в скриптах QUIK ?
 
Цитата
Николай написал:
Однако у меня Windows 7 x64 SP1, и она совсем не едет или я разучился.
Не едет. То есть едет на ручной тяге и я б затруднился по пунктам расписать, что куда крутить в общем случае. К сожалению, семерку будут выдавливать и дальше и с этим ничего уже не сделать. Причем явно видно, что авторы опенсорца (не конкретно этого) радостно идут навстречу майкрософту, убивая совместимость со старыми студиями, все замены в их коде абсолютно не нужны с точки зрения работоспособности или каких-то там улучшений, просто чтобы в старых студиях не собиралось без танцев.

Собранные длл здесь. Все думаю где-то разместить "навеки", да руки не доходят.
Формирование списка Lua-скриптов
 
Цитата
Артем написал:
Я имел ввиду не тонкий клиент, а чтобы на локальном терминале вместо классического Winforms/GTK/QT и т.п. ГУЯ выводилась веб-страница. Вообще я изначально хотел предложить движок QUIK к Chromium прикрутить, но это слишком жирный объем работы для такого несерьёзного изменения.
Делал такое на хромиуме том же. Выбросил в итоге. То есть сама идея в теории привлекательная, но есть нюансы. Во-первых, хромиум тот еще уродец, а чего-нибудь получше (готового) не сыскать, во-вторых, html в качестве базы гуя плох изначально. VisualStudioCode отличный пример, как оно будет тупить, а там всего лишь текст раскрасить. Во что это превратится на тиковом графике и гадать не нужно. Чтобы получилось хорошо, надо вспомнить, что хтмл надстройка над дом, а над ней и другие надстройки есть (например xaml, хаха). Про операционную систему перебор, даже с учетом wasm оно все еще не более чем дом с колбеками.

Цитата
Артем написал:
Можно кривляться а можно эксплуатировать.
Кривиться наверное. Кривляться не захочется разве что грубому гунну.
Формирование списка Lua-скриптов
 
Цитата
Артем написал:
могли бы прикрутить HTTP сервер
Шо значит могли бы. Если бы существовал нормальный браузер (а не агент гугла/яндекса/майкрософта с побочной функцией отрисовки хтмл), было бы здорово.
Данные по свечкам на прошлые дни, Можно ли получить данные за вчера? CreateDataSource только сегодняшние свечки дает
 
Цитата
Антон Козыч написал:
CreateDataSource("SPBFUT", "RIH1", INTERVAL_TICK, "last")
Это вы заказываете график по параметру last, а не просто график, последнее поле вообще не нужно указывать.
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Старатель написал:
А у вас ГО по спрэдам в окне ввода заявки показывает?
У меня самих спредов нет, не могу проверить.
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Кстати говоря, побочно обнаружилось, что у финама тиковые данные тоже с неправильными направлениями. Клиенты финама, пните их, там походу вся база с момента введения синтетики битая. Ну не вся, а где синтетика есть.
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Старатель написал:
правильный-то флаг
С этим разобрался. Дело было так. В SiH1 активная заявка собирала стакан одним движением от 74102 до 74109. В SiM1 стоял оффер 74860, в SiH1SiM1 стоял бид 753 и вместе они давали синтетический оффер в стакане SiH1 по цене 74107 с объемом 10. Вот этот синтетический оффер был сожран вместе с обычными. Исполнение синтетического оффера привело к 1) выкупу оффера 74860 в SiM1 и 2) заливу в бид 753 в SiH1SiM1. Правильное направление должно быть КУПЛЯ. Таким же образом был сформирован и второй ордер по той же цене на 5 лотов и исполнился так же, направление тоже должно быть КУПЛЯ. Тут вопросов не осталось. Ваша картинка единственно правильная.

Цитата
Старатель написал:
И почему другой сервер врёт?
А вот тут есть только догадка. В ордерлог вроде как синтетика должна транслироваться как будто она не синтетика, а просто натуральная заявка, но она появляется только в момент матчинга, как бы вылетая навстречу активной заявке. Вот есть предположение, что сервер думает, что эта вылетевшая внезапно ниоткуда заявка и есть новая активная, и ставит направление по ней.
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Старатель написал:
Но правильный-то флаг какой? 1026? И почему другой сервер врёт?
О чо есть. Там на стр.10 пример, кто что увидит в своей твс. Если у нас активная заявка в RiH1 собирала стакан, значит, спред туда должен бы войти с продажей, против активной, так вроде получается? Или же он влез с покупкой вперед активной и выжирал перед ней оффера? В презентации этот момент как-то слабо освещен, тут бы четкие формулировочки найти. Второй вариант прям как-то совсем уже отбито звучит, хотя по логике надо было именно купить.

Цитата
Старатель написал:
Про вторые пары номеров сделок не понял.
Если у вас есть RiH1, а у меня есть RiM1, и вы купили у меня спред по 750, мы меняемся контрактами и вы мне доплачиваете 750, в базовые стаканы нам лезть вообще не надо. Туда нам надо лезть, если нас свели синтетически, как в презентации описано. Тут у нас, похоже, синтетика чистая:

строка 1 - купили первую ногу
строка 2 - купили вторую ногу
строки 3 и 4 - обменялись контрактами за углом (вне рынка; это видно только задним числом, в твс не попадает)
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Владимир написал:
успешный трейдер: большинство его сделок приносят прибыль, позволяющей ему иметь, скажем,100% годовых
Не пройду все же мимо, спрошу: а меньшинство его сделок скока уносят?
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Евгений написал:
Ну вывод то какой?
Предлагаю топикстартеру посмотреть, что в новом терминале у него не транслируются спреды, а в старом транслируются. Ну и еще бы кого послушать, чтобы не на двух примерах выводы делать. У вас-то вот оно как, продажа или покупка?
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Старатель написал:
А почему их по две пары номеров?
Первая пара это что в твс было, вторая - единички следом установлены - это оффмаркет. Что кагбэ намекает, что спред выдергивался из стакана от имени не того, кто спред заказывал и потом на него переводился мимо рынка. В общем деталь техническая, как и фактически "критическая секция" в моменте, откуда и появляется "невозможная" продажа в потоке покупок.

Цитата
Владимир написал:
Ну и пущай себе урывают свои кусочки счастья
А был бы спред на 100000 контрактов, вот это было бы щасте прям до планки. Интересно, у них такой сценарий закодили или будет как с минус нефтью.
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Владимир написал:
шоб данные давали не глючные
А они не глючные. В военное время число пи может достигать четырех, а в нынешнем дивном мире направление сделки может достигать "покупка", ежли ровный пацан смотрит, который подписал бумагу шо фсе понял согласно фз как там его, о рынке короче.
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Интересная там кухонька внутренняя. Взяли из стакана и тут же оффмаркетом слили, и номерочки последовательные. Тксть пусть весь мир подождет, мы тут спреды торгуем.
Скрытый текст
 
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Посмотрел, что говорит финам, а финам согласен с моей картинкой. Свидетели путаюццо в показаниях. Ежли у кого есть ордерлог под рукой, было бы здорово.

Скрытый текст
 
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Старатель, ваша картинка больше на правду похожа, очевидно же одним движением полстакана выжрали, как туда продажи могут вклиниться. Не все брокеры одинаково полезны, такой сделаем вывод.
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Обновил до 8.12, перезаказал твс. Зе сейм
 
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Старатель написал:
В 7.27 и 8.12 флаг 1026
В 8.11 1025, как и твс показывает на картинке выше. Чудеса однако. Там явно 13 штук одной сделкой забрали, после покупки 3 продать 10 по той же цене в ту же микросекунду - очень сомнительно. Как в анекдоте, тут у них карта и поперла.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Старатель написал:
(если бы была такая возможность: <Цена условия тейк-профит> - <отступ> - <спред>)
Но опять же цель не достигнута, сдали в итоге даже ниже цены условия, откуда только начинали тралить, лимитник на этом уровне давно бы залился и все были счастливы. Либо стоп по другой бумаге, если не хотелось палить лимитник в стакане раньше времени. В общем-то мои возражения тут больше направлены на какие-то чудесные ожидания, вот мол арка щас ченить накодит и прям вот все заработает, залезай в позу от балды, а квик сам собой в плюс ее покроет.
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Алексей написал:
посмотрите сделку
 
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Старатель написал:
Объясните, какая принципиальная разница между заявкой с ценой   +-   и рыночной? В обоих случаях итоговая цена не предсказуема. Человек потенциально соглашается на любую цену.
Разница кое-какая есть: рыночная, если в стакане совсем пусто, будет снята, лимитная - встанет все же в стакан и, возможно, кто-то сочтет ее достаточно вкусной. Это опять же уклон в сторону исполнить с максимальной вероятностью.

Усилю вышесказанное о методической ошибке. Тут само выставление заявки привязано к факту, что кто-то только что сожрал наиболее вкусные биды, то есть, получается, заявка вылетает в самый дурацкий момент, какой только можно было придумать. Вот этот сожравший биды чувак и съел вашу прибыль, а вы теперь пытаетесь за ним вдогонку бежать по выжженой поляне. Если есть хороший приток бидов, вас, возможно, закроют выше, но в этом случае и велик шанс, что это был локальный пичок с откатиком и по итогу цель протрейлить до максимума не достигнута, высадили. Собственно, так оно и будет происходить в большинстве случаев, а в меньшинстве будет ваш сценарий с передачей позиции внукам. Куда ни кинь - всюду клин. Выше хорошую фразу написали
Цитата
Незнайка написал:
Тейк-профит же исполняется против рынка.
Это ведь правильно написано, и, чтобы исполнить против, надо лить до того поспешного чувака. На чем основываясь - неважно в данном случае, главное что не на том, что чувак вас уже опередил.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Старатель написал:
я ведь указал, на каком уровне готов зафиксировать прибыль. Не ниже!
Но проблема в том, что в этот момент нет желающих вам эту прибыль закрыть по указанной цене. Пока тики идут вверх, сигнала на закрытие нет. Сигнал появляется на тике вниз, вышедшем за отступ. Очевидно, что выше этого тика в моменте нет бидов, ставить туда - это ставить на отскок. Это может быть хорошо на спайках, хотя бы как "ну тогда вообще не исполняйте", но на реальном развороте это гарантирует неисполнение.

Приводился мт в пример. Но там дилер, мт отслеживает бид, то есть оферту от дилера провести сделку по данной цене, то есть в моменте есть предложение от дилера, остается его акцептовать. На биржевом рынке, как оказалось, мт тоже льет в пол, вообще безо всяких там спредов, тупо по рынку в пол.

Мое мнение - эта шняга под названием тейк-профит как тейкпрофит бесполезна и улучшить ее невозможно. Даже если смотреть на сумму лучших в стакане, попадем в аналогичную ситуацию, ведь бидов нет в этот момент и мы опять льем в пол или ставим на чудо. Использование этой автоматики - методическая ошибка, попытка закрыться по вчерашней (в широком смысле) цене.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Незнайка написал:
Или я чего-то не понимаю.
Я тоже похоже.

Тут сетап: злой мейкер прибрал заявки из стакана и ткнул одним контрактом в небо, у народа посрабатывали тейки и вылили их позиции в пол, мейкер потирает ручки, народ безмолствует идет на форум выдвигать идеи, как с этим бороться. Ну вот типа так, выливать не в пол, а повыше. Кому повыше, ежли там бидов нет? А никому говорят, ставьте лимитник по нашей желаемой цене и фсе, не купят так не купят. Насчет трейлить его потом вверх тока дошло, ага, он же ж будет от текущей убегать, достанут только разве еще одим спайком, если сервер подвинуть не успеет. В общем оно все с самого начала вокруг вот этого вот крутится, мол как же так, тик есть, а бидов нету, как быть, куды бечь.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Рустам написал:
Но нотки придумали не музыканты а повара.
Вся биржа кухня и люди в ней в основном бифштексы. Тксть как здорово, что все мы здесь сегодня собрались, пусть мало нас за столом, зато много на столе.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Незнайка написал:
Это трейл-стоп-лимит так должен работать.Тейк-профит же исполняется против рынка.
Это сообщение должно было быть где-то в начале. В такой формулировке вся ветка ни о чем, все работает правильно )
Как вы яхту назовете, так она и поплывет.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
Незнайка написал:
А в чём смысл заявки? Постоянно убегать от текущей цены? А исполниться она когда должна?
По задумке подтягиваться за ценой, когда та растет, и стоять на месте, когда не растет. Исполнится, когда цена откатится от очередного пика. Вообще говоря, много подобных вариантов пробовал в свое время (без квиковской автоматики, на своей) и ни один в продакшен не пошел, тупо лимитник "на чудо" в среднем выигрывает больше. Особенно если принять во внимание статистику, сколько в среднем недобирает закрытая позиция до ближайшего после закрытия пика.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
shr540i, это все можно сделать на луа, погонять, посмотреть что будет, а то оно все как-то в сослагательном наклонении применительно к мамбе, мож там такие чудеса полезут, что дешевле лимитник сразу ставить безо всяких тралов. IB это IB, они для неразделенных счетов кухонька кухонькой, собсна и в сегрегированные они лапу запускали и попадались на этом, а арке-то об кого чудо-стопы крыть, об брокера? Брокер захочет ли, в конце концов софтину-то он заказывает, зачем же он себе во вред будет фичи просить. В начале ветки предложение было конкретное, сейчас ветка дошла до "сделайте хорошо, незнамо как, ну например так или эдак или вообще ортогонально двум предыдущим", это все из разряда мечтаний все же.
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
shr540i написал:
Найдите мне там размер штрафа, и конкретные формулировки про большой отступ.
Про большой отступ это условие, чтобы лимитник провисел пару часов, двигаясь на каждый аптик. Размер там формулой задается. 2000 транзакций прошло, пусть сбор 1 рубль, имеем 200 рублей штрафа (минус 4 рубля, если сделка таки случилась). Очевидно, что куча юзеров выставит трейл, не вникая в подробности, и начнутся вопросы, за что денех взяли. Плюс лимит в 2000 транзакций уже превышен до конца дня и каждая следующая транзакция в классе будет платной. Есть большие сомнения, что использование такого "платного" трейла отобьет штрафы.
агрегировать значения из таблицы сделок по временному условию
 
Цитата
Владимир написал:
пролистаем бегло на первый раз
Надо листать п. 3.4.3
Тэйк-профит: старые песни о защитном спрэде, Возможные сюрпризы при совершении сделки по тэйк-профиту
 
Цитата
shr540i написал:
да хоть просто сделай новый тип заявки и назови его трэйл-профит и сделай его как выставляемую по условию достижения профит цены обычную лимитку у которой потом при движении рынка в нужную сторону динамически меняется лимит. и все проблемы будут решены
Есть штраф за бесполезное выставление заявок. Юзер выставит такой трейл с большим отступом, через пару часов после активации брокер влетает на штраф, кто его оплачивать будет?
Графики объема и изменение лотности, Изменении лотности по инструменту приводит к невозможности нормального анализа
 
Цитата
Kander написал:
Почему бы не перевести учет объемов на валюту, а не на лоты?
Лучше на штуки, как-то давно предлагал. Однако есть минус, неожиданно много стороннего софта имеет 32-битные поля объема, много народу вляпается в проблемы.
Отладка QUIK 8.12
 
Цитата
Старатель написал:
если бы знающие люди
В данном случае разве только "предполагающие" могут порезвиться. Видим два мейна, потоки 7108 (это, видимо, который ничего не делал, в слипе стоит) и 5524 (который, видимо, торговал и вызвал крэш). Видим, что основной поток 5812 выполняет код из qlist.dll, пытается что-то получить от луа и крэшится на этом. В арке в колстеке 5812 вместо смещений от PLUGIN_InitEx видят реальные функции (если символы подключить), так что, думается, им дальше догадаться быстрее, чем нам длл потрошить.
Расчет и отображение комиссии биржи
 
Цитата
Евгений написал:
В общем при подсчете комиссии, по сделкам надо делить полученное на 2, или исправить это в квике
Чего уж в квике, прямо на бирже надо исправлять
Скрытый текст
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
ничего квикового из него нельзя было бы трогать
С этим, впрочем, погорячился, много чего таки можно было бы трогать.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Незнайка написал:
Пока выполняется байткод (в любом потоке) сам QUIK залочен?
Когда в мейне байткод выполняется, квик не залочен. Но если квику нужно вызвать колбек, он будет ждать, пока появится "дырка" в мейне, чтобы захватить лок. Пример выше это может показать, если его изменить (убрать колбек и запускать цикл в мейне с задержкой).

Цитата
Незнайка написал:
А зачем понадобилось их реализовывать?
Иначе любое обращение к луа из двух потоков одновременно ломало бы стек луа и вызывало крэш. Без локов можно было бы сделать, если бы мейн был отдельным скриптом, как выше swerg предлагал, но такой мейн малофункционален был бы сам по себе, ничего квикового из него нельзя было бы трогать.
Отключение интернет, Поведение программы при отключении интернет
 
Цитата
swerg написал:
На конект - так он и так есть.
Ящитаю, лучше этот вопрос порешать в коде, дабы не повиснуть навсегда, ежли юзер чего-нибудь в реестре наворотил (а там есть чего). Лучшие собаководы так делают и нам не грех.

Цитата
swerg написал:
Но если подключилось, но "сервер не шлёт ничего" (или в проводах теряется? как вы отличаете?) - то тут что? Может там и не должно ничего приезжать, как догадаться?
Ну тут путаница. Должен ли сервер что-то слать - протоколом определяется. По http не должен без запроса, а по фиксу, например, должен heartbit посылать, и если не пришло вовремя, надо фейлить. Простейший вариант - поставить таймаут на recv. Да и по http он нужен, если сокет синхронный. На асинхронном мы просто сами таймауты считаем, ставить через сокопт не нужно. Кстати говоря, когда что-то выкачиваешь большое с http в несколько потоков, сервера иногда за дудос принимают и начинают динамить, коннект принимают и держат его. Без таймаутов сокет виснет навсегда, ну или по крайней мере слишком надолго.


Цитата
Старатель написал:
что сервер не найден по указанному адресу
Это все ж от dns ошибка.
Отключение интернет, Поведение программы при отключении интернет
 
Цитата
Старатель написал:
Не является ли это дурным тоном в программировании? Может, правильно будет по таймауту прекратить попытку соединения, и выдать соответствующее сообщение пользователю?
Упс, прошу прощения, пропустил. Да, надо переводить сокет в неблокирующий режим и вызывать connect с отменой по таймауту, это если мы про вообще говорим. А если про квик, это скорей к арке вопрос.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Незнайка написал:
Как можно в этом убедиться?
1. Обратите внимание, что первое действие в lua_pcallk - захват лока. Любое выполнение луа из квика начинается через lua_pcallk.
2. Обратите внимание на ветку для light C function, в частности на строки (также ответ на второй вопрос)
Код
      lua_unlock(L);
      n = (*f)(L);  /* do the actual call */
      lua_lock(L);
3. Обратите внимание, что сама луа-машина лок нигде не выпускает. На самом деле есть исключения, выпускает и тут же захватывает ровно в трех местах, после newtable, pushcclosure и concat, что в целом картины не меняет, их можно рассматривать как заинлайненные сишные функции.

На практике - попробуйте приведенный выше скрипт. В нем вызываются math.sqrt - сишные. Можете заменить на любые функции из qlua. А вот если заменить на примитивные операции, дающие только байткод, то квик зависнет. Например (квик придется прибивать, будьте готовы)
Код
local run = true
local nshow = 0

function OnAllTrade()
   if nshow < 10 then
      PrintDbgStr('OnAllTrade')
      nshow = nshow + 1
   end
end

function dummy(i)
   local a = 1
   for i = 1, 1000000 do a = a + i end
end

function main()
   PrintDbgStr('Before loop')
   for i = 0, 10000000 do
      dummy(i)
   end
   PrintDbgStr('After loop')
end
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Незнайка написал:
в т.ч. и сишные функции из qlua
Нет. Сишные функции - любые, из самого луа, из qlua, из пользовательской длл - выполняются без лока. Под локом только байткод. Конкретно в qlua все функции сишные, в самом луа библиотечные функции тоже все сишные.

Цитата
Незнайка написал:
Вопрос к разработчикам
Забегу-таки вперед паровоза. Без второго потока пользовательский мейн вообще нельзя было бы выполнить от слова никак. Были бы только колбеки, как в индикаторах.
Как установить поддержку сокетов в скриптах QUIK ?
 
Цитата
0b0yv написал:
ещё раз
https://dropmefiles.com/bAGAF
Эвента на изменение таблицы "Клиентский портфель"
 
Цитата
Михаил Филимонов написал:
Учтя Вашу критику
Но все равно по-своему ) В общем, если устраивает, то и хорошо.

В этом варианте в мейне ничего не происходит, можно слип увеличить до 1000.
Эвента на изменение таблицы "Клиентский портфель"
 
Цитата
Михаил Филимонов написал:
Посмотрел список функций w32 и эти функции там есть.
Я тоже сейчас посмотрел внутрь (скачал сорцы у swerg) и есть подозрения, что работать эти функции не будут через w32. Например, PeekMessage
Код
static int global_PeekMessage(lua_State *L) {
    MSG msg;
    BOOL rc;
    long lwnd = MYP2HCAST luaL_optinteger( L, 1, 0); // раз косяк
    UINT mfmin = ( UINT) luaL_optinteger( L, 2, 0);
    UINT mfmax = ( UINT) luaL_optinteger( L, 3, 0);
    UINT rmmsg = ( UINT) luaL_optinteger( L, 4, PM_NOREMOVE);

    rc = PeekMessage( &msg, ( HWND) lwnd, mfmin, mfmax, rmmsg);

    lua_pushnumber( L, rc);
    if( rc) {
        lua_pushnumber( L, ( long) msg.hwnd); // два косяк
        lua_pushnumber( L, msg.message);
        lua_pushnumber( L, msg.wParam); // три косяк
        lua_pushnumber( L, msg.lParam); // четыре косяк
        lua_pushnumber( L, msg.time);
        lua_pushnumber( L, msg.pt.x);
        lua_pushnumber( L, msg.pt.y);
    } else {
        lua_pushnil( L);
        lua_pushnil( L);
        lua_pushnil( L);
        lua_pushnil( L);
        lua_pushnil( L);
        lua_pushnil( L);
        lua_pushnil( L);
    }

    return( 8);
}
На 64 битах HWND это void *, WPARAM и LPARAM - uintptr_t и intptr_t соответственно. Тут их режут до 32 бит и потом еще в даблы упихивают. Так что с использованием w32 я, видимо, ничего набрасывать не стану, во избежание последующих глюков, лучше тогда сразу в своей длл все и делать.

В мейне создаем невидимое окно hwndServer и затем обычный цикл сообщений. В оконной процедуре как-то типа
Код
   switch(msg)
   {
   case WM_QUIK_CLIENT_CONNECT:
      if(connections_allowed)
      {
         HWND hwndClient = (HWND)wparam;
         client_list.push_back(hwndClient);
         SendMessage(hwndClient, WM_QUIK_SERVER_CONNECT, (WPARAM)hwndServer, 0);
      }
      return 0;
   case WM_QUIK_SERVER_STOP:
      connections_allowed = false;
      foreach(hwndClient in client_list)
         SendMessage(hwndClient, WM_QUIK_SERVER_DISCONNECT, (WPARAM)hwndServer, 0);
      client_list.clear();
      DestroyWindow(hwndServer);
      return 0;
   case WM_DESTROY:
      PostQuitMessage(0);
      return 0;
   // и так далее
   }
В колбеках проходим по списку client_list и каждому hwndClient из него PostMessage(hwndClient, ...), точно так же, как в оригинале, только не бродкаст.
В OnStop PostMessage(hwndServer, WM_QUIK_SERVER_STOP, 0, 0);
Вроде и вся механика, помнить только о разных потоках для мейна и колбеков.
Эвента на изменение таблицы "Клиентский портфель"
 
Цитата
Владимир написал:
шоблой роботов
Клиенты не обязаны быть именно роботами и именно торговать. Кто-то статистику ведет, кто-то какие-то события отслеживает, упихивать все это разнородье в один процесс глупо как-то. Так что сама постановка вопроса "один квик - кучка подписантов" вполне себе нормальная. Есть еще вариант "кучка квиков - кучка подписантов".
Эвента на изменение таблицы "Клиентский портфель"
 
Цитата
Михаил Филимонов написал:
"мгновенно"
Он и будет получать настолько же "мгновенно", как и в случае бродкаста, не заваливая всю систему кучами бесполезных сообщений. Перечитайте еще раз, "раз в секунду" это процесс обнаружения клиента, как только он обнаружен, сообщения посылаются ему немедленно из колбеков. Если думаете, что пройтись по своему списку окон медленнее, чем винда пройдется по списку всех окон, то это заблуждение.
Отключение интернет, Поведение программы при отключении интернет
 
Цитата
Евгений написал:
надо подождать 30-40 секунд
Сокет не может отличить потерю пакета (что обычное явление) от обрыва линии, только по таймауту. В соединениях есть настроечка проверять связь с сервером, посылая пакет  каждые (60 по умолчанию) секунд. Вот можно попробовать уменьшить. Но без фанатизма,  не надо сервер дудосить.
Эвента на изменение таблицы "Клиентский портфель"
 
Цитата
Михаил Филимонов написал:
запускать в Квике 42
Ну это как-то в лоб решение. Клиенты могут раз в секунду, скажем, рассылать бродкаст WM_APP_QUIK_CLIENT_CONNECT (название условное) с хэндлом своего окна в wparam, скрипт (один) в квике их слушает, сохраняет хэндл клиента в список подписантов и отвечает WM_APP_QUIK_SERVER_CONNECT со своим хэндлом. И все, клиент прекращает спамить, а сервер в колбеках шлет PostMessage по списку. Ну то есть стырить идею в том же дде, чуть поправив.
Определить выбранный язык QUIK из LUA
 
Цитата
BlaZed написал:
более простой способ
в info.ini прочитать секцию regional-settings.
Добавить в CreateDataSource():SetUpdateCallback() аргумент, указывающий на DataSource
 
Цитата
Imersio Arrigo написал:
сертификацию у наших маёров ему не пройти
Недавно минцифры закон выкатывало о запрете тлс 1.3 и особенно esni. Потом убрали и кого-то из замминистров уволили. Но esni и без закона не работает, просто чудесным образом пакетики бьются и соединение фейлит. Никто не виноват, случайность.

Цитата
Imersio Arrigo написал:
openssl собрать с ГОСТом
Ее и без госта собрать на виндах приключение. Под сертификацию все равно криптопро надо, а без сертификации и гост не нужон. Тксть на этой станции нет пассажиров.
Добавить в CreateDataSource():SetUpdateCallback() аргумент, указывающий на DataSource
 
Цитата
Imersio Arrigo написал:
Он же на эклиптике, не?
Кузнечик-то? Не, он ближе к аес по устройству, симметричный. А толку, что гост, браузеры и сервера на него плюют с высокой колокольни, а с тлс 1.3 вообще набор циферей урезан и фиксирован и гостом там не пахнет и не запахнет, судя по всему. Будет в крипто-про, кассы да квик наш любимый, а тут и майору глядеть не на что, он может у брокера отчет попросить без этого всего.
Добавить в CreateDataSource():SetUpdateCallback() аргумент, указывающий на DataSource
 
Цитата
Imersio Arrigo написал:
Я имею ввиду добавить на сайт хттпс, а не реализацию ssl :)
Как раз про реализацию написал.

Цитата
Imersio Arrigo написал:
А клиент вообще не замечает разницы.
Забахайте DHE на 4096 бит, несколько секунд будете ждать генерации ключа, а оно ж жужжит там внутри все эти секунды, считает.

Цитата
Imersio Arrigo написал:
Отдельный доступ для тов.майора, кмк, куда лучше открытого канала для всех
Не спорю. Тока скорее для сэра кэптайна с эллиптикой наперевес. Наши таки ниасилили, судя по всему, а кузнечик в массы не пошел.

Цитата
Imersio Arrigo написал:
Ну во-1-х чтобы юзерский сертификат отправить, его нужно иметь. Много ваших знакомых имеют таковой?
Один точно имеет. Лиха беда начало. Раньше вон люди свое яблоко регистрировали с лозунгом нам неча скрывать, а потом уже как-то раз и если тебе есть чего скрывать, хоть бы из унутренних убеждениев, ты уже и неправильный товарищ и тебя уже надо того. А куки кстати третьепартные надобно отключать, и ежли сайтик не хочет без оных работать, то и нафик такой сайтик. На сегодняшний день уже почти все там, на фике, вот форум квика пока еще отпечатки пальцев не просит. Но он делает больно другим способом )
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 28 След.
Наверх