Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И что значит "правильная последовательность массивов"?
я так и не определил это)
Сначала были "глюки" с "гистограммными" буферами, которые рисуют бары на чарте, переставил эти буферы в конец - заработало.
Потом были проблемы с обычными "линейными" буферами, полдня убил пока определил, что нужно переставить их предпослелдними, при этом "гистограммные" буферы уже где-то в середине (всего 89 буферов).
В общем, если что-то у вас не отображается - меняйте местами индикаторные буферы (при назначении).
:)
512
это для 5-рки?
Насколько я в курсе, для 4-рки 256
я так и не определил это)
вот инструкция, мне помогали, очень качественно объяснил https://www.mql5.com/ru/forum/111497/page651#comment_3073303
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
Анатолий, 2010.06.27 07:04
Стиль DRAW_HISTOGRAM ничем принципиально не отличается от других стилей рисования линий, по оси Х номера баров, по оси Y значения индикаторного массива, но как говорится, есть нюанс.
Для примера возьмем простой индикатор:
Один индикаторный массив, отдельное окно, всем элементам присваивается значение 1. Бросаем его на график, и что мы видим (Рис. 1 слева):
В «Окне данных» отображаются показания индикатора, но в его окне ничего нет. Это и есть тот самый нюанс, МТ4 просто не знает 1 это сколько? Как высоко надо рисовать столбик? Ему не отчего оттолкнуться, то есть проще говоря нет цены деления для столбиков. Как вы заметили отдельного параметра задающего высоту столбиков нет, их высота задается автоматически, относительно других элементов. Поможем МТ4, и зададим цену деления, можно программно:
Можно просто в настройках индикатора закрепить минимумы (допустим 0) и максимумы (например 2).
И все тут же встает на свои места (Рис. 2 справа), теперь терминал знает какой высоты столбец нужно нарисовать, 1 это по середине между 0 и 2 :))) Теперь вспомним MACD, вроде там жестко цену деления не задаем, а столбики рисуются как надо, все потому что они рисуются относительно друг друга, в этом примере весь индикаторный массив имеет одно значение (специально для показа «нюанса»), поэтому нужно самим показывать терминалу, сколько это много или мало. Стоит нам заменить данные массивов с 1, например на Close[shift], то жесткое ограничение можно не ставить терминал сам определится и нарисует нам картинку «аля МАКД».
Немного другая картинка, если рисовать гистограмму не в отдельном окне, а в общем. Оставим для первого индикаторного массива значение Close[shift], просто поменяем параметр:
И опят таже картина (Рис. 3 слева). Значения есть, отображения нет.
Терминалу для того чтобы автоматически рассчитывать высоту столбиков нужно от чего-то отталкиваться, а так как в общем окне закрепить минимумы и максимумы нельзя, то тут та и выходит на сцену второй индикаторный массив. Добавляем вторую линию и задаем ей значение 0.
Индикаторные массивы начинают отображаться относительно друг друга. И все становится как надо (Рис 4 справа). Столбцы рисуются от SIMPLE[shift] до SIMPLE2[shift].
Ну и на последок код индикатора закрашивающего свечи, если вверх то голубая, если вниз то розовая. И опять же по два массива на каждый цвет (зарисовка происходит от home к end (от Open к Close)).
в МТ4 очень мало доступной памяти, он же 32-х разрядный, менее 4 Гб
если закончится память, то не будет никаких сообщений, а просто для массивов перестанет выделяться память, т.е. будет так:
я свой код тестировал с ограничением чарта в 1000 баров, если поставить максимальное количество, то скорее всего не получится 512 буферов отобразить, но код индикатора будет работать
512 буферов * 8 байт double = 4 кб на один бар чарта
это для 5-рки?
Насколько я в курсе, для 4-рки 256
код для тестирования выложил, тестируйте, считайтевот инструкция, мне помогали, очень качественно объяснил https://www.mql5.com/ru/forum/111497/page651#comment_3073303
я знаю как работают гистограммы к этому нет вопросов.
я говорю о том, что буферы могут не отображаться, или отображаться неправильно, и это не зависит от типа буфера.
я знаю как работают гистограммы к этому нет вопросов.
я говорю о том, что буферы могут не отображаться, или отображаться неправильно, и это не зависит от типа буфера.
тогда точно не хватает памяти, можно проверить если набрасывать такой скрипт на чарт где большое потребление памяти:
UPD: запустил свой индикатор
а МТ4 теперь в логе терминала научился писать, что памяти не хватает:
2021.05.31 17:44:13.850 Not enough memory for 1000001 bars for custom indicator tst EURUSD,M1
2021.05.31 17:43:19.052 Not enough memory for 1000000 bars for custom indicator tst EURUSD,M1
года три назад точно не было такого, это удобно
тогда точно не хватает памяти, можно проверить если набрасывать такой скрипт на чарт где большое потребление памяти:
Рассказываю еще раз)
Буферы всегда добавляю последовательно в конец, всегда перед этим делаю рабочий "простой" индикатор, в котором всё работает.
Отправляю индикатор клиенту, он пишет "пропал боллинджер Д1" (одна из предыдущих доработок).
А я ж ничего не менял.
Полдня копаюсь ищу что с ним... всё принтуется, данные ББ считаются, а на чарте пусто.
Пересчитываю все буферы, все инициализации, прописываю всё что можно по умолчанию и тп.
Переместил этот буфер в конец - ББ появился на чарте...
пс. с гистограммами, насколько помню, примерно также - в исходнике всё работает без проблем, добавляю код в основной индикатор, свечи вверх рисует, свечи вниз пропадают. Пока не перенес буферы (в той же последовательности).
попробовал сожрать всю память в МТ4... вроде бы получилось, только скрипты запускаются и не выполняются, да и терминал полуживой, по нескольку секунд подвисает
в общем - работает не трожь!
думаю проблема ТС решена, там сама разберется
я так и не определил это)
Сначала были "глюки" с "гистограммными" буферами, которые рисуют бары на чарте, переставил эти буферы в конец - заработало.
Потом были проблемы с обычными "линейными" буферами, полдня убил пока определил, что нужно переставить их предпослелдними, при этом "гистограммные" буферы уже где-то в середине (всего 89 буферов).
В общем, если что-то у вас не отображается - меняйте местами индикаторные буферы (при назначении).
:)
Да, интересно ) Но мне до вас далеко, у индикатора всего 15 буферов. Пока все работает )