Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вы категорически не понимаете принципа работы индикаторов. И не умеете полностью читать точные обьяснения.
А именно, что размеры расчетных буферов гарантируются только в OnCalculate. Мало того, ArraySize расчетного буфера может быть больше реально доступного количества баров - догадайтесь сами, почему. Поэтому, если хотите работать с буфером вне OnCalculate, запоминайте количество реально просчитанных в OnCalculate данных в отдельной переменной.
Спасибо. Изменил архитектуру. Все работает без ошибок.
Про " ArraySize расчетного буфера может быть больше реально доступного количества баров " знаю. Это не влияет на работу.
Ранее предполагал, что количество баров в буфере устанавливается правильно именно в OnInit, а в OnCalculate только корректируется.
То есть при переключении тф корректируется и количество баров в буфере именно в OnInit.
" И не умеете полностью читать точные обьяснения ..."
Фраза "Обратите внимание, что система автоматически будет перестраивать буфер только для пересчета данных (первый раз..." корректнее звучит так:
Обратите внимание, что система автоматически будет перестраивать буфер только для пересчета данных (при первичном выводе индикатора на график и при приходе новых данных в OnCalculate. Переключение тф не влияет на размер буфера).
И именно такая фраза уже не допускает трактовки. ТО есть необходима была расшифровка, что значит первый раз.
А почему ниже описанная конструкция стала выбирать ордера в случайном порядке? В предыдущих билдах i=0 был самые старым (первым) ордером. Из 10 открытых ордеров, i=0 оказался 4 (если сортировать по тикетам и по дате открытия), i=1 оказался 7 и так далее
А почему ниже описанная конструкция стала выбирать ордера в случайном порядке? В предыдущих билдах i=0 был самые старым (первым) ордером. Из 10 открытых ордеров, i=0 оказался 4 (если сортировать по тикетам и по дате открытия), i=1 оказался 7 и так далее
Это не от билда зависит, а от того, какой способ сортировки выбран в окне "Терминал", вкладка "Торговля". Пользователь может установить сортировку по имени символа. В итоге первым в списке будет, скорее всего, другой ордер. А вот тот список ордеров, который получен программно, не зависит от способа сортировки, выбранного пользователем.
Кто может объяснить следующее.
Программа:
Помещаю эту программу на график M15.
Открываю окно с данным графиком. Во вкладке Эксперты выводится :
Перехожу на другой открытый график, на котором данная программа не установлена.
Во вкладке Эксперты выводится:
Можно поступить по-другому.
Открываем график M15 с программой. Компилируем программу. Выводится правильное значение = 1417.
Открываем любой другой график без данной программы. Компилируем программу. Выводится НЕправильное значение = 483.
В предыдущей версии терминала это не наблюдалось.Кто может объяснить следующее.
Открываем график M15 с программой. Компилируем программу. Выводится правильное значение = 1417.
Открываем любой другой график без данной программы. Компилируем программу. Выводится НЕправильное значение = 483.
Я бы предположил, что значение 1417 показано для активного окна в режиме SW_SHOWMAXIMIZED. Когда это окно становится не активным, то его ширина определяется для режима SW_SHOWNORMAL. Ошибка это, или так и задумано, не знаю.
Кто может объяснить следующее.
Проверил на билде 1335. Не воспроизводится. Действия:
Я бы предположил, что значение 1417 показано для активного окна в режиме SW_SHOWMAXIMIZED. Когда это окно становится не активным, то его ширина определяется для режима SW_SHOWNORMAL. Ошибка это, или так и задумано, не знаю.
Не нахожу в справочнике MQL4, что означают SW_SHOWNORMAL и SW_SHOWMAXIMIZED.
Проверил на билде 1335. Не воспроизводится. Действия:
С проблемой столкнулся примерно неделю назад. Ранее все работало.
Сейчас test воспроизводит ошибку. Это просто перехожу в другое окно и идущие тики ошибку воспроизводят:
А вот на основной программе, в которой и был обнаружен сбой, ошибка перестала воспроизводиться.
==================
По большому счету, это не проблема. Кусок кода, влияющий на эту ошибку уберу. Сейчас уже не могу вспомнить, зачем этот кусок кода несколько лет назад вставил.
Наверное, для корректировки вывода панельки с кнопками в случае, если размер окна с графиком будет меньше требуемого размера.
Это лишнее. Добивался максимальной автоматизации вывода ...
Проявляться ошибка стала после перекомпиляции. То есть, на нескольких графиках выведена программа. Перекомпилирую. Потом проверяю вывод на всех графиках. Возникала ошибка.
Но если перекомпиляция производится с открытым графиком, на котором возникала ошибка, ошибка не наблюдается. Если просто ставил программу на графики, то ошибка не проявляется.
==============
Когда окно находится в фокусе, ошибка не проявляется. При перекомпиляции присутствуют окна с программой, которые не находятся в фокусе.
В этих окнах происходит переустановка программы после перекомпиляции.
И ошибочное значение вызывает смещение некоторых панелек с кнопками.
С проблемой столкнулся примерно неделю назад. Ранее все работало.
Сейчас test воспроизводит ошибку. Это просто перехожу в другое окно и идущие тики ошибку воспроизводят:
А вот на основной программе, в которой и был обнаружен сбой, ошибка перестала воспроизводиться.
Попробовал и сворачивать окно индикатора, и перекомпилировал в разных состояниях окна. Все равно не получается.
Да, помнится, когда-то давно что-то подобное было. Возможно, это ошибка из разряда "исчезающего дефекта". В этом случае очень малы шансы на ее исправление.
@Slava Что могло случиться? До обеда писал индикатор, пользовался отладчиком без проблем… И вдруг после обеда вот такое в отладчике
Ни одна переменная не может быть оценена… При отладке советника всё вроде работает, а на двух индикаторах не хочет. Как это можно исправить?
Перезагрузка компа не помогла. Переустановку ОС прошу не предлагать. Слишком муторно…
PS: Странная ситуация… Запустил какую-то копию МТ4, сколько не обновлялась уже не узнать, терминал обновился, запустился получился билд 1335. Запустил отладку штатного индикатора, нормально. Скопировал свой индикатор, запустил отладку… тоже нормально. Запустил ту копию терминала и МЕ… НЕТ………… не работает. Где и что удалить, чтобы отладчик потерял тараканов?
PSPS: Я в шоке… Со второго запуска отладчика и в этом отладчике не стал показывать значения переменных.
PSPSPS: Я ещё раз в шоке. Намучился я с этой бедой до психического срыва. Ставил дважды новые терминалы, копировал туда тот злосчастный индикатор и шаблоны, в том числе Debug.tpl … И вот при очередной установке МТ в новую папку решил сделать новый шаблон……………………………… И о счастье, с новым шаблоном работает без проблем. Заменил шаблон в терминале с которого началась эта беда и … вы не поверите, но и этот отладчик начал работать.
На долго-ли¿ Откуда и каких тараканов нахватал? Хотелось-бы услышать разработчиков. Может кто захочет поэкспериментировать с тем шаблоном.