Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Исправил название на правильное. Не помогло, всё осталось по старому...
Я не знаю, что Вы там делает, но Вот Ваши два файла. Индикатор я разместил в корне Indicators.
Принты после копирования заменил на Comments:
Эта часть работает корректно.
Запустите ИМЕННО эти файл в тестере и проверьте.
Непонятка №2: Вообще не ясно какое имя у Вашего индикатора и ГДЕ и В КАКОЙ паке он расположен.
Индикатор Step_RSI_1. Глобально находится в C:\Program Files\PSB Forex Terminal\MQL5\Indicators\Examples
Теперь вопрос: Вы зачем переписываете данные массива в котором данные скопированные из Индикатора? Зачем делаете нормализацию?
Индикатор Step_RSI_1. Глобально находится в C:\Program Files\PSB Forex Terminal\MQL5\Indicators\Examples
Читайте выше:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Проблема передачи данных из индикатора в эксперт
Vladimir Karputov, 2019.05.11 14:10
Я не знаю, что Вы там делает, но Вот Ваши два файла. Индикатор я разместил в корне Indicators.
Принты после копирования заменил на Comments:
Эта часть работает корректно.
Запустите ИМЕННО эти файл в тестере и проверьте.
Я не знаю, что Вы там делает, но Вот Ваши два файла. Индикатор я разместил в корне Indicators.
Принты после копирования заменил на Comments:
Эта часть работает корректно.
Запустите ИМЕННО эти файл в тестере и проверьте.
"Запустите ИМЕННО эти файл в тестере и проверьте."
Запустил и проверил...
Индикаторы рисуются и рисовались правильно! А вот в Эксперт правильные данные так и не передаются....(((((
В таком виде хендла Эксперт "My_Expert"не запускается...
Вот с этим запустился, но результат не радует.
Проблема в чем?
Передается значение "дискретного" RSI"
Вот на каком-то шаге было:
st_RSI_Fast_Val [1]= 55.0 st_RSI_Fast_Val [0]= 55.0
На следующем шаге RSI изменился. Стал 60. При этом st_RSI_Fast_Val [1] должен хранить значение 55, а st_RSI_Fast_Val[0] показывать 60.
А они что делают????
Показывают:
st_RSI_Fast_Val. [1]= 60.0 [0]= 60.0
Это один из фокусов. Есть и другие. Но этот показательный...
И при всем при этом индикатор рисует правильные картинки!
PS. Sorry... Должен исчезнуть на час. Если поможете буду премного благодарен. Уже ум-за-разум заходит...
***
st_RSI_Fast_Val [1]= 55.0 st_RSI_Fast_Val [0]= 55.0
На следующем шаге RSI изменился. Стал 60. При этом st_RSI_Fast_Val [1] должен хранить значение 55, а st_RSI_Fast_Val[0] показывать 60.
***
Никто никому не должен. А тем более хранить :)
Я показал пример в посте 12 - все данные правильно получаются из индикатора.
Вероятно Вы что-то неверно понимаете в работе с массивами. Как только Вы скопировали три значения, Вы фактически стёрли всё, что было до этого в массиве и заменили это новыми значениями. То есть в любой момент времени после копирования трёх значений индикатора массив (в который произведено копирование) содержит данные ТРЁХ ПОСЛЕДНИХ баров: бара #0, бара #1 и бара #2.
Вот Ваш код:
Вы копируете от бара #0 три значения.
Кстати сразу ошибка - раз копируете три значения, то и результат нужно сравнивать с числом "3" - а вдруг скопировался всего один результат или только два???
Никто никому не должен. А тем более хранить :)
Я показал пример в посте 12 - все данные правильно получаются из индикатора.
Вероятно Вы что-то неверно понимаете в работе с массивами. Как только Вы скопировали три значения, Вы фактически стёрли всё, что было до этого в массиве и заменили это новыми значениями. То есть в любой момент времени после копирования трёх значений индикатора массив (в который произведено копирование) содержит данные ТРЁХ ПОСЛЕДНИХ баров: бара #0, бара #1 и бара #2.
Вот Ваш код:
Вы копируете от бара #0 три значения.
Кстати сразу ошибка - раз копируете три значения, то и результат нужно сравнивать с числом "3" - а вдруг скопировался всего один результат или только два???
Индикатор рисуется корректно - ни слов, ни замечаний нет! И распечатка значений на рисунке индикатора корректна.
Но данные в эксперт передаются некорректно!
Я правильно понимаю работу с массивами:
CopyBuffer(st_RSI_Handle,0,0,3,st_RSI_Val) копирует в st_RSI_Val[0], ...[1],...[2] - три последних значения индикатора на текущем баре, предпоследнем баре и предпредпоследнем.
"0" стартовый номер, всего три бара -нулевой, первый и второй
Пусть в st_RSI_Val[0] образно говоря число "а", в st_RSI_Val[1] = число "b" и в st_RSI_Val[2] =число "с"
На следующем шаге имеем новое число "d". В результате в st_RSI_Val[0] оказывается число "d", в st_RSI_Val[1] - число "a', в st_RSI_Val[2] - число "b".
Ведь индикатор уже не поменяет значение чисел "а" и "b", только передвинет их по массиву, точнее поставит перед ними новое число "d"
И вот этого, например, у меня не происходит! Число "а" почему-то меняется! Конкретно у меня становится равным вновь появившемуся числу "d"/
Еще есть, например, глюк - на индикаторе уровень RSI поменялся, а в эксперт как передавалась "старая" цифра, так и продолжает передаваться...
Кстати сразу ошибка - раз копируете три значения, то и результат нужно сравнивать с числом "3" - а вдруг скопировался всего один результат или только два???
Этого, вообще, не понял - это как? Т.е. CopyBuffer(st_RSI_Handle,0,0,3,st_RSI_Val) возвращает число "3"? Я думал возвращает "-1", если что-то пошло не так.
Индикатор рисуется корректно - ни слов, ни замечаний нет! И распечатка значений на рисунке индикатора корректна.
Но данные в эксперт передаются некорректно!
Я правильно понимаю работу с массивами:
CopyBuffer(st_RSI_Handle,0,0,3,st_RSI_Val) копирует в st_RSI_Val[0], ...[1],...[2] - три последних значения индикатора на текущем баре, предпоследнем баре и предпредпоследнем.
"0" стартовый номер, всего три бара -нулевой, первый и второй
Пусть в st_RSI_Val[0] образно говоря число "а", в st_RSI_Val[1] = число "b" и в st_RSI_Val[2] =число "с"
На следующем шаге имеем новое число "d". В результате в st_RSI_Val[0] оказывается число "d", в st_RSI_Val[1] - число "a', в st_RSI_Val[2] - число "b".
Ведь индикатор уже не поменяет значение чисел "а" и "b", только передвинет их по массиву, точнее поставит перед ними новое число "d"
И вот этого, например, у меня не происходит! Число "а" почему-то меняется! Конкретно у меня становится равным вновь появившемуся числу "d"/
Еще есть, например, глюк - на индикаторе уровень RSI поменялся, а в эксперт как передавалась "старая" цифра, так и продолжает передаваться...
Этого, вообще, не понял - это как? Т.е. CopyBuffer(st_RSI_Handle,0,0,3,st_RSI_Val) возвращает число "3"? Я думал возвращает "-1", если что-то пошло не так.
Каша в голове у Вас. Всё копируется и передаётся корректно. Никто никуда ничего не "передвигает". Происходит операция КОПИРОВАНИЯ значений индикатора с соответствующих баров.
Сейчас дам код, который выводит три значения из массива:
Теперь можно отслеживать ПЕРЕДАННЫЕ значения с трёх баров: