Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 158
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как вызвать принудительное обновление индикаторы изнутри, т.е. событие OnCalculate?
Так, если не пофиксили (ниже проблемы, которые могут возникнуть).
Или по таймеру (как то так).
Так, если не пофиксили (ниже проблемы, которые могут возникнуть).
Или по таймеру (как то так).
Понятно. )) Просить штатный функционал пробовали?
Понятно. )) Просить штатный функционал пробовали?
Я нет, вообще да (МетаДраайвер вроде писал в СД), и на форуме несколько раз вопрос поднимался.
Ответ от разработчиков, если был, не знаю.
PS может пригодится
Разработка мультивалютного индикатора волатильности на MQL5
Разработка мультивалютного индикатора для анализа расхождения цен
Вроде должны были тут опубликовать, не нашел.
В первом, если ошибка вылезет
40-ая строка CCanvas canvas; ошибка
unresolved static variable 'CCanvas::m_default_colors'
добавить
uint CCanvas::m_default_colors[9]={0};
обсуждалось давно не проверял, что где поисправляли.
Ну давайте попробуем позвать Метадрайвера. Может он прольет свет, что ответили разрабы. Володья!...
Ну давайте попробуем позвать Метадрайвера. Может он прольет свет, что ответили разрабы. Володья!...
Я не совсем понял вопрос. Просить штатный вызывальщик тика - не просил. Вроде Silent наоборот собирался..., короче мы друг на друга понадеялись.
Косвенный случай был - уже после того как выяснилось, что запрос данных за пределами TERMINAL_MAX_BAR вызывает обновление всех индикаторов на чарте.
Я тогда переделал свой кнопочный перезагрузчик чарта, заслал в сервисдеск новую версию. Заодно в комментах спросил, расчитывать ли на то что фишка продолжит работу... Ну они промолчали... А меня это устроило... Так я из этого бага фичу сделал.
;)
--
Ну, строго говоря, это не баг вообще-то. Терминал не падает, даже не особо тормозит, просто обновляет данные на чарте. Я вроде понимаю, что там у них происходит. Типа: запрос за пределы существующих данных -> попытка терминала подгрузить данные, с последующим обновлением чарта. Простенько и эффективно. Зачем менять, если пострадавших нет?
// Насчёт "перерасчёта индикатора изнутри", вообще не понял проблему. Как бэ постановка вопроса непонятная. Внутри индикатор сам себе хозяин-барин, чего хочет, то и пересчитывает. А вот если по внешнему сигналу - тогда другое дело. Тогда крутимся..
Блин, может и не надо.))
Не совсем понятно как влияет prev_calculated конкретно на отрисовку индикатора.
В моем случае, попытка обновления происходит и по OnCalculate() и по таймеру. Мульти-инструмент.
При неудачной попытке получить ряды, функция прерывается до следующего тика или таймера, отрисовка не происходит но откуда-то на графике появляются не инициализированные(на вид) значения.
Хотя в Init() ArrayInitialize(Buffer ,...) присутствует.
Может у меня косяк где-то. Происходит это довольно редко, трудно отловить.
Короче, мне кажется штатная функция принудительной постановки в очередь на OnCalculate() позволила бы свести к минимуму танцы с бубном в мультиинструментных индюках, на чартах с редкими тиками.
Кстати, в справке написано ;)
Все необходимые расчеты пользовательских индикаторов необходимо размещать в предопределенной функции OnCalculate().
PS. Про "фишку" понял.
PSPS/ Складывается ощущение, что в приведенном случае, для советника надежней использовать расчет значений без использования индикатора. И отдельно индикатор для визуализации.
Но тогда два раза одно и то же считать придется.
Я не совсем понял вопрос. Просить штатный вызывальщик тика - не просил. Вроде Silent наоборот собирался..., короче мы друг на друга понадеялись.
...Я вот про это
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
MetaDriver, 2013.08.03 17:55
"Может. Только луче б вообще без изменений таймфрейма. По хорошему для индикаторов нужна тупо генерация тика.
Для мои целей это не всегда пригодно, а общем случае множество "проблем выходного дня" бы сняло.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
MetaDriver, 2013.08.03 18:02
Согласен.
Ещё б пригодилась "команда" програмного насильственного обнуления всех prev_calculated для выбpaннoгo cимвoлa. С последующей генерацией тика хорошо бы комбинировалось.
Во время визуального тестирования, в момент когда в советнике происходит переинициализация индикатора, в тестере на графике продолжает считаться и отображаться индикатор и со старыми настройками (по сути каждый раз при переинициализации добавляется еще одна "паралельная линия" ). Пробовал каждый раз перед получением нового хэндла делать IndicatorRelease - не помогает.
Вод код получение новых хэндлов -
переменную bughelper ввел потому что без смены входных параметров индикатор не пересчитывался вообще.
Я вот про это
Ну про это я ответил. У меня проблема перерасчёта решена запросом данных за пределами TERMINAL_MAX_BAR.
Причём, поскольку обновляется чарт в целом - безразлично делается ли такой запрос изнутри индикатора или из внешней программы. Главное, чтоб программа (запрашивающая) запросила данные именно по данному символу и таймфрейму.
На самом деле я не сталкивался со случаями, когда нужно обновлять чарт "на атомате". Меня моя кнопка полностью удовлетворяет. // см. ссылку выше.
С генерацией тика (без обновления чарта) проблема не решена, но я и не решал особо - её в большинстве случаев можно избежать многими способами (в основном при помощи таймера).
IndicatorRelease(firstHandle);
ERR_FUNCTION_NOT_ALLOWED
4014
Системная функция не разрешена для вызова
Подскажите пожалуйста какие могут быть причины невыполнения IndicatorRelease() ???