Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Yedelkin:
Пояснение. Если эксперт не предусматривает обработку тиков по символу, к графику которого он прикреплён, то непрерывная генерация событий NewTick для этого символа ведёт к изишнему переполнению очереди событий, обрабатываемых данным экспертом.
В смысле?
В эксперте нет OnTick(), а события NewTick в очередь становятся?
Как узнали, чем анализировали очередь? )
Не нашёл способа отключить при необходимости поток тиков (события NewTick) для символа, к графику которого прикреплён эксперт.
Чувствуется что отработал с воскресенья по пятницу без отдыха... :))
В смысле?
Как узнали...?
Да узнал двумя способами. Сначала знакомился со связкой EventChartCustom - OnChartEvent на примере простого сбора экспертом сигналов индикаторов с чужих символов. При этом эксперт с тиками своего символа не работал, функция Ontick() в коде эксперта была закомментирована. Когда запустил эксперт в тестере, то обнаружилось, что время прохода различается в зависимости от того, к какому символу прикрепляется эксперт. См., например, пример ниже. При одних и тех же параметрах оптимизации время проходов заметно различается.
В эксперте нет OnTick(), а события NewTick в очередь становятся?
Для проверки ответа на этот вопрос (второй способ) я модифицировал код эксперта таким образом:
т.е. вставил строчку, выделенную жёлтым фоном, с целью выявления факта поступления новых тиков по символу. Из результатов видно, что тики по символу, к которому прикреплён эксперт, поступают регулярно:Ну а поскольку в справочнике сказано, что "событие NewTick генерируется при поступлении нового тика по символу, к графику которого прикреплен эксперт", факт поступления новых тиков должен приводить к генерированию событий NewTick.
Судя по вопросу, Вы считаете, что при отключении OnTick() события NewTick не генерируются? Но в справочнике я такой информации не нашёл.
Чувствуется что отработал с воскресенья по пятницу без отдыха... :))
т.е. вставил строчку, выделенную жёлтым фоном, с целью выявления факта поступления новых тиков по символу. Из результатов видно, что тики по
символу, к которому прикреплён эксперт, поступают регулярно:
вы проверяли какое событие приводит к вызову OnChartEvent до того, как вы вызываете пользовательское ?
-------------
если
вставить в простой эксперт и пустить в тестер, то она не активируется.
у вас есть другие функции, которые вызывают OnChartEvent.?
у вас есть другие функции, которые вызывают OnChartEvent.?
Да, конечно. Так как эксперт при помощи связки EventChartCustom - OnChartEvent собирает сигналы индикаторов с чужих символов, то каждый такой индикатор имеет свой экземпляр функции EventChartCustom(). Первым параметром у каждого экземпляра функции EventChartCustom() указан идентификатор графика, к которому прикреплён наш эксперт; вторым параметром - нуль.
если вставить в любой эксперт, то она не активируется.
Приведена только часть кода, - из эксперта, который собирает сигналы индикаторов с чужих символов. Если нет индикаторов, то и эта часть кода (функция OnChartEvent) не будет обрабатывать пользовательские события ввиду их отсутствия.
вы проверяли какое событие приводит к вызову OnChartEvent до того, как вы вызываете пользовательское ?
Нет, немного не так. Я хотел посмотреть, поступают ли тики по символу, к графику которого прикреплён эксперт, в момент обработки функцией OnChartEvent() пользовательских событий, поступающих от индикаторов с чужих символов. Видно, что тики по EURGBP поступают. Исходя из справочника прихожу к выводу, что при поступлении новых тиков по символу генерируется и событие NewTick.
Не возможно понять какие ваши используемые функции привели к разным временным результатам. Без полного кода - это гадание на кофейной гуще.
NewTick - напрямую никак не связан с OnChartEvent. Поэтому предложенный вами механизм отслеживания очереди какой-то искусственный. И не уверен что он правильный.
В таком варианте я бы не стал утверждать, что задержки тестов создаются именно NewTick. И думаю что виноваты именно механизмы ваших связок, а не само событие.
Не возможно понять какие ваши используемые функции привели к разным временным результатам. Без полного кода - это гадание на кофейной гуще.
NewTick - напрямую никак не связан с OnChartEvent. Поэтому предложенный вами механизм отслеживания очереди какой-то искусственный. И не уверен что он правильный.
В таком варианте я бы не стал утверждать, что задержки тестов создаются именно NewTick. И думаю что виноваты именно механизмы ваших связок, а не само событие.
Речь-то изначально шла о другом. В первом своём сообщении я указал, что "не нашёл способа отключить при необходимости поток тиков (события NewTick) для символа, к графику которого прикреплён эксперт". Вы отреагировали на эту фразу, но способ отключить при необходимости поток тиков по нужному символу так и не указали. Прихожу к выводу, что не только я, но и Вы не знаете такого способа. Поэтому моё предложение остаётся в силе: ввести функцию-переключатель, позволяющую программно запрещать генерацию события NewTick для символа, к графику которого прикреплён эксперт.
Что касается реплик про "гадание на гуще" и "искусственность механизмов отслеживания очереди", - то я изначально и не предлагал разбираться в коде и искать ответ на вопрос "почему так происходит?". Как можно видеть из моего предложения, ответ для себя я уже нашёл. Но давайте рассмотрим проблему с более абстрактной точки зрения, без отвлечения внимания на код конкретного эксперта.
NewTick - напрямую никак не связан с OnChartEvent.
Хорошо, пусть так. Значит, NewTick связан с OnChartEvent ненапрямую, но связан. Об этом я уже сказал в пояснении, но повторюсь. Вы лучше меня знаете, что существует некая "общая очередь событий", в которую складываются все возникающие события, предопределённые и пользовательские. Обрабатываются эти события поочерёдно, в порядке их поступления. Поскольку очередь имеет некий ограниченный размер, то при её переполнении старые события удаляются без обработки. Правильно?
Тогда получается, что если эксперт не предусматривает обработку событий NewTick, а генерирование этих событий продолжается, то моя общая очередь событий попросту забивается ненужными событиями NewTick и появляется риск необработки устаревающих пользовательских событий, которые как раз и должны обрабатываться экспертом. Надеюсь, с этим выводом Вы тоже согласны. Поэтому-то и возникло вышеизложенное предложение.
Разумеется, я не знаю всех тонкостей работы очереди событий и события NewTick. Поэтому могу ошибаться в некоторых выводах и с интересом рассмотрю любые пояснения.
В таком варианте я бы не стал утверждать, что задержки тестов создаются именно NewTick. И думаю что виноваты именно механизмы ваших связок, а не само событие.
Для справки. Эксперт навешивает экземпляры одного и то же индикатора с одними и теми же параметрами и с одним и тем же "механизом связок" на соседние символы, на одном и том же временном промежутке. Связка одна и та же: EventChartCustom - OnChartEvent.
Правильно ли я понял, что Вы согласны с утверждением, что "если в эксперте нет OnTick(), то события NewTick в очередь вообще не выставляются"?
а зачем гадать и придумывать гипотезы?
ваша просьба "ввести функцию-переключатель, позволяющую программно запрещать генерацию события NewTick для символа, к графику которого прикреплён эксперт. " ясна.
Напишите в сервисдеск.
все остальное - борьба с ветряными мельницами.
а зачем гадать и придумывать гипотезы?
все остальное - борьба с ветряными мельницами.
Да не скажите :) Кто-то привык работать вслепую, а кто-то стремится побольше узнать о явлении, которое предстоит обуздать. Гипотезы же появляются на фоне отсутствия той или иной информации. Благодарю за участие в обсуждении.
В СД написал. Не знал, что туда можно адресовать предложения.