Ошибки, баги, вопросы - страница 3029
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
это не должно корректно работать в индикаторах:
если не ошибаюсь, то в справке есть разбор скрипта для подкачки данных по всем ТФ и должно быть предупреждение, что нельзя так запрашивать исторические данные из индикатора по причине того, что индикатор работает асинхронно
да и BarsCalculated() рекомендуют использовать один раз после связывания хэндла
UPD: скрипт для подкачки истории и объяснение, почему это не работает в индикаторах: https://www.mql5.com/ru/docs/series/timeseries_access
В этой статье написано только, что в индике нежелательно запрашивать данные из таймсерии (или запрашивать SeriesInfoInteger в цикле)
"Напомним, что отправка запроса на обновление таймсерии с тем же периодом, что и у индикатора, вызывающего обновление, крайне нежелательна. Нежелательность запроса данных по тому же символу-периоду, что и у индикатора обусловлена тем, что обновление исторических данных производится в том же потоке, в котором работает индикатор. Поэтому велика вероятность клинча."
Если же просто запросить SeriesInfoInteger и, в случае false выйти из OnCalculate, то как здесь может наступить клинч?
Вопрос ко всем:
в справке https://www.mql5.com/ru/docs/series/timeseries_access сказано:
"При вызове функций, осуществляющих копирование любых данных из таймсерий, необходимо иметь в виду то, что параметр start (номер бара, с которого начинать копирование ценовых данных) всегда должен быть в пределах доступной истории терминала. Если у нас имеется только 100 баров, то не имеет смысла пытаться скопировать 300 баров, начиная с бара с индексом 500. Такой запрос будет воспринят как ошибочный и не будет обработан, т.е. никакая история с торгового сервера подгружена не будет."
Что CopyTime выдаст -1, это понятно, но - будет ли инициирован сам процесс на построение таймсерии/ подкачки с сервера баров вплоть до 800го (500+300) или нет?
Подскажите, плиз.
1. В этой статье написано только, что в индике нежелательно запрашивать данные из таймсерии (или запрашивать SeriesInfoInteger в цикле)
"Напомним, что отправка запроса на обновление таймсерии с тем же периодом, что и у индикатора, вызывающего обновление, крайне нежелательна. Нежелательность запроса данных по тому же символу-периоду, что и у индикатора обусловлена тем, что обновление исторических данных производится в том же потоке, в котором работает индикатор. Поэтому велика вероятность клинча."
2. Если же просто запросить SeriesInfoInteger и, в случае false выйти из OnCalculate, то как здесь может наступить клинч?
1. Да, потому что нельзя тормозить поток индикатора, потому что запрос статуса синхронизации приведёт к подкачке истории, а ждать нельзя.
2. Верно. Если данные не готовы, то просто произойдет выход из онкалк, при этом запуститься терминалом синхронизации но при этом поток индикатора не будет заторможен. Следующий онкальк сможет выполниться полностью и без тормозов только когда данные будут готовы а запрашиваемый индикатор полностью посчитан. Выше в коде добавил принт, демонстрирующий, что запрашиваемый индикатор готов далеко не всегда, но для максимально быстрого расчета всех индикаторов мы можем себе позволить обсчитывать бар новый лишь один раз, а не на каждом тике.
Спасибо.
еще, посмотрите мой вопрос :https://www.mql5.com/ru/forum/1111/page3028#comment_22557528
Andrey Dik:
посмотрите код выше,
Исправьте свой код, добавьте распечатку
и когда увидите своих тараканов, сверните монитор в трубочку и засуньте… сами знаете куда.
Спасибо.
еще, посмотрите мой вопрос :https://www.mql5.com/ru/forum/1111/page3028#comment_22557528
я не уверен по этому вопросу на 100% (нужно проверять), убедившись, что запрашиваемая дата свежее, чем есть на сервере самая первая в истории, можно запрашивать данные, история будет подкачена.
я не уверен по этому вопросу на 100% (нужно проверять), убедившись, что запрашиваемая дата свежее, чем есть на сервере самая первая в истории, можно запрашивать данные, история будет подкачена.
Спасибо,
я спрашивал про другой свой пост, еще раз ссылка : https://www.mql5.com/ru/forum/1111/page3028#comment_22557528
Исправьте свой код, добавьте распечатку
и когда увидите своих тараканов, сверните монитор в трубочку и засуньте… сами знаете куда.
вы ж подтверждаете мои слова, товарисч.
Спасибо,
я спрашивал про другой свой пост, еще раз ссылка : https://www.mql5.com/ru/forum/1111/page3028#comment_22557528
возвращаем 0, тем самым заявляя, что мы ещё ничего не посчитали и прев калк не будет увеличиваться на 1 на следующем баре.
то есть, будем на баре, на котором начали запрашивать данные со старшего тф до тех пор, пока не вернём return(rates_total)
вы ж подтверждаете мои слова, товарисч.
1. Спасибо всем - я стал маленько более грамотен в индикаторах )))
2. Андрей, если кто-то не понимает твоих измышлений (и я в том числе), то это значит только одно: ТЫ не правильно рисуешь картинку! Точнее - ты её рисуешь так, что многие не понимают...