написал: На объем и время при старте влияет повторный расчет индикаторов на Lua, циклический расчет индикаторов (возможно и графиков) для каждой свечи при старте и размер сохраненной истории, по которым считаются эти индикаторы.
Но как вы догадались, Холмс? Расчёт индикатора при старте не должен сильно отличаться от расчёта при его добавлении на график. При добавлении даже три раза пересчитывается, а при старте терминала - "только" два раза. Но если в индикаторе используется getCandlesByIndex, то есть свои нюансы в расчётах. Чтобы оценить влияние Lua-индикаторов, можно переименовать папку LuaIndicators, и сравнить время загрузки с индикаторами и без.
Приведите доказательства, Ватсон.
Причины тормозов при старте. Вскрытие покажет.
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2026 07:12:35
После указанное выше рабочей гипотезы, я добавил в индикаторы сборщик мусора в начале расчета. ------------------------- Не берусь утверждать, является ли это причиной, но сегодня при старте объем занятой памяти составил 875 Мбайт, а время третьего этапа составило 2 минуты. -------------------- Так как это лишь единственный эксперимент, то исследования продолжаются.
Причины тормозов при старте. Вскрытие покажет.
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2026 06:54:12
Всем,добрый день, Предлагаю обсудить проблему тормозов при старте терминала. ------------------- До последней прошедшей недели пользовался версией 8.7 Неоднократно пытался установить более свежую версию, но всегда получал тормоза и возвращался к 8.7 ------------------- На прошедшей неделе Сбербанк перешел на единый счет и мне пришлось устанавливать версии 12 так как исчезли параметры по фьючерсам. ----------------------- Сначала установил версию 12.6 которая выложена у Сбербанка. Получил увеличение объема занятой памяти терминалом в 2 раза с 600 Мбайт до 1200Мбайт и жуткие тормоза -------------------------- По совету разработчиков установил новую версию 12.8.4 Объем занимаемой памяти при старте сократился с 1200 до 900. Почему он изменяется ? ----------------------------- Самое странное, что во время торгов объем занимаемой памяти постепенно уменьшается. Если никаких действий не совершать , то объем занимаемой памяти сокращается до 50Мбайт. Но если начать что-то делать, то он снова увеличивается, но не более 700, а иногда и не более 350Mбайт. -------------------- Трудно что-либо придумать почему так происходит. -------------------------- Но так как максимальный объем всегда получается при старте и это приводит к очень длительной загрузки, то давайте обсудим возможные причины этого. ---------------------------- Время старта можно разделить на три этапа. Первый - запуск терминал. Второй -ввод пароля Третий- ввод кода со смартфона. ------------------- самый короткий интервал - второй. Задержки при нем пока не будем рассматривать. ----------------- Сначала я предположил, как и многие на форуме, что проблема медленной загрузки в длительном получении начальной информации с сервера брокера. Но теперь у меня другая рабочая гипотеза. ================= Основа ее в том, что время первого и третьего этапов одинаковое. Характерно , первый и третий этапы имеют одинаковое значение времени исполнения -в моем случае это по 4 минуты каждый. Но в первом этапе нет никакой связи с сервером. Получается, что соединение с сервером не влияет ни на объем занимаемой памяти ни на время старта. ================= Поэтому я считаю, что указанные проблемы (время старта и объем занимаемой памяти ) связаны исключительно с вычислениями, которые совершает терминал при старте. ===================== Более того, эта гипотеза подтверждается тем, что в третьем этапе терминал сначала уменьшает объем занятой памяти до 350 Мбайт. А потом медленно начинает увеличивать его до тех же 900 Мбайт что и в первом этапе. ===================== Как правило время и занятая память у всех пользователей разные. Это связано с конкретной настройкой интерфейса. Т е числом окон с графиками, числом таблиц и стаканов и числом скриптов на Lua. ===================== Полагаю, что максимальный объем памяти в момент старта возникает по причине, возможно не единственной, но одной из основных, РАСЧЕТА ИНДИКАТОРОВ НА LUA. ======================== Известно, что индикаторы на луа вычисляются несколько раз при открытии графика. ---------------------------------------- В результате такого расчета возникает куча мусора от этих расчетов, так как сборщик мусора при старте не работает. ------------------------ В начале третьего этапе терминал удаляет все расчеты первого этапа и память сокращается. ------------------------- Так как у меня установлена подписка вручную, то ничего нового при соединении с сервером не приходит. --------------------------------- Терминал снова начинает свой расчет индикаторов и графиков и это увеличивает объем памяти до максимума для всей сессии. ------------------------- Но это еще не все. Длительный расчет индикаторов и графиков при старте связан с тем, что хотя все свечи от первой до последней имеются в начале расчета, Расчет индикаторов, а возможно и построение графиков выполняется для каждой свечи отдельно в цикле Calculate. Так как большинство индикаторов - это интегральная обработка данных в окне, то при 3000 свечах (это то что сохраняет сервер) для каждого индикатора в цикле при старте вычисления в скользящем окне выполняются 3000 и более раз. Если история сохраняется на ПК, то со временем тормоза и объем занимаемой памяти растет. -------------------------------- Предположу, что это тупиковый момент в развитии QUIK и он требует кардинальных изменений. --------------------------- Еще заметил, что число подписанных инструментов не влияет на объем и время при старте. ------------------------ Резюме: На объем и время при старте влияет повторный расчет индикаторов на Lua, циклический расчет индикаторов (возможно и графиков) для каждой свечи при старте и размер сохраненной истории, по которым считаются эти индикаторы. ---------------------------- Тот факт, что объем памяти при старте версии 12.6 на 300 Мбайт больше, чем при старте версии 12.8 говорит о том, что, как говорил сатирик "что-то не так в консерватории" ------------------------- Возможно, решением было бы исключение повторных расчетов индикаторов и принудительный запуск сборщика мусора при завершении третьего этапа. ------------------------- Исследования продолжаются.... ========================= P.S. В настоящее время кувыркаюсь с единим счетом. Постоянно исчезают позиции по фьючерсам. Кроме того, как уже писал на форуме,но без ответа, сваливание в кучу информации об акциях и фьючерсах имеет не только систематические ошибки, но и противоречит ФЗ "О рынке ЦБ" Но это уже другая история
как вернуть левую шкалу на график?
Пользователь
Сообщений: Регистрация: 30.01.2015
18.02.2026 05:27:14
Миллион раз так делаю. Иногда не сразу получается. Перед написанием совета специально сделал это несколько раз без особых проблем.
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2026 13:55:43
Обнаружил такой факт. Если в открытом окне с интервалом 1 минута сменить интервал на 5 минут, то объем занятой памяти сокращается примерно на 60 Мбайт.
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2026 13:11:37
Специально удалил таблицу ТТТ ничего не изменилось
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2026 13:07:44
Цитата
Nikolay написал: Сегодня специально убрал все таблицы текущих торгов, особенно с иностранными акциями. Была, оказывается, открыта в свернутом виде. И терминал прямо ожил. Т.е. ТТТ с большим числом записей дает такую загрузку терминала.
, Если у Вас квики от нескольких брокеров, то напишите какой размер у них файла справочника sec.dat.
Окно сообщений закрывает окно ввода
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2026 07:28:02
Версия 12.8.3.4 при старте терминала:
Как записать данные в массив?
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2026 06:49:01
Пример записи данных в таблицу скрипта есть в док QLua Приложение 1
Как записать данные в массив?
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2026 06:41:48
Цитата
prugramzer написал: Квик выдает "attempt to index a nil value (local 'cc14')" , и в сс13 тоже ничего не пишет, тоже nil Как записывать данные в массив на луа?
ошибка: local cc13, cc14={}
cc13 -таблица, а сс14 -nil ---------------- Правильно: local cc13, cc14={},{}
Скрипт для обнаружение задержек данных
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 18:32:12
Вот так сегодня тормозит Сбербанк:
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122
Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120
Mon Feb 16 14:25:19 2026,задержка(сек)=39
Mon Feb 16 14:25:49 2026,задержка(сек)=69
Mon Feb 16 14:26:19 2026,задержка(сек)=99
Mon Feb 16 14:26:49 2026,задержка(сек)=129
Mon Feb 16 16:43:49 2026,задержка(сек)=32
Mon Feb 16 16:44:19 2026,задержка(сек)=62
Mon Feb 16 16:44:49 2026,задержка(сек)=92
Mon Feb 16 16:45:19 2026,задержка(сек)=122
Mon Feb 16 16:45:49 2026,задержка(сек)=152
Mon Feb 16 19:22:50 2026,задержка(сек)=42
Mon Feb 16 19:23:19 2026,задержка(сек)=72
Mon Feb 16 19:23:50 2026,задержка(сек)=102
Mon Feb 16 19:24:20 2026,задержка(сек)=132
Mon Feb 16 19:24:50 2026,задержка(сек)=162
Mon Feb 16 19:25:50 2026,задержка(сек)=58
Mon Feb 16 19:26:20 2026,задержка(сек)=89
Mon Feb 16 19:26:50 2026,задержка(сек)=119
Mon Feb 16 19:27:50 2026
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 18:30:00
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122
Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120
Mon Feb 16 14:25:19 2026,задержка(сек)=39
Mon Feb 16 14:25:49 2026,задержка(сек)=69
Mon Feb 16 14:26:19 2026,задержка(сек)=99
Mon Feb 16 14:26:49 2026,задержка(сек)=129
Mon Feb 16 16:43:49 2026,задержка(сек)=32
Mon Feb 16 16:44:19 2026,задержка(сек)=62
Mon Feb 16 16:44:49 2026,задержка(сек)=92
Mon Feb 16 16:45:19 2026,задержка(сек)=122
Mon Feb 16 16:45:49 2026,задержка(сек)=152
Mon Feb 16 19:22:50 2026,задержка(сек)=42
Mon Feb 16 19:23:19 2026,задержка(сек)=72
Mon Feb 16 19:23:50 2026,задержка(сек)=102
Mon Feb 16 19:24:20 2026,задержка(сек)=132
Mon Feb 16 19:24:50 2026,задержка(сек)=162
Mon Feb 16 19:25:50 2026,задержка(сек)=58
Mon Feb 16 19:26:20 2026,задержка(сек)=89
Mon Feb 16 19:26:50 2026,задержка(сек)=119
Mon Feb 16 19:27:50 2026
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 16:09:46
Колбек вызывается перед записью в таблицу сделок ----------------------- Если колбек не вызван, то и записи в таблицу не будет
Гарантируется ли вызов колбэка при получении Квиком новых данных?, Вопросы разработчикам QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 16:08:49
Цитата
Йцукен написал: В документе "Использование Lua в Рабочем месте QUIK.pdf" на стр. 5-8 приведено описание событийной модели, как одного из подходов написания скриптов Lua в Рабочем месте QUIK. На стр. 8 приведён пример скрипта NumberOfTradesOnCallbacks.lua
Вопросы: 1) Гарантирует ли данный подход, что все данные по сделкам, которые получит терминал с момента запуска скрипта, будут обработаны скриптом в колбэке OnTrade? 2) Может ли быть такое, что данные на рабочее место поступили, а колбэк не был вызван?
1 да 2 нет
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 16:07:29
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122
Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120
Mon Feb 16 14:25:19 2026,задержка(сек)=39
Mon Feb 16 14:25:49 2026,задержка(сек)=69
Mon Feb 16 14:26:19 2026,задержка(сек)=99
Mon Feb 16 14:26:49 2026,задержка(сек)=129
Mon Feb 16 16:43:49 2026,задержка(сек)=32
Mon Feb 16 16:44:19 2026,задержка(сек)=62
Mon Feb 16 16:44:49 2026,задержка(сек)=92
Mon Feb 16 16:45:19 2026,задержка(сек)=122
Mon Feb 16 16:45:49 2026,задержка(сек)=152
Mon Feb 16 17:05:49 2026
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 13:29:06
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122
Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120
Mon Feb 16 14:25:19 2026,задержка(сек)=39
Mon Feb 16 14:25:49 2026,задержка(сек)=69
Mon Feb 16 14:26:19 2026,задержка(сек)=99
Mon Feb 16 14:26:49 2026,задержка(сек)=129
Mon Feb 16 14:27:19 2026
Варианты построения робота
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 12:03:54
Тема предназначена для начинающих писателей роботов ------------------ Вариантов написания роботов в терминале QUIK на луа множество. Кратко расскажу о них на основе своего опыта. ------------- По функциональному назначению можно разделить роботов на 3 класса. 1) Роботы , которые прогнозируют моменты изменения рынка для изменения позиции.Роботы-советники 2) Роботы, которые совершают транзакции на основе простейших алгоритмов и управляют стоп-заявками. 3) Роботы , которые объединяют функции 1 и 2. --------------- Любого робота можно написать либо в виде скрипта-индикатора,далее робот-индикатор, либо в виде скрипта не индикатора, далее робот-скрипт. Разница в том, что робот на основе индикатора запускается на графике инструмента, которым торгуем, а робот-скрипт, не индикатор, запускается без автоматической привязки к инструменту. ------------------ Робот индикатор самый простой в написании. в нем не надо подписываться на инструмент. В него автоматически поступают данные лишь конкретного инструмента. -------------------- Недостаток его в том, что его надо запускать на графике инструмента и следовательно надо открывать окно с графиком. Но обычно так все и торгуют. --------------- Робот-скрипт является универсальным и позволяет построить рой роботов, которые могут обмениваться данными и проводить расчеты параллельно. ---------------------------------- На этом пока все. Если есть вопросы, то отвечу --------------------- Продолжение следует...
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 11:31:46
Вообще-то, так как роботы есть разные, то целесообразность использования событий(колбеков) тоже разная. ---------------------- Поэтому сделал обработку для всех событий, а применяю в конкретном роботе то, что имеет смысл "здесь и сейчас". -------------------- Сейчас у меня все очень оптимально. Все события обрабатывает один скрипт Он же выставляет и снимает заявки. Остальные скрипты и приложения занимаются прогнозированием момента изменения позиции по конкретному инструменту Скрипт(приложение) на инструмент или класс.
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 11:23:20
Читать стакан в колбеке - это мазохизм какой-то.
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 11:21:14
Лазить в таблицы вместо колбеков имеет смысл ,например, для получения текущих значений счета или размера позиции. Но даже и в этом случае колбек может быть полезен.
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 11:15:11
Добавлю свои пять копеек в вашу вумную беседу... --------------------- Разные события обрабатываю по-разному. ------------------------ Обработка в main связана с очередью событий, если не хочется пропускать события. А стояние в очереди - это тоже время. ---------- Для оптимизации и минимизации: ----------------- OnTransReply Очень простой алгоритм, если нет ошибки. обработка ошибки сложнее, но она бывает редко. Поэтому его обработку делаю внутри функции колбека. Время обработки равно времени передачи в очередь. ----------------------- Применяю оптимизацию очереди. Суть в том, что если пришло событие по конкретному инструменту, которое уже есть в очереди, то событие в очереди уже устарело и его обрабатывать не следует.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 10:59:59
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122
Mon Feb 16 11:11:18 2026,задержка(сек)=60
Mon Feb 16 11:11:48 2026,задержка(сек)=90
Mon Feb 16 11:12:18 2026,задержка(сек)=120
Mon Feb 16 11:59:18 2026
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 09:42:20
время местное мск+1
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 09:41:24
Код
Mon Feb 16 10:27:48 2026,задержка(сек)=60
Mon Feb 16 10:28:18 2026,задержка(сек)=90
Mon Feb 16 10:28:48 2026,задержка(сек)=120
Mon Feb 16 10:29:18 2026,задержка(сек)=150
Mon Feb 16 10:30:18 2026,задержка(сек)=31
Mon Feb 16 10:30:48 2026,задержка(сек)=61
Mon Feb 16 10:31:18 2026,задержка(сек)=91
Mon Feb 16 10:31:48 2026,задержка(сек)=122
Mon Feb 16 10:40:18 2026
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 08:33:15
Сделал скрипт для их фиксации. Выложил на форум для всех желающих. Как соберу статистику выложу.
Скрипт для обнаружение задержек данных
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 08:30:40
Для обнаружения ситуаций, когда соединение с сервером нормальное, но с сервера не поступают данные ВООБЩЕ написал скрипт. Скрипт пишет данные о времени последней связи с сервером и фиксирует задержу в лог файле. скрипт в стадии тестирования. Желающие присоединяйтесь.
Код
function HMS(T)
local hms=0; for s in T:gmatch("[^:]+") do hms=60*hms+tonumber(s) end
return hms;
end
MaxTime=30
function main()
while run do
TS=getInfoParam("SERVERTIME")-- Время сервера
TW=getInfoParam("LASTRECORDTIME")-- Время последней записи
if TS and TW then
TL=getInfoParam("LASTPINGTIME") --Время последней проверки связи
if TL_OLD and TL~=TL_OLD then
local str=os.date()
if D>MaxTime then str=str..",задержка(сек)="..D; end
Log:seek("set",begin);
Log:write(str.."\n"); Log:flush();
if D>MaxTime then begin=Log:seek(); end
end
TS_HMS=HMS(TS); D=math.abs(HMS(TW)-TS_HMS)
end
TL_OLD=TL;
sleep(200);
end
end
function OnInit(ph)
ph=ph:sub(1,ph:len()-3).."log";
Log = io.open(ph, "w");Log:close(); Log = io.open(ph, "r+");
begin=Log:seek();
D=0;
run=true
end
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 08:21:40
сейчас 920Мбайт
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 08:19:57
Цитата
Pivaev Maxim написал: , просим Вас повторно запечатлить момент задержек, которые Вы наблюдаете в Рабочем месте QUIK, а также подробно уточнить время, в которое возникают задержки, и с какими данными возникают трудности.
относительно задержек не так трогает, как время старта терминала и занимаемая им память в самом начале торгов. Обычно она самая большая и составляет 1200 Мбайт. в процессе торгов она может уменьшаться в 20 раз и составлять даже 50мбайт. Но в среднем в процессе торгов составляет 300Мбайт.
Вопрос к Разработчикам. Можете объяснить этот прикол?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 08:16:51
сегодня загружалось 15 минут с момента ввода кода аутентификации.
как вернуть левую шкалу на график?
Пользователь
Сообщений: Регистрация: 30.01.2015
16.02.2026 08:15:08
Цитата
Giulia написал: Шкала была ранее скрыта. Как теперь ее снова вернуть на график?
ставите мышкой курсор на границу левой стороны рамки и тяните вправо
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 30.01.2015
15.02.2026 07:21:05
, Если Вы знаете русский язык, то фраза "до тех пор пока в потоке main не выполнится sleep или сишная функция" означает, что время измеряется от некоторого момента до выполнения sleep до момента окончания выполнения sleep. ----------------- И понять эту фразу очень сложно. Время до оператора sleep - это время обработки очереди в цикле в main (пример есть в документации). Если бы в это время колбеки остановились, то никакой очереди создать было бы невозможно. -------------------- момент времени после исполнения sleep Если в sleep 0, то это практически время начала исполнения sleep B этом случае оно совпадает с началом цикла обработки очереди. ----------------------------- таким образом Вы сказали буквально следующее: Колбеки всегда остановлены если в main нет функции sleep или параметр у нее равен нулю. Но колбеки прекрасно работают и без sleep в main. ---------------------------- Согласитесь, что вы сказали чушь.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
написал: Поэтому ничего не блокируется для исполнения sleep.
Когда же вы научитесь читать :: ? Вы читаете тексты перед тем как писать? Ведь написано:
Цитата
написал: блокируется до тех пор пока в потоке main не выполнится sleep или сишная функция
Где вы видите у меня фразу: "для исполнения"? У вас какое то недержание ваших текстов.
Вы тоже не умеете читать. Что именно по-вашему блокируется "пока в потоке main не выполнится sleep" Напишите конкретно от какого до какого момента исполнения кода в функции Main блокируется -------------------- Я написал именно на это ваше высказывание. Ничего не блокируется "до тех пор пока в потоке main не выполнится sleep или сишная функция" =================== Поясняю специально для Вас: Поток может останавливается в многопоточной системе если он обращается к ПАМЯТИ ДАННЫХ , к которой обращается в данный момент другой поток. И то если потоки должны писать в эту память. Если они читатели то никакой блокировки никто не делает. --------------------------------------- Теперь скажите К КАКОЙ ПАМЯТИ ВСЕГДА одновременно обращаются колбек и поток main для записи данных в эту память "до тех пор пока в потоке main не выполнится sleep или сишная функция" --------------------------------------
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2026 15:20:35
и еще... Если значение аргумента sleep равно нулю, поток освобождает оставшуюся часть своего интервала времени для любого потока с таким же приоритетом, готовым к выполнению. Если других готовых к выполнению потоков с таким же приоритетом нет, выполнение текущего потока не приостанавливается.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2026 15:13:41
чтобы остановить выполнение потоко с колбеком надо в функцию колбека поставить sleep. Поток колбека будет остановлен на время указанное в sleep.
Если бы я был архитектором QUIK, Что стоило бы изменить в QUIK по-крупному
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2026 15:11:44
Функция sleep уступает свободное время потока следующему потоку. Например sleep(1000) в main означает, что поток main будет остановлен системой на 1000 ms. ----------------------- Таким образом, функция sleep выполняется быстро, так как ее задача сообщить ОС чтобы та разбудила поток через заданное время. ОC устанавливает таймер на событие "запустить поток main через 1000 ms. ------------------------ Все эти действия выполняются буквально мкс . Поэтому ничего не блокируется для исполнения sleep.
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2026 13:04:19
По-моему мнению причина в том, что trans_id - это идентификатор транзакции. Главное в этой фразе что это ТРАНЗАКЦИЯ. И это транзакция на выставление заявки. Т е это не id заявки и не id сделки. Поэтому вполне допускаю, что сервер QUIK не посылает повторно сообщение о сделке, если все параметры сделки уже переданы. Нет смыла тратить время на передачу id. Возможно это происходит если сделки совершаются с малым интервалом. Тогда второе сообщение по первой сделки просто затирается сообщением по второй. Но в любом случае отслеживать id транзакции в сообщениях по сделке это нонсенс.
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2026 06:52:41
, Покажите как Вы реализовали ОnTrade. Возможно будет понятнее причина.
Цена исполнения стоп лимит
Пользователь
Сообщений: Регистрация: 30.01.2015
14.02.2026 06:47:43
Цитата
Марфа написал: Добрый вечер. Нигде не могу найти ответ. Выставила заявку "стоп лимит" на открытие короткой позиции.. Стоп лимит (продажа) = 304.55 . Цена = 304.4.Что произошло? Цена коснулась 304.55 и пошла в противоположную сторону. Результат - цена исполнения данного стоп лимита 304.6р. (выше всех цен, указанных в стоп лимите). Как такое может быть?
Поясняю: Продано по лучшей цене. Когда Ваша заявка продать по цене 304.4, которую сервер выставил по вашему стопу, долетела до биржи , лучшая цена была 304.6.
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2026 11:37:25
,
Прикольно, к серверу сбербанка - 1200Мбайт и 8 минут к демо серверу -180Мбайт и 1 минута
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2026 11:26:59
Сейчас объем занимаемой памяти уменьшился до 54 МБайт.
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2026 11:21:39
Сейчас объем занимаемой памяти уменьшился до 125 МБайт.
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2026 11:16:13
Сейчас объем занимаемой памяти уменьшился до 167 МБайт.
Не приходит полная версия OnTrade
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2026 11:14:59
Цитата
User12501 написал: Сегодня опять случилась эта бяка. За секунду произошли четыре транзакции, по трём из них полная версия OnTrade (с ненулевым trans_id) не пришла. Видимо придётся убрать из скрипта эту дополнительную проверку. Но вообще факт неприятный.
Когда делал тесты системы выставления заявок по лучшей цене, то наблюдал подобные эффекты. Как я понял это происходи тогда, когда заявка сразу исполняется встречной. В этом случае приходит сообщение что она и выставилаcь и исполнилась все в одном. При этом OnTransReply тоже содержит всю информацию о заявке. -------------------- Мне собственно безразлично такие ситуации, так как без разницы сколько раз поступили события по транзакции,заявке или сделке.
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2026 11:06:46
Сейчас объем занимаемой памяти уменьшился до 330 МБайт. За прошедшее время никаких действий в терминале не совершал.
Причина очень медленной загрузки QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
13.02.2026 10:18:48
,
Есть файл sec.dat . Вчера он был 14Мбайт сегодня 24Мбайта. Он очевидно содержит информацию по всем торгуемым инструментам. --------------------- Но они мне не нужны. -------------------------- Может надо его обрезать до требуемого количества инструментов, а не присылать кучу мусора?