Александр Кашников (Все сообщения пользователя)

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

Страницы: 1
ParamRequest и getParamEx2, Как получить актуальные данные через getParamEx2?
 
Цитата
Старатель написал:
В результате, вызвав getParamEx2 в коллбэке OnParam(), мы получим старое значение параметра Р, сохранённое в кеше на момент времени Т0.
Вот вот, нужно в OnParam помимо клсса и кода передавать список параметров которые изменились, а то их 100+, а какой(е) именно изменился - не понятно.
А getParamEx2 это медленная функция.
Lua-таблицы. Интерфейс. Управление свойствами lua-таблиц., Как тонко настроить lua-таблицу? Механизмы взаимодействия пользователя с lua-таблицами.
 
Цитата
swerg написал:
Становитесь клиентом, который платит деньги за поддержку (брокер, например), и перед вами будут даже отчитываться.
В крайнем случае заинтересуйте вашего брокера (финансово, через объём торгов и, соответственно, комиссии) настолько, чтобы через него получать информацию.
А по-другому, зайчики, это не работает.
вообще мимо, за нас платит брокер, которому мы платим толпой.
FAQ: Оптимизация производительности клиентского места QUIK, Обсуждение
 
Цитата
Старатель написал:
В таблицу securities только добавляются новые инструменты. Старые не удаляются.
Чтобы избавиться от дохлых инструментов, удалите файл sec.dat. После подключения к серверу у вас будут только актуальные инструменты.
Отлично, т.е. info.log - в ручную, архивы графиков - вручную, sec.dat -тоже, а что еще нужно удалять? Где почитать?
Хз, у меня боты мусор за собой чистят сами.
FAQ: Оптимизация производительности клиентского места QUIK, Обсуждение
 
Цитата
Игорь М написал:
Склейка по умолчанию стоит включенной (было бы правильнее сделать её выключенной по умолчанию), но она отключается. Я при замене инструмента с истекающем сроком обращения отключаю склейку вручную.
А я не хочу каждый раз отключать вручную, хочу в настройках чекбокс для выбора, а не сообщение об истекающем сроке обращения каждую неделю.
FAQ: Оптимизация производительности клиентского места QUIK, Обсуждение
 
Уважаемая арка,
реально складывается впечатление, что вы делаете все возможное для замедления терминала. Банки вас просят или брокера - не важно.
Совесть у вас имеется?

Берем таблицу "securities" и сохраняем в файл, а там - дохлые инструменты (опционы, фьючерсы) аж с 2018г. о какой производительности речь?
Вот откуда берутся 17к + инструментов - из них 70% просто не существуют.
Конечно вы скажете, что это биржа спамит, ну так фильтруйте, зачем по сети кидать барахло.

И когда будет добавлен код класса в таблицы "depo_limits" и "futures_client_holding"?
Полазил по форуму - никого особо не беспокоит поискать в барахле "securities" код класса - луа же быстрый, фигли там лупануть 17к строк-таблиц.
Или вы не знаете код класса при добавлении в эти таблицы?
Сомневаюсь сильно, знаете, просто биржа так транслирует, а вам пофик.
Приходится "нырять" в securities по каждому новому инструменту добавленному в эти таблицы, да еще и код класса фильтровать - бред вообще.

Кстати, обновляются "depo_limits" и "futures_client_holding" секунд через 10-15 после того, как заявка "прописалась" или изменилась в таблице "orders" как такое возможно?
Я на счетах костяшки быстрее подвину.

Обезличенные сделки - вообще вещь опасная - их может просто не быть с утреца и до обеда.
И никакой перезаказ данных особо не помогает, только часа 2 общения с тех.поддержкой квик брокера (если дозвонишься), еще и спрашивают - "а зачем вам обезличенные сделки?"
А действительно, зачем?
Если функционал по ним работает как попало и трансляцию ВСЕХ сделок по ВСЕМ инструментам никак не убить - спам? - спам чистейший.
Мало того, роботы, алгоритмы которых основаны на обезличенных сделках, вынуждены крыть позиции внутри сессии, т.к. завтра обезличенных сделок может не быть с утра и привет дядя Коля.

Склейка инструментов на срочке - подтверждаю - это бред, который никому не нужен.
Свечки это совсем не актуальная информация, их перерисовывают при каждом клиринге - скрывают сделки крупных ММ.
А тут еще вы со своей склейкой и главное выбора никакого нет, а я не просил склейку и никто не просил, даже Вася не просил, я у него спрашивал.
Нужно склейку убрать из терминала, кому нужно - закажут свечки с финама.

"Умный заказ данных" - реально в кавычках, т.к. какой-то неликвид, по которому последняя сделка была 2 года назад, вдруг начинает спамить сообщения по 50 штук в секунду, что у него планку долбит и вот-вот начнется аукцион.
Добавляю этот инструмент в текущие торги - не было по нему сделок ни сегодня, ни вчера - 2 года назад была одна сделка и стакан пустой, как же так? Нафига мне эти сообщения? Терминал аж подвисает.

Вспоминаю quik 6,0 - афигенный шустрый терминал, транзакция до биржи летела 20-40 ms, а сейчас 300-400ms это минимум, да еще периодически это значение зашкаливает до минуты-двух (с курьером отправляете?)
А сейчас - жалкое подобие, деградируете?
После обновления вылетает по причине переполнения памяти!, Обновились до 8.8.1.5 - расход памяти растет на глазах. За полчаса достигает максимума и вылетает.
 
Цитата
Egor Zaytsev написал:
Добрый день.

Александр, нужно провести разбор вашего рабочего места QUIK. Проверьте открыта ли таблица купить/продать, если да, то закройте ее и проверьте результат.
Также сделайте дамп процесса через диспетчер задач и пришлите нам на  quiksupport@arqatech.com  архив рабочего места QUIK без ключей и сам файл дампа.
Вам уже послали несколько рабочих мест уже с неделю как, у вас проблема не воспроизводится? Купите бюджетный комп/ноут, как у большинства людей и пробуйте, проблема быстро найдется.
После обновления вылетает по причине переполнения памяти!, Обновились до 8.8.1.5 - расход памяти растет на глазах. За полчаса достигает максимума и вылетает.
 
Цитата
Александр написал:
P.S. В итоге откатился на предыдущую версию, перезаписав поверх из папки backup (QUIK при каждом обновлении делает туда копию изменившихся файлов), работает идеально. Так что если кто отчаялся увидеть быстрое решение проблемы - вариант, главное игнорировать предложения обновиться при запуске программы.
Это не решение, там своих косяков хватает, с которыми уже надеялся распрощаться, но тут каждые исправленные 10 косяков рождают 1 новый как минимум (это в идеале, на деле 1/1)
После обновления вылетает по причине переполнения памяти!, Обновились до 8.8.1.5 - расход памяти растет на глазах. За полчаса достигает максимума и вылетает.
 
Здравствуйте, присоединяюсь, quik 8.8.1.5, обновился сегодня.
Память растет по 1-5 мб/сек, ЦП ниже 10% не падает, даже при свернутом окне терминала (подскакивает до 40% и так держится минуту - две)
Включение/выключение скриптов погоды не делают (+- 1% ЦП +- 2000 кб памяти)
GetInfoParam("SERVERTIME"), не всегда срабатывает
 
Цитата
Николай Камынин написал:
для информации
из своего опыта.
1) синхронизируйте комп с сервером точного времени (атомными часами) в итоге время сервера биржи будет совпадать с временем компа и как правило с сервером брокера с погрешностью не более 100 мс (можно получить и 10)
2) сверните  окна в квике, которые не используете . Открытые графические окна могут сильно тормозить
3) по возможности закройте все приложения особенно браузер ( я для браузера и прочего использую второй комп)
Успехов
Николай, спасибо!
Все что вы перечислили, мне известно, так не делаю, хотя есть возможность выше перечисленное убрать на второй комп, но мне и этот нагрузить нормально не получается.
Сам факт, что прошло уже много лет, а как не работало, так и не работает.

Считаю, если официально объявлена функция в доке, значит должна работать так, как описано в доке.
Если не работает, значит, используя эту функцию, пользователь будет терять деньги. А это подсудное дело.
Товарищи из арки уверены, что пользователи их ПО не соберутся толпой и не выдвинут им иск никогда, и скорее всего так и будет., на то и расчет.
GetInfoParam("SERVERTIME"), не всегда срабатывает
 
Цитата
Sergey Gorokhov написал:
Здравствуйте,
Да в случае с SERVERTIME могут быть пропуски.
надежней всего использовать следующий код
Код
     base_time  =   "14:25:58"   
         stime  =  tostring(GetInfoParam( "SERVERTIME" )) 

    function   FixTime (V)
      V = tostring(V)
       local  Out  =   os.date ( "!*t" , os.time ())
       local  len  =   string.len (V)
       if  len >  6   then 
         Out.hour,Out.min,Out.sec  =   string.match (V,"(%d%d)%p(%d%d)%p(%d%d)")
       elseif  len =  =  6   then 
         Out.hour,Out.min,Out.sec   =   string.match (V,"(%d%d)(%d%d)(%d%d)")
       elseif  len =  =  5   then 
         Out.hour,Out.min,Out.sec   =   string.match (V,"(%d)(%d%d)(%d%d)")
       end 
       return  Out
    end 

  if   os.time (FixTime(stime))  >  =   os.time (FixTime(base_time))  then 
    message ( "Hello World" )
  end   
Поскольку гугл привел сюда, то тут и задам вопрос.
Лирика: ваша FixTime (V) избыточна применительно к проверкам такого рода совместно с GetInfoParam( "SERVERTIME" ). Просто убрать два двоеточия гораздо быстрее, а смысл тот же.
По делу:
Давно не пользовался GetInfoParam( "SERVERTIME" ), потому, как она не работала как нужно, намучился в свое время.
Легче отправить транзакцию и получить ошибку и уже эту ошибку обработать, чем заранее пользоваться ограничением по времени: сессия идет или нет. Но понадобилось чуть раньше тормозить робота, чем начнется клиринг.
Решил сегодня сделать проверку GetInfoParam( "SERVERTIME" ) - а вдруг вы починили?
На что я рассчитывал, сущеглупый...

Вот тут сразу две ваши функции: getInfoParam("SERVERTIME") и getInfoParam("LASTRECORDTIME"). Если с LASTRECORDTIME все понятно и от нее нечего особо ждать, то SERVERTIME обязана работать точно:
SERVERTIME == (время ПК +- пару секунд +- часовой пояс). (про провайдера мне не стоит упоминать, сейчас не 2000г. и в моем городе их штук 6 - убьют любого за клиента)
10:29:54.176739 Debug: OnConnected flag true
10:29:56.996268 Debug: servertime; 8:45:00; lastrecordtime; 8:45:00
10:29:57.006266 Debug: servertime; 8:45:00; lastrecordtime; 8:45:00
10:29:57.015929 Debug: servertime; 10:29:15; lastrecordtime; 10:29:15
10:29:57.015929 Debug: servertime; 10:29:15; lastrecordtime; 10:29:15; offset_tm; -42
После соединения с сервером (а OnConnected всегда запаздывает на 2 секунды от реального времени соединения) проходит еще почти 3 секунды, в ожидании, что LASTRECORDTIME == SERVERTIME.
После чего ваш сервер посылает время последней записи, которое чудесным образом начинает совпадать со временем сервера и происходит скачек из прошлого, но не в настоящее, а в недалекое прошлое.
Каждую строку записи разделяет минимум sleep(1) в цикле.
Реальная разница между временем моего ПК и серверным +- 2 сек, всегда, на протяжении 10 последних лет. А тут -42 секунды!, и это еще так себе, и по 5000++ секунд бывает, зависит от времени нахождения в дисконекте и времени наступления этого дисконекта.
Сие знание про +-2 секунды - не стандарт и характерно только в связке "мой ПК и ваш сервер" и не может быть использовано где то еще, например, на ПК Васи Пупкина могут быть +-10 сеунд
И вычислять это нет никакого желания, потому как "васей" много и у каждого свое.
Хочется взять время сервера и ПК в секундах и получить нужное смещение -offset_tm, а дальше в коде использовать как: curr_tm = os.time() + offset_tm

Внимание, ВОПРОСЫ!
Откуда берет значение getInfoParam("SERVERTIME")?
Через какое МИНИМАЛЬНОЕ время после соединения с вашим сервером ГАРАНТИРОВАННО можно понять, что данные получаемые с сервера корректны (время ПК +- пару секунд +- часовой пояс), а не далекое прошлое, как в примере выше?
getQuoteLevel2, Приведение данных к корректному виду
 
Цитата
Egor Zaytsev написал:
Цитата
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам,     что реализация пожелания признана потенциально целесообразной. Если     по результатам дальнейшего анализа, включающего юридические аспекты,     анализ на непротиворечивость с общей политикой компании, никаких     возражений не возникнет, мы постараемся включить Ваше пожелание в     план доработок при выпуске одной из следующих версий нашего ПО.
4 года спустя в документации нет описания getQuoteLevel2Ex.
Подняли пару десятков версий, добавили кривого и глупого функционала, без которого жилось гораздо проще, а реально косые места не выпрямили. Что вы там делаете?
Клепаете платное ПО такое же кривое?
Скинули свои прямые обязанности на конечных пользователей, и сидите в носу ковыряете, да отписками занимаетесь - и умничаете.
Реально 90% кода это проверки на nil и преобразование типов, которые априори не нужно преобразовывать - издеваетесь, да?
Страницы: 1
Наверх