Ошибки, баги, вопросы - страница 1030
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
И еще я баршифт получал с помощью библиотеки компостера. Неужели встроенных средств в метатрейдере нет?
Твой случай лечится небольшим слипом.
У меня хуже. (Кстате, раньше твой случай без Слип'а работал, перестал несколько недель назад)
Такая же схема перестала срабатывать без жутких слипов на других (не текущем) чартах:
Код отсюда: https://www.mql5.com/ru/code/224установил сов, посмотреть.
На текущем кидаю стандарт. AMA на график, тык перерасчет (при Sleep от 0 до 2350) - сваливаюсь в М1 и больше не возвращаюсь. Через несколько сек. АМА прорисовывается, ну и всё.
Слип, в общем, не помогает, пробую с флагами (запоминать два флага, текущего тф и м1? если на текущем уже были (флаг), а сейчас на м1 (флаг 2), тогда ...)
но что то сомневаюсь... тики понедельника раньше придут, пока я на текущий тф вернусь :)
upd да, на графике у меня сотня объектов, и плюс АМА, т. е., он такой тяжеленький.
"Надо, Федя. Надо."
(с) Шурик
--
Такая ошибка возникает, например, если память под динамический буфер не распределена (в данном случае под ActualBuffer). По приведённому участку кода это непонятно.
Вот.
А как распределять память под динамический буфер?
Наверно, как узнаю, вопрос исчезнет.
Вот весь код
Вот.
А как распределять память под динамический буфер?
Наверно, как узнаю, вопрос исчезнет.
Вот весь код
Ps.
Прочитал про Array Resize там...вот копипаста
"После связывания динамический массив buffer[] будет иметь индексацию как в обычных массивах, даже если для связываемого массива будет предварительно установлена индексация как в таймсериях. Если необходимо изменить порядок доступа к элементам индикаторного массива, необходимо применить функцию ArraySetAsSeries() после связывания массива функцией SetIndexBuffer(). При этом необходимо иметь ввиду, что нельзя изменять размер для динамических массивов, назначенных в качестве индикаторных буферов функцией SetIndexBuffer(). Для индикаторных буферов все операции по изменению размера производит исполняющая подсистема терминала."
Ступор у меня.
Сохраните настроенный профиль по дефолту Файл - Профили - Default
Вот.
А как распределять память под динамический буфер?
Наверно, как узнаю, вопрос исчезнет.
Вот весь код
INDICATOR_DATA это данные для отрисовки. За этим буфером (размером) следит терминал (по rates_total, как я понимаю).
Добавьте буферы для промежуточных расчетов (INDICATOR_CALCULATIONS). Для них и устанавливайте размер.
PS у меня #include <TimeSeries.mqh> can"t open почему то, не компилится.
Upd понедельника надо подождать, что то тут не ладно.
INDICATOR_DATA это данные для отрисовки. За этим буфером (размером) следит терминал (по rates_total, как я понимаю).
Добавьте буферы для промежуточных расчетов (INDICATOR_CALCULATIONS). Для них и устанавливайте размер.
PS у меня #include <TimeSeries.mqh> can"t open почему то, не компилится.
Upd понедельника надо подождать, что то тут не ладно.
Пробовал уже менять, все равно таже ошибка. Попробую в обычный массив хотя бы занести значения, может что и выйдет.
Вот такой простенький работает. В INDICATOR_DATA пишем из INDICATOR_CALCULATIONS
INDICATOR_DATA это данные для отрисовки. За этим буфером (размером) следит терминал (по rates_total, как я понимаю).
Добавьте буферы для промежуточных расчетов (INDICATOR_CALCULATIONS). Для них и устанавливайте размер.
PS у меня #include <TimeSeries.mqh> can"t open почему то, не компилится.
Upd понедельника надо подождать, что то тут не ладно.
Брать здесь: https://www.mql5.com/ru/code/1008
Я нашёл только-что, поэтому код ещё не щупал. И пока не получится - общественность тут меня по магазинам гонит.
Думаю, что всё заработает, если проблемный код перенести из OnInit() в OnCalculate(). Давно известна особенность пятёрки - не любой код в OnInit нормально работает. Вполне вероятно, что реальное распределение автораспределяемых буферов, зарегистрированных через SetIndexBuffer() гарантированно заканчивается только после выхода из OnInit(), поскольку обязано происходить в фоновом режиме (оно же автоматическое, да?).
Заметил, что одновременно может работать только 3и агента из 8и, при получении задач из облака.
Хотя если параллельно запустить свой тест, остальные агенты тоже включаются.
Так и должно быть?