![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Во вторых пусть они сами про это скажут что работы ведутся.
Я не домагаюсь а помогаю. И к разработчикам и их времени отношусь уважительно. Просто когда такой крик души об ответе а они молчат. ..
Во вторых пусть они сами про это скажут что работы ведутся.
Уважаемый sergeev очень благодарен за помощь , скропулезное изучение данного случая и оказанную помощь.
судя по всему проблема с ArrayCopySeries
хоть в хелпе и сказано, что для индикаторных буферов данные копируются (а не делается редирект доступа), но наверное все же функции *OnArray делают редирект, как и для простых массивов
разработчики могут точнее разобраться.
рабочий код я запостил в этой теме 'ПОИСКЗНАЧЕНИЯ RSI'
Действительно, если сделать расчёт iRSIOnArray один раз за тик, то всё работает:
2007.10.30 14:15:53 qwqwqwwqwq EURUSD,H1: iRSIOnArray 32.7776 RSIBuf() 32.7776 iRSI 47.1247 - 5
2007.10.30 14:15:33 qwqwqwwqwq EURUSD,H1: iRSIOnArray 34.4451 RSIBuf() 34.4451 iRSI 46.6214 - 4
2007.10.30 14:15:27 qwqwqwwqwq EURUSD,H1: iRSIOnArray 36.3726 RSIBuf() 36.3726 iRSI 46.1085 - 3
2007.10.30 14:15:17 qwqwqwwqwq EURUSD,H1: iRSIOnArray 39.6188 RSIBuf() 39.6188 iRSI 46.6214 - 2
2007.10.30 14:15:16 qwqwqwwqwq EURUSD,H1: iRSIOnArray 43.3314 RSIBuf() 43.3314 iRSI 47.1247 - 1
2007.10.30 14:15:00 qwqwqwwqwq EURUSD,H1: iRSIOnArray 46.6214 RSIBuf() 46.6214 iRSI 46.6214 - 0
Вы определили рабочий массив как индексный:
тем самым включив для массива ExtBuffer механизм экономичного расчета индикаторов, который полагается на правило "индикатор получил свою копию данных и эти данные не изменятся до следующего тика". Первый вызов (на данном тике) индикатора iRSIOnArray на индексном буфере пересчитывает данные и результат этих данных фиксируется (работает правило "индикатор получил свою копию данных и эти данные не изменятся до следующего тика").
Именно поэтому следующие вызовы iRSIOnArray не вызывают пересчетов на индексном буфере (который не может измениться до следующего тика), а берутся уже просчитанные данные. Проблема Вашего кода в том, что Вы использовали наш индексный экономичный массив для своих внутренних нужд не по назначению.
Решение проблемы:
Если не задавать ExtBuffer написать как индексный, то все нормально. ПОэтому решение такое:
Во вторых копирование выполнять только
Если пишем
то iRSIOnArray не меняется. и в журнале вообще выходит ошибка 4053 - ERR_SOME_ARRAY_ERROR
"series array cannot be used with iRSIOnArray"
Короче то что я понял - надо очень внимательно относиться к индексным массивам... Напишу у сябя на мониторе крупными буквами
Да ренат, я как раз об этом хотел написать (дошел до этого сам экспериментами)
Если не задавать ExtBuffer написать как индексный, то все нормально. ПОэтому решение такое:
Во вторых копирование выполнять только
Если пишем
то iRSIOnArray не меняется. и в журнале вообще выходит ошибка 4053 - ERR_SOME_ARRAY_ERROR
"series array cannot be used with iRSIOnArray"
Короче то что я понял - надо очень внимательно относиться к индексным массивам... Напишу у сябя на мониторе крупными буквами
Большое спасибо, с уважением Артем!