Обсуждение статьи "Графические интерфейсы X: Расширенное управление списками и таблицами. Оптимизация кода (build 7)" - страница 4

 
Anatoli Kazharski:

Через события тогда. Но никак не через таймер с такой частотой. В общем, тормоза с твоей стороны, а не со стороны библиотеки или записи видео. У меня больше вопросов нет.

То, что тормоза на моей стороне - и так понятно - не будь таким ранимым (чуть что, так защищаться стараешься ;)) Но то, что без записи видео таких тормозов нет - факт. Они есть, но небольшие.

Как без таймера организовать событийную модель при переборе неизвестного количества символов? OnTick()не позволит вовремя определять нужное событие на "неродном" символе.
Значит - только просматривать через таймер в цикле все требующиеся символы, определять критерий и отправлять событие. Далее уже событие обрабатывать.
Я думал над этим уже. От цикла по символам в таймере с контролем нужных критериев всё равно не избавиться. А обработка события не занимает много времени. Хотя чуть разгрузит таймер. Попробую конечно - уже в принципе собирался.

 
Artyom Trishkin:

...

Как без таймера организовать событийную модель при переборе неизвестного количества символов? OnTick()не позволит вовремя определять нужное событие на "неродном" символе.
Значит - только просматривать через таймер в цикле все требующиеся символы, определять критерий и отправлять событие. Далее уже событие обрабатывать.
Я думал над этим уже. От цикла по символам в таймере с контролем нужных критериев всё равно не избавиться. А обработка события не занимает много времени. Хотя чуть разгрузит таймер. Попробую конечно - уже в принципе собирался.

А сколько символов было в обработке при записи видео?

Вот такой вариант не подходит? >>> Рецепты MQL5 - Мультивалютный эксперт: пример простой, точной и быстрой схемы. Если нет, то почему? 

 
Artyom Trishkin:


Как без таймера организовать событийную модель при переборе неизвестного количества символов? OnTick()не позволит вовремя определять нужное событие на "неродном" символе.
Значит - только просматривать через таймер в цикле все требующиеся символы, определять критерий и отправлять событие. Далее уже событие обрабатывать.
Я думал над этим уже. От цикла по символам в таймере с контролем нужных критериев всё равно не избавиться. А обработка события не занимает много времени. Хотя чуть разгрузит таймер. Попробую конечно - уже в принципе собирался.

В свое время, я зачем то изучал временные промежутки между приходящими тиками. Искал какие то закономерности. Посветил этому не одну неделю. Могу сказать, что наблюдаемые потоки тиков приходили с частотой не выше чем 90 - 100 миллесекунд.

Если Вам нужно проверять множество инструментов на предмет прихода тиков, то думаю делать это чаще чем раз в 100 миллесекунд смысла нет. Не думаю, что есть асинхронность в приходе тиков между инструментами, из за которой нужно было бы повышать частоту проверки до максимальных 16 мс.

Есть ли асинхронность в приходе тиков на инструментах, которая повышает общую тиковою частоту до 16 мс, можно легко проверить с помощью Alert.
 
Anatoli Kazharski:

А сколько символов было в обработке при записи видео?

Вот такой вариант не подходит? >>> Рецепты MQL5 - Мультивалютный эксперт: пример простой, точной и быстрой схемы. Если нет, то почему? 

Символов всего участвовало где-то 13 из 34-х - там определяется сначала наличие сигнала на символах, отбираются те, которые с сигналом, и вот они-то и участвуют в переборе в таймере - ищется пересечение ценой требуемых уровней.

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

Насчёт предложенной событийной модели - я такое уже практиковал, но только в тех случаях, когда графики были открыты. А так выходит, что мне придётся на каждый нужный символ (заранее не известный) накидывать агента, который будет события отсылать - разве это не затребует ещё большего количества ресурсов?

 
Artyom Trishkin:

Символов всего участвовало где-то 13 из 34-х - там определяется сначала наличие сигнала на символах, отбираются те, которые с сигналом, и вот они-то и участвуют в переборе в таймере - ищется пересечение ценой требуемых уровней.

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

Насчёт предложенной событийной модели - я такое уже практиковал, но только в тех случаях, когда графики были открыты. А так выходит, что мне придётся на каждый нужный символ (заранее не известный) накидывать агента, который будет события отсылать - разве это не затребует ещё большего количества ресурсов?

Не смогу пока точно сказать, какой в итоге может получиться результат. Надо тестировать. Сам пока занят, поэтому, если сделаешь, то продемонстрируй потом, пожалуйста, что получилось, если будет свободная минута. Очень интересно.

Сейчас работаю над многострочным полем ввода (CTextBox) без ограничений. Будет почти аналог Windows-приложения "Блокнот". )

 
Anatoli Kazharski:

Не смогу пока точно сказать, какой в итоге может получиться результат. Надо тестировать. Сам пока занят, поэтому, если сделаешь, то продемонстрируй потом, пожалуйста, что получилось, если будет свободная минута. Очень интересно.

Сейчас работаю над многострочным полем ввода (CTextBox) без ограничений. Будет почти аналог Windows-приложения "Блокнот". )

Лады, какой результат получится - увидим.

Интересное поле ввода - поглядим-с ;)

 
Artyom Trishkin:

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

Теоретическое время появления следующего бара известно. И оно одинаково для всех инструментов.

Проверять, действительно ли появился бар на рабочем списке инструментов, можно только когда это расчетное время наступит.

 
Andrey Khatimlianskii:

Теоретическое время появления следующего бара известно. И оно одинаково для всех инструментов.

Проверять, действительно ли появился бар на рабочем списке инструментов, можно только когда это расчетное время наступит.

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

И, да, не на каждом символе одного и того же рынка новый бар наступает одновременно с остальными - как тик первый придёт. А значит нужно ждать появление новых баров по всем символам некое время.

 
Artyom Trishkin:

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

И, да, не на каждом символе одного и того же рынка новый бар наступает одновременно с остальными - как тик первый придёт. А значит нужно ждать появление новых баров по всем символам некое время.

Ну да, где-то и в 11 утра может бар появиться, проверять с 00:00 — не вариант.

Тогда проще всего вынести проверку нового бара в отдельный секундный таймер (чаще нет смысла, как по мне).

 
Andrey Khatimlianskii:

Ну да, где-то и в 11 утра может бар появиться, проверять с 00:00 — не вариант.

Тогда проще всего вынести проверку нового бара в отдельный секундный таймер (чаще нет смысла, как по мне).

В спецификации символа есть его сессии - котировочные и торговые. Наверное от них нужно попробовать плясать начинать...