Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Напрочь никто не желает думать, прежде чем пишут!
— Один? Да их тут тысячи!
Разработчики уже дали пример как строить DRAW_LINE, в примере найдёте цикл for в OnCalculate.
И ваши комментарии не уместны из-за вашего непонимания задачи, и тем более непонимание, что я не просил чьих-то советов!
Иди почитай лучше за работу с указателями в языке Си и что это вообще такое.
Ну вот и используйте свой цикл for, ваше предложение никак не пересекается с моими потребностями.
Цикл for как бы намекает, что надо использовать > 1 точки для построения DRAW_LINE.
попробуй для
задать какое-нибудь значение, вдруг случится чудо, появится линия и придёт понимание
Иди почитай лучше за работу с указателями в языке Си и что это вообще такое.
Сдвиг с помощью ArrayCopy() это есть гуд.
Но здесь нет бага, я в своё время тоже долго не мог вьехать почему два сдвига. Без обид пожалуйста, но попросил ИИ объяснить, вроде норм получилось.
//---
Мне не нужен рабочий вариант, я знаю как сделать, у меня не получается ПОНЯТНО ОБЪЯСНИТЬ почему получается дырка.
Понял, вам нужно четкое объяснение причины дырки, а не исправление.
Почему возникает дырка:
Ваш код на открытии нового бара:
Было: массив buff размером N (последний элемент — BID последнего тика старого бара)
Пришел новый бар: rates_total увеличился до N+1, массив buff автоматически расширен, но новый элемент buff[N] содержит 0 или мусор
Сдвиг: ArrayCopy(buff, buff, 0, 1, N) — копирует элементы с индексов 1..N в индексы 0..N-1
buff[N-2] = старое buff[N-1] (последний BID старого бара)
buff[N-1] = старое buff[N] (мусор/ноль) ← ВОТ ДЫРКА
Вставка: buff[N] = текущий BID (уже нового бара)
Итог: между buff[N-2] (последний BID старого бара) и buff[N] (новый BID) находится buff[N-1] с мусором — линия падает к нулю или делает скачок.
Дырка появляется внутри старого массива после сдвига, а не на стыке баров.
Цикл for как бы намекает, что надо использовать > 1 точки для построения DRAW_LINE.
попробуй для
задать какое-нибудь значение, вдруг случится чудо, появится линия и придёт понимание
Способы обхода известны и давно тут уже написали, не в этом вся суть.
А в том, что из маленьких костыликов то там, то там и обхода всяких приколов mql5, в итоге нарастает ком не эффективного, замусоренного кода.
Пример кода выше как бы намекает, о проблеме начальной отрисовки под капотом, что может относиться косвенно или прямо к пропуску в буфере.
Разработчикам видней, я пояснил корявость реализации. А костылить тут все мастера, чем вносить предложения по исправлению.
Он может аллоцироваться с запасом N+n, вроде так Ренат давно пояснял, а сама подкапотная работа с буфером в пределах неких границ.
Что там под капотом нам не известно. Но сами размыслите, зачем допускать в реализации пропуски?
Их не должно быть априори для пользователя в проде, значит ошибка в проекте этой реализации, который возможно есть смысл пересмотреть.
Я устал повторять, что раньше давненько уже, не было не пропусков, не проблем с начальной отрисовкой.
Ладно, утомила меня эта бессмысленная беседа. Всем здравия.