Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1119

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- Форексный VPS бесплатно на 24 часа
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Потому что минутные таймфреймы которые ниже H1, возвращают корректные значения.
Как и описано в справке, возвращают значение таймфрейма, а не от балды константы.
какой балды?
Вы глаза протрите, я же показал внутреннее представление ENUM_TIMEFRAMES
установленный бит № 16 определяет недельный и месячный ТФ
установленный бит № 15 определяет часовые ТФ, причем ТФ Д1 = 100000000011000 --> 11000 --> 24 , т..е разработчики сопоставили Д1 как 24 часа, остальные часовые ТФ соответствуют переводу в десятичную систему исчисления
для минутных ТФ по аналогии с часовыми, но старшие биты сброшены
другой вопрос, что Вы решили, что функции возвращающие ENUM_TIMEFRAMES возвращают время ТФ в минутах - это не так, эти функции возвращает перечисление ENUM_TIMEFRAMES - не больше и не меньше, просто ENUM_TIMEFRAMES
посмотрите пример из справки https://www.mql5.com/ru/docs/basis/types/integer/enumeration
перечисления могут быть и с присвоением любого константного значения члену перечисления
Вы можете создать свое перечисление отвечающее Вашим требованиям
https://www.mql5.com/ru/articles/18
https://www.mql5.com/ru/articles/5798
Спасибо большое! Помогло именно wchar_t! Прочитал про него, он в отличии от char хранит 2 байта на символ.
Правда параметр функции "str" по прежнему не возвращает присвоенное ему значение... Интересно почему?..
Здравствуйте, подскажите как решить проблему. Хочу написать советника по индикатору (привязан к железу), строящего множество уровней (линий) на графике, количество линий может достигать 500.
Всё что я хочу реализовать - это открытие ордера или любое другое событие (например, алерт или сообщение) при пересечении ценой линий на графике. Но проблема в том, что индикатор не возвращает никаких значений и строит только горизонтальные линии (объекты с названиями) - больше на графике ничего нет.
Попытался найти решение через функцию iCustom, которая извлекает уровни цены через переменную "_price", но советник при касании линий не открывает сделок. Что сделал не так не понимаю.
ВАРИАНТ 2. Открытие ордера происходит на той линии которую укажу в настройках - он работает и открывает сделки на том уровне который укажу в параметрах советника
Здравствуйте, подскажите как решить проблему. Хочу написать советника по индикатору (привязан к железу), строящего множество уровней (линий) на графике, количество линий может достигать 500.
Всё что я хочу реализовать - это открытие ордера или любое другое событие (например, алерт или сообщение) при пересечении ценой линий на графике. Но проблема в том, что индикатор не возвращает никаких значений и строит только горизонтальные линии (объекты с названиями) - больше на графике ничего нет.
Попытался найти решение через функцию iCustom, которая извлекает уровни цены через переменную "_price", но советник при касании линий не открывает сделок. Что сделал не так не понимаю.
ВАРИАНТ 2. Открытие ордера происходит на той линии которую укажу в настройках - он работает и открывает сделки на том уровне который укажу в параметрах советника
НО, что если Bid по какой-то причине перескочил линию, и не был равен цене линии, тогда что?... Предусмотрите тогда хотя бы переменную, в которой храниться предыдущий тик, и если было пересечение нового тика вашей линии - то делайте какие-то действия... Но в этом случае не забудьте предусмотреть "допустимое" пересечение, так как если рынок откроется с Гэпом большим, или просто произойдет большой скачек цены, то вы махом откроетесь по множеству линий, и возможно не там, где хотите. Пусть при пересечении больше допустимого - выдается только сообщение,..
НО, что если Bid по какой-то причине перескочил линию, и не был равен цене линии, тогда что?... Предусмотрите тогда хотя бы переменную, в которой храниться предыдущий тик, и если было пересечение нового тика вашей линии - то делайте какие-то действия... Но в этом случае не забудьте предусмотреть "допустимое" пересечение, так как если рынок откроется с Гэпом большим, или просто произойдет большой скачек цены, то вы махом откроетесь по множеству линий, и возможно не там, где хотите. Пусть при пересечении больше допустимого - выдается только сообщение,..
Проблемный код.
какой балды?
Вы глаза протрите, я же показал внутреннее представление ENUM_TIMEFRAMES
установленный бит № 16 определяет недельный и месячный ТФ
установленный бит № 15 определяет часовые ТФ, причем ТФ Д1 = 100000000011000 --> 11000 --> 24 , т..е разработчики сопоставили Д1 как 24 часа, остальные часовые ТФ соответствуют переводу в десятичную систему исчисления
для минутных ТФ по аналогии с часовыми, но старшие биты сброшены
другой вопрос, что Вы решили, что функции возвращающие ENUM_TIMEFRAMES возвращают время ТФ в минутах - это не так, эти функции возвращает перечисление ENUM_TIMEFRAMES - не больше и не меньше, просто ENUM_TIMEFRAMES
посмотрите пример из справки https://www.mql5.com/ru/docs/basis/types/integer/enumeration
перечисления могут быть и с присвоением любого константного значения члену перечисления
Вы можете создать свое перечисление отвечающее Вашим требованиям
Игорь, да это понятно давно про константные значения.
Об этом и речь, какой смысл несёт 15 и 16 бит как возвращаемое значение. Бред да и только.
По чему то до М30 константы ENUM соответствовали ЗНАЧЕНИЯМ ТАЙМФРЕЙМА !!!!
А далее уже соответствует значениям каким то битам. Ну где блин логика ребят.
По этому это грубая ошибка, а если намерено сделано так, то диверсия ))
Переменная _Period уже содержит в себе все эти значения таймфрема, из перечисления ENUM их не нужно дополнительно преобразовывать.
По этому эти константные значения, должны соответствовать значениям таймфрейма как заявлено в справке. А не БИТАМ!
Точно пора в карантин. Поиском соберите всё что об этом говорилось и читайте наздоровье. Почему вы решили что окружающие должны ещё раз всё написанное повторять?
Точно пора в карантин. Поиском соберите всё что об этом говорилось и читайте наздоровье. Почему вы решили что окружающие должны ещё раз всё написанное повторять?
А почему вы миритесь с неправильными решениями? Я донёс логичное объяснение значений констант, а не то что напридумывал разработчик.
А почему вы миритесь с неправильными решениями? Я донёс логичное объяснение значений констант, а не то что напридумывал разработчик.
Видимо для вас существует только два мнения: ваше и неправильное. Соберите всё что об этом уже писали и может быть найдёте объяснение которое вас устроит.
Вот и попробуйте использовать значение которое возвращает переменная _Period на периодах выше H1 в своих математических расчётах.
И вы сразу поймёте кто ошибся.