Передача данных через общую область или стандартный буффер из одного пользовательского индикатора в другой. - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
О похожей проблематике я писал здесь:
https://championship.mql5.com/2012/ru/news
Болагодарю за участие в обсуждении. Думаю, на этом тема исчерпана.
Допустим надо передать параметры из пользовательского индикатора А в аналогичный программный субъект - В. В источнике- А описывается фиктивный буфер (фиктивный потому что рисовка его выполняться не будет, для него устанавливается параметр DRAW_NONE), для определенности BF[]. В конце функционального блока этой программы в зоне неиспользуемых баров (такие всегда можно найти) пишется что-то вроде BF[300]= f1, BF[299]=f2...С учетом того, что в принимающем индикаторе (я рассматриваю случай, когда он загружен в локальном окне) есть ограничение по MAX, обычно 100, поэтому значения f1 - масштабированы, т.е. если надо передать F1, то передается его масштабируемое значение f1=100/F1 и т.д. В принимающем модуле B пишем обращение к А: f1=iCustom( NULL,0,"инд А", , 300) и потом делаем масштабирование наоборот F1=100/f1 и т.д. Таким образом можно передавать и небольшие массивы. Думаю идея понятна.
Одно предостережение. В MQL4 в качестве буферов используются индексные массивы, которыми управляет сама система, поэтому индикатор А должен отработать полностью и без сбоев. При сбоях данные вряд ли передадутся.
В заключение: конечно это "изголение" в чистом виде, но хорошо, что можно хоть так.
А у меня механизм передачи данных совсем другой
Похоже речь идёт о передаче через файл? В принципе, с учётом буферизации, это должен быть действительно довольно быстрый и экономный механизм. Правда могут быть нюансы с синхронизацией, но если передаваемые значения меняются не слишком часто и резко это не так существенно.
Кстати, по дискуссии в https://championship.mql5.com/2012/ru/news - для того, чтобы рассчитались все буферы индикатора его достаточно вызвать из эксперта один раз, по идее. Последующие обращения, я думаю, просто берут данные из памяти. Но накладные расходы при этом видимо достаточно серьёзные (каждый раз требуется определить, рассчитывался ли уже вариант индикатора с данными параметрами) - отсюда и замедление. В этом возможно и состоит разница с индикатором, наброшенным на чарт - для него такие проверки и поиски вроде ни к чему.
Разница с индикаторами, наброшенными на чарт многократная.
А метод мой работает и на M1.
Проблема синхронизации решается довольно просто.