Ошибки, баги, вопросы - страница 2489
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ожидались ошибки при компиляции
Извините, ответ в картинках.
Но в дебагере показывает
И для проверки значения индикатора приходится прокручивать 1268 баров. Только после этого можно проверить какие значения high и/или low равно как open/close бара использованы в расчётах индикатора.
Просто очень неудобно. Но человек быстро привыкает и подстраивается ко всему нехорошему.
Вы внимательно прочитали мою цитату постом ниже?
Такое поведение было всегда с момента введения настройки «максимальное количество баров на графике», то есть с начала MT4. И мы многократно объясняли за эти 15 лет, почему мы не урезаем каждый раз количество баров в соответствии с этой настройкой. И теперь не каждый раз урезаем.
Никто не читает документацию. Но ведь парадокс. Все равно просят, чтобы мы написали что-то ещё в документацию, которую они не читают
1. В каком месте нужно обновить документацию?
2. Однозначным идентификаторам бара всегда было время бара, а никак не его номер.
3. Если вашему графику кто-то вызвал ChartSetSymbolPeriod, то вы запросто словите изменение количества баров. Сюрприз?
4. Да, кстати, в OnCalculate есть такой параметр rates_total
1. Именно в том месте, на которое Вы и указали в последующем посте. Просто добавьте, что будет СБРОС, и этот сброс будет именно через макс баров в окне + 1439.
2. Хорошо, учту. Хотя, Вы же понимаете, что под одним временем не может быть двух баров, верно?
3. Не сюрприз. Я говорю именно про то, что если не менять ни таймфрейм, ни символ, может произойти сброс с 6439 на 5000.
4. Если Вы внимательно читали мой пост выше, то заметили, что:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Alexey Kozitsyn, 2019.06.28 10:40
Уважаемые разработчики. Уточните пожалуйста, автоматическая переразметка буферов индикатора - это нормально? Под переразметкой я понимаю следующее: макс. баров в окне, например 5000. Размер буфера + rates_total сбрасываются на 5000 по достижении размера 6439. Аналогично происходит в случае, когда макс. баров в окне = 10000. Сброс происходит при 11439.
Из-за этого индикаторы могут крашиться и показывать некорректные данные.
Билд 2085. Подобное поведение заметил где-то с 2000-х билдов.
я указал на rates_total также. Проблема то в том, что при переразметке rates_total и буферы не сбрасывается в 0 (тогда проблем бы не было, просто пересчитали бы весь индикатор и все). А принимает значение макс. баров в окне. Вот именно об этом и напишите просто.
Чтобы облегчить Вам задачу, хотелось бы видеть вот такую запись:
Для более экономичного расчета индикаторам может быть доступно больше баров, чем указано в параметре "Макс. баров в окне". С поступлением новых баров более старые бары не сразу удаляются из кэша данных. Это позволяет не пересчитывать индикатор полностью на каждом новом баре, а лишь досчитывать его значения для новых баров. Удаление старых баров происходит по достижению значения Макс. баров в окне +1439 баров.
Да, кстати, уточните пожалуйста, значение 1439 сохраняется и для других ТФ? Или только М1?
Вы внимательно прочитали мою цитату постом ниже?
Такое поведение было всегда с момента введения настройки «максимальное количество баров на графике», то есть с начала MT4. И мы многократно объясняли за эти 15 лет, почему мы не урезаем каждый раз количество баров в соответствии с этой настройкой. И теперь не каждый раз урезаем.
Никто не читает документацию. Но ведь парадокс. Все равно просят, чтобы мы написали что-то ещё в документацию, которую они не читают
Вот Вы говорите про "парадоксы" с чтением документации. А я не раз замечал, что у Вас парадоксы с чтением постов. Вы просто их зачастую читаете не до конца. У всех свои недостатки. Только лучше акцентировать внимание не на чужих недостатках, а на недостатках продукта, который Вы разрабатываете, а мы пользуемся.
Спасибо.
я указал на rates_total также. Проблема то в том, что при переразметке rates_total и буферы не сбрасывается в 0
спрака не корректная, в заблуждение вводит, вот писал https://www.mql5.com/ru/forum/304239/page57#comment_11519307
а буффера в MQL5 вообще работают как обычные массивы, в МТ4 буферами еще как то занимался терминал - то в EMPTY_VALUE их сбрасывал, то ... не помню где то писал отличие работы индикаторов МТ5 и МТ4
а в МТ5 все делаете сами - нужно очистить буфера - очистили как обычный массив, терминал только размер массива-буфера сам устанавливает
спрака не корректная, в заблуждение вводит
Дак о том и речь, что лучше один раз изменить документацию на правильную, полную и актуальную, чем 15 лет объяснять одно и тоже разным людям, которые что-то не нашли в документации.
Вы внимательно прочитали мою цитату постом ниже?
Такое поведение было всегда с момента введения настройки «максимальное количество баров на графике», то есть с начала MT4. И мы многократно объясняли за эти 15 лет, почему мы не урезаем каждый раз количество баров в соответствии с этой настройкой. И теперь не каждый раз урезаем.
Никто не читает документацию. Но ведь парадокс. Все равно просят, чтобы мы написали что-то ещё в документацию, которую они не читают
Slava, я без претензий. Прочёл внимательно и не только Вашу цитату и эту
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Slava, 2019.06.29 18:25
rates_total всегда показывает количество баров, доступных на текущем графике.
я не понял смысла вашего высказывания
и эту
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Slava, 2019.06.29 18:42
У меня сейчас нет под рукой клиентского терминала, чтобы процитировать справку. С мобильного устройства в два клика https://www.metatrader5.com/ru/terminal/help/startworking/settings#max_bars
Специально выделенный абзац
Для более экономичного расчета индикаторам может быть доступно больше баров, чем указано в параметре "Макс. баров в окне". С поступлением новых баров более старые бары не сразу удаляются из кэша данных. Это позволяет не пересчитывать индикатор полностью на каждом новом баре, а лишь досчитывать его значения для новых баров.
Я конечно что-то недопонимаю, потому и переспрашиваю, чтобы попытаться понять. И догадываюсь что изменений не будет. Пожалуйста не воспринимайте мои высказывания как претензии.
спрака не корректная, в заблуждение вводит, вот писал https://www.mql5.com/ru/forum/304239/page57#comment_11519307
а буффера в MQL5 вообще работают как обычные массивы, в МТ4 буферами еще как то занимался терминал - то в EMPTY_VALUE их сбрасывал, то ... не помню где то писал отличие работы индикаторов МТ5 и МТ4
а в МТ5 все делаете сами - нужно очистить буфера - очистили как обычный массив, терминал только размер массива-буфера сам устанавливает
Игорь, можете простым русским языком объяснить: если каждая дырочка индикаторного буфера будет заполняться какими-то значениями, которые заменят содержащийся там мусор, с какой целью эти дырочки принудительно очищать перед заполнением нужными значениями? Для потери скорости выполнения?
Игорь, можете простым русским языком объяснить: если каждая дырочка индикаторного буфера будет заполняться какими-то значениями, которые заменят содержащийся там мусор, с какой целью эти дырочки принудительно очищать перед заполнением нужными значениями? Для потери скорости выполнения?
заполнение "дырочек" критично только в индикатора со "стрелками", в МТ4 при инициализации индикатора эти "дырочки" будут заполнены значением EMPTY_VALUE автоматически
в МТ5 это должен сделать программист
или в МТ5 программист должен заполнять индикаторные буфера через конструкцию if() else
т.е. в МТ4 так будет работать:
if(...) Buf[i] = high[i];в МТ5 нужно обязательно писать:
или в МТ5 нужно очистить индикаторные буфера иначе индикатор будет при переключении ТФ рисовать "мусор" из массива который привязан индикаторным буфером .... в общем дело вкуса как писать и что учитывать
ЗЫ: скорость? ну замерьте скорость, в 99% случаях встроенные функции выполняются быстрее, но тут вообще не тот вариант чтобы найти расхождение в производительности, что заполнять каждый бар в цикле EMPTY_VALUE, что один раз проинициализировать через ArrayInitialize(Buf,EMPTY_VALUE)
заполнение "дырочек" критично только в индикатора со "стрелками", в МТ4 при инициализации индикатора эти "дырочки" будут заполнены значением EMPTY_VALUE автоматически
в МТ5 это должен сделать программист
или в МТ5 программист должен заполнять индикаторные буфера через конструкцию if() else
т.е. в МТ4 так будет работать:
в МТ5 нужно обязательно писать:
или в МТ5 нужно очистить индикаторные буфера иначе индикатор будет при переключении ТФ рисовать "мусор" из массива который привязан индикаторным буфером .... в общем дело вкуса как писать и что учитывать
ЗЫ: скорость? ну замерьте скорость, в 99% случаях встроенные функции выполняются быстрее, но тут вообще не тот вариант чтобы найти расхождение в производительности, что заполнять каждый бар в цикле EMPTY_VALUE, что один раз проинициализировать через ArrayInitialize(Buf,EMPTY_VALUE)
Всё это просто придирки. Вот так было, я так хочу, менять свои привычки сложно и прочие причины.
Конструкцию if else легко заменить на
Buf[i] = условие ? high[i] : EMPTY_VALUE;