Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2494
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Хоспаде, какие костыли. С костылем, и меньшим, я и так уже сделал. Хотелось бы без костылей. Чтоб стоковые функции адекватно работали без костылей - неужели это неразумное желание?
У Вас не костыль?
Не меньший? Что будете делать, если по индексу не получите?
Интересная реакция при запросе помощи. Пометим себе, чтобы далее больше зря не тратить время.
А вообще, при неполучении нужных данных выходить из расчётов - это стандартное рекомендуемое поведение для индикаторов.
У Вас не костыль?
Не меньший? Что будете делать, если по индексу не получите?
Интересная реакция при запросе помощи. Пометим себе, чтобы далее больше зря не тратить время.
Спасиб, конечно, но предложение подождать два дня пока пройдут выходные - не очень подходит.
По другим ответам я понял что это недоработка языка, и известная не первый день.
За вариант с переключением тф - спасиб.
Не меньший? Что будете делать, если по индексу не получите?
Так индекс он уже есть индекс. Тут ничего не нужно получать.
Спасиб, конечно, но предложение подождать два дня пока пройдут выходные - не очень подходит.
По другим ответам я понял что это недоработка языка, и известная не первый день.
За вариант с переключением тф - спасиб.
Честно говоря, вообще не понял, Вы на родном тф не можете получить данные? Это не мтф индикатор?
ЗЫ. Не нужно два дня ждать для получения нужных данных. Для родного тф данные уже все посчитаны же. И время есть в предопределённых массивах и все остальные цены - тоже. На ровном месте проблему нашли по-моему.
На ровном месте проблему нашли по-моему.
Это шутка такая? Или я сочиняю что iBarShift -1 возвращает?
Для родного тф данные уже все посчитаны же. И время есть в предопределённых массивах и все остальные цены - тоже.
Зачем это писать когда я пишу что проблема с iBarShift ?
Зачем это писать когда я пишу что проблема с iBarShift ?
Вы делаете репорт об ошибке?
Или Вы пишете программу, где просите указать как обойти ошибки в iBarShift максимально просто без "костылей"?
По-моему, и судя по Вашим постам - второе.
Вам сказали именно в ключе второй ситуации: для получения нужных данных в не мтф индикаторе используйте значения, возвращаемые из предопределённых массивов, так как в них уже все данные точно есть. Не используйте iBarShift, так как его использование там, где он не нужен в принципе - это проблемы себе на ровном месте. Как ещё Вам донести о том, что это и есть ответ Вам на Ваш вопрос?
Ваш вопрос, и мой первый на него ответ:
Т.е. при запросе данных посредством iBarShift, обязательно проверяем полученный результат. Если это -1, то просто уходим из индикатора, возвращая либо 0, либо prev_calculated. Если возвращаете 0, то на следующем тике будет полный перерасчёт всего индикатора на всей истории, если возвращаете prev_calculated, то пересчёт будет только для тех баров, которые оказались ещё не посчитанными на прошлом тике. Это уже зависит от логики, заложенной в индикатор, где используется iBarShift.
Такой ответ понятен?
Но так как у Вас индикатор не мультитаймфреймный, то от этой логики можно уйти. Просто понять, что в предопределённых массивах УЖЕ лежат все синхронизированные данные. Их количество находится в тоже предопределённой переменной rates_total. Отсюда следует, что использование iBarShift там, где он не нужен - это проблемы себе на ровном месте.
Такое дополнение к ответу понятно?
Зачем это писать когда я пишу что проблема с iBarShift ?
- дарагой, не магу шашлик взят, э?
- так бери - вот же он лежит.
- э, сачэм абыжаешь - прихватка сломался - нэ магу взят, э?
При НЕполучении нужных данных выйти из обработчика с возвратом такого значения, которое на следующем тике позволит заново пересчитать требуемое.
Если выходные, нет тиков, то либо сначала перейти на нужный таймфрейм, а затем вернуться на рабочий, либо эмулировать тик.
Артём, давайте обсудим MTF
Моя реализация, другого не нашёл
если MTF (кстати и не только MTF) ещё и в индикаторные буферы что-то такое пишет, что пользователь должен видеть (то есть индик не только для роботов делается), или требуется скорость и гарантии
то ChartSetSymbolPeriod(0,NULL,0) не панацея..он асинхронный и получается ощутимая задержка между вызовом и отображением на экране. И можно словить глюк вызывая из советника: при обращении к CopyBuffer результата нет, хотя все условия есть. А просто индикатор уже выставил SetSymbolPeriod, но новый рассчёт ещё не запустился. И советник попал в этот мизерный промежуток. А трейдер попал на деньги :-)
выход: своя отдельная рассчётная функция, которую удобно вызывать не только из OnCalculate.. И которая не использует его буферы time/open/high/etc (сама делает CopyXXX или CopyRates при надобности), потому что в других местах их просто нет.