![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Каша в голове у Вас. Всё копируется и передаётся корректно. Никто никуда ничего не "передвигает". Происходит операция КОПИРОВАНИЯ значений индикатора с соответствующих баров.
Сейчас дам код, который выводит три значения из массива:
Теперь можно отслеживать ПЕРЕДАННЫЕ значения с трёх баров:
Спасибо за код! Вот я его и посмотрел. Классно видно, что происходит!
При появлении нового бара, появляется новый "нулевой" элемент массива, при этом "старый" "нулевой" элемент не сдвигается! А пропадает! И на его место встает копия "нового" элемента!, т.е получается, что st_RSI_Fast_Val[1] содержит не данные предыдущего st_RSI_Fast_Val[0], а копию НОВОГО st_RSI_Fast_Val[0].
Спасибо за код! Вот я его и посмотрел. Классно видно, что происходит!
При появлении нового бара, появляется новый "нулевой" элемент массива, при этом "старый" "нулевой" элемент не сдвигается! А пропадает! И на его место встает копия "нового" элемента!, т.е получается, что st_RSI_Fast_Val[1] содержит не данные предыдущего st_RSI_Fast_Val[0], а копию НОВОГО st_RSI_Fast_Val[0].
Снова каша. В общем смотрите на мой пример. Помните, что в индикаторе Нулевой бар может перерисовываться.
Плюнул на всё! Поставил правку получаемого массива в эксперте. Теперь всё показывает и отрабатывает, как положено!
Но что происходит с этими перескоками в массиве, так и не понял.
Думаю, что-то в индикаторе не так.
Ну, не может эксперт менять получаемый массив, но что там в индикаторе происходит, черт его знает, хотя, вроде, всё в нем очевидно ....
Тяжко осваивать ООП в 65 годков! Ну, да, какие наши годы!)))))
Спасибо за помощь! Вы мне реально очень помогли!Никто никому не должен. А тем более хранить :)
Я показал пример в посте 12 - все данные правильно получаются из индикатора.
Вероятно Вы что-то неверно понимаете в работе с массивами. Как только Вы скопировали три значения, Вы фактически стёрли всё, что было до этого в массиве и заменили это новыми значениями. То есть в любой момент времени после копирования трёх значений индикатора массив (в который произведено копирование) содержит данные ТРЁХ ПОСЛЕДНИХ баров: бара #0, бара #1 и бара #2.
Вот Ваш код:
Вы копируете от бара #0 три значения.
Кстати сразу ошибка - раз копируете три значения, то и результат нужно сравнивать с числом "3" - а вдруг скопировался всего один результат или только два???
Кстати, как можно избегать ошибки копирования в данном случае? Делать несколько по попыток через while пока copybuffer не вернёт значение три?
Лично я категорически против различных тормозов процесса вроде while, sleep ... Я делаю так: ошибка копирования произошла - значит выход и ждём нового тика. На новом тике снова делаем запрос.