Вопрос программистам - Восьмибуферный многовалютный индикатор с вложенным 7 буферным. - страница 2
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Скорее всего Вы не отвели память под массивы - выкладывайте код - будет понятно.
Это старая песня, давно было. Что значит отвести память под массивы?
Это старая песня, давно было. Что значит отвести память под массивы?
код покажите, хотя бы в части описания и заполнения массивов.
Если у Вас описание массива double arr[]; То компилятор массив не размещает (память под него не отводит) и все значения arr[1], arr[2], .... смысла иметь не будут - они могут быть затерты другими данными.
Используя функцию АррайРесайз(arr,100); можно зарезервировать память (разместить динамически) под 100 элементов массива. Тогда затертым может оказаться только arr[100] и дальше.
Или используя описание double arr[100]; Выделить память статически тоже под 100 элементов массива.
Напоминаю нумерация от нуля, следовательно сотый элемент (arr[100] ) - это уже за границей массива.
Успехов.
ЗЫ в индикаторе указатель на массив (в терминах С описание double arr[]; может считаться указателем на массив - то есть демонстрация намерения данный адрес считать началом некой связной области памяти, в которой будут размещны данные указанного типа... о как завернул.. если с С не работали - просто запомните - это еще не массив, а только его "начало"). Да так вот в индикаторах указатели можно связать с областью вывода буферного массива используя фугнкцию SetIndexBuffer(.....);
буферы это и есть массивы
сдвиговые буферы отнимают лишнее процессорное время на поражниковые операции по сдвигу всех ячеек
и чем длиннее такой буфер тем больше отнимает
циклические буферы ничего не сдвигают а управляются курсором (переменная типа int которая указывает текущий адрес начальной ячейки)
Даю 95% что проблема не в iCustom, а объединение индюков ничего кроме гемора с массивами и новых ошибок не принесет.
Хотя... нет, все-таки надо смотреть.
Пробовал через iCustom вытащить из Indexes_v8 Хирурга пару буферов для экспериментов. "Вах, ничего сделать не успел, только вошел!", и компьютер стал намертво.
все нужно выполнять в одной микросхеме для надежности и быстродействия
используй многомерные расчетные буферы в циклическом режиме
а индикаторные буферы только для вывода на экран
в своих индикаторах использую выделение памяти под расчетные данные, одномерные массивы..А для вывода использую простую конструкцию типа ArrayCopy(ExternBuff,MyBuff,0,0,Counter);
где Counter - кол-во расчетных данных
ExternBuff - буффер индикатора линии
MyBuff - буффер расчетных данных - который заполняется при выполнении расчета..При использовании двухмерных массивов для доступа к требуемой ячейке массива, требуется дополнительное время расчета позиции ячейки, что значительно замедляет процесс вычисления при больших обьемах расчетных массивов..
iCustom предназначен для новичков ИЛИ при отсутствии исходников
все нужно выполнять в одной микросхеме для надежности и быстродействия
Ага, пришел проф и все расставил по местам. Этот принцип устарел лет на двадцать.
Ага, пришел проф и все расставил по местам. Этот принцип устарел лет на двадцать.
значит я что то пропустил.. ламповые телевизеры штоли появились в продаже?
Нее..Суперкомпьютера на ЛАМПАХ НАКАЛЫВАНИЯ...