Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 990
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как раз это проверял. Но ПРОБЛЕМА в том, что установив хендэл на один постоянный период, в
CopyBuffer значение на других таймфреймах НЕ ПЕРЕДАЕТСЯ. На установленном хендлэ периоде значение было, а на меньших таймфремах 0.0 (ноль). Подвигал в поисках по буферу... ноль. Почему не передается в CopyBuffer ?
У меня копируется...
другой вопрос что копируется :) Вероятней всего Вы запрашиваете больше число баров для копирования, чем есть на том TF, принтаните
Если хэндл создан успешно, то создан он с теми параметрами, которые вы ему передали при создании. И уж отдавать данные индикатора он будет на любом таймфрейме. Вот только данные он будет отдавать того таймфрейма, который ему задали при создании. И чтобы их корректно отобразить на рабочем таймфрейме, нужно преобразовать полученные данные от хэндла индикатора к тому тф, на котором работает ваш индикатор.
Верно ли я провел эксперемент.?
Я ж вам дал направление...
Изучайте:
У меня копируется...
другой вопрос что копируется :) Вероятней всего Вы запрашиваете больше число баров для копирования, чем есть на том TF, принтаните
kopeyka2:
Верно ли я провел эксперемент.?
...
... Даже при переходе на другой таймфрейм значения должны быть от установленного D1. А вот как раз этого я не наблюдаю. Или что-то не так? Что-то ещё надо дописать при установке хэндэла? Поскольку нет передачи в буфер.
Проще говоря эксперемент руб с CopyByffer что в него класть, то и должно быть. Но там нет.
Вы не проверили доступность данных, но пытаетесь копировать. Гляньте в код выше - там в секундном таймере раз в полторы минуты идёт обращение к неродному таймфрейму - для постоянного поддержания данных в актуальном состоянии. И в коде первым делом проверяется доступность запрашиваемых данных. Если они ещё не готовы, то возврат нуля для следующего тика и полного расчёта индикатора. А вот когда уже все данные получены и рассчитаны, и отображены, то в конце возвращается количество рассчитанных данных - чтобы на следующем тике не делать полный перерасчёт.
Спасибо. Все прочитал. Буду искать.
Чего искать-то? Выше полностью рабочий код. Можете препарировать как хотите. Вашу ошибку я указал - вы не проверяете доступность данных.
Даже вот в этой строчке:
int lm=IBarShift(NULL,PERIOD_D1, iTime(NULL, PERIOD_CURRENT, limit));
где проверка того, что вернул iTime() ? Нету проверки. Но вы неизвестный результат сразу пихаете в iBarShift(). А уверены, что даёте функции то, что ожидаете?
Если хэндл создан успешно, то создан он с теми параметрами, которые вы ему передали при создании. И уж отдавать данные индикатора он будет на любом таймфрейме. Вот только данные он будет отдавать того таймфрейма, который ему задали при создании. И чтобы их корректно отобразить на рабочем таймфрейме, нужно преобразовать полученные данные от хэндла индикатора к тому тф, на котором работает ваш индикатор.
Именно я так и думал. Вопрос непонимания в словах "параметры". И я начал смотреть ВСЕ переменные которые участвуют в хэндл --> CopyBuffer
1) Мой вопрос с самого начала был в том, что бы переключив ЭКРАН таймфрейна сохранить данные хэндла. Ну как это в МТ4.
А на деле получается так:
ВСЕГДА и на ВСЕХ таймфреймах дает одно и тоже значение 10
Ничего не получив тут я двинулся дальше.
2) Цитирую: "Получает в массив buffer данные указанного буфера указанного индикатора в указанном количестве".
То есть, установив count от руки мы должны иметь ИНТЕРВАЛ со значениями. И они есть! НО!!!!!! Только когда период хэндла соответствует
таймфрейму на экране монитора PERIOD_H1. Все значения передаются четко. Но перейдя на другой таймфрейм на экране данных НЕТ.
Они НЕ ПЕРЕДАЮТСЯ НИКАК!!!! А мой вопрос был именно в этом. И количество баров для count тут не так важно, если их там НЕТ!!!
Я посмотрел предложенный индикатор MTF_LRMA.mq5 Но в нем тоже самое . Переключаемся на другой таймфрейм на экране и данные идут по таймфрейму экрана. А мне надо по хэндэлу.
Напррмер: iClose(NULL, PERIOD_H1, 5); на всех таймфреймах будут давать одно и тоже значение : Закрытие на 5 баре по Н1.
Пока что все примеры были по корректировке count буфера CopyBuffer. НО массив то ПУСТОЙ
Именно я так и думал. Вопрос непонимания в словах "параметры". И я начал смотреть ВСЕ переменные которые участвуют в хэндл --> CopyBuffer
1) Мой вопрос с самого начала был в том, что бы переключив ЭКРАН таймфрейна сохранить данные хэндла. Ну как это в МТ4.
А на деле получается так:
ВСЕГДА и на ВСЕХ таймфреймах дает одно и тоже значение 10
Ничего не получив тут я двинулся дальше.
2) Цитирую: "Получает в массив buffer данные указанного буфера указанного индикатора в указанном количестве".
То есть, установив count от руки мы должны иметь ИНТЕРВАЛ со значениями. И они есть! НО!!!!!! Только когда период хэндла соответствует
таймфрейму на экране монитора PERIOD_H1. Все значения передаются четко. Но перейдя на другой таймфрейм на экране данных НЕТ.
Они НЕ ПЕРЕДАЮТСЯ НИКАК!!!! А мой вопрос был именно в этом. И количество баров для count тут не так важно, если их там НЕТ!!!
Я посмотрел предложенный индикатор MTF_LRMA.mq5 Но в нем тоже самое . Переключаемся на другой таймфрейм на экране и данные идут по таймфрейму экрана. А мне надо по хэндэлу.
Напррмер: iClose(NULL, PERIOD_H1, 5); на всех таймфреймах будут давать одно и тоже значение : 10 баров по Н1.
Пока что все примеры были по корректировке count буфера CopyBuffer. НО массив то ПУСТОЙ
Вы не правы. Хэндл отдает данные на любом таймфрейме. Часов через 10 дам пример. С мобилы не смогу
Ок. Спасибо за ответ
Исправил сам себя
Думал может так
Но если Вы меня переубедите, что можно по первому способу получить значение технического индикатора (iMA) , подожду. Но пока непонимаю…