Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 602
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В индикаторе или в советнике/скрипте?
Yuri Evseenkov:
fromme2you:
Еще вопрос: как напрячь разработчика МТ4 и среды исполнения MQL кода, чтобы он(они) приложил ум и руки в развитии языка для обработки исключений, такие как в моем примере или сходные по смыслу?
Обращатся в сервесдеск, создать тему/опрос на форуме.
Не так давно МТ4 вообще хоронили. Сейчас тренд если не развернулся , то по крайней мере в последнее время платформу и язык стали значительно модернизировать.
См. сегодняшний пост Рената:
...
развитие МТ4 остановлено и для него будут только фиксы с косметикой.
Здравствуйте. Не могли бы знающие люди подсказать в какую сторону решить данную задачу. Нужно найти цены открытия баров в определенное время, например в 01:00, анализируя к примеру 50 последних баров. Не знаю каким образом подойти лучше к задаче на mql5.
То ли через вычисление текущей даты+добавление к ней времени требуемого, и далее уже плюсовать сутками, этот способ работал на mql4.
На mql5 я так понял есть специальные структуры с выводом времени, но почему то не получается через них.
Заранее спасибо за ответ.
Буду очень благодарен , если кто-нибудь накидает кусочек кода для понимания направления размышления.В индикаторе.
Здесь, для того, чтобы Вы потом лучше понимали, советую для начала посмотреть нумерацию баров. То есть нужно сначала точно понять, как в MQL5 индикаторе нумеруется самый правый бар.
Для этого в индикаторе, в OnCalculate, поставьте такой вывод комментария:
Этот код выдаст такой результат:
То есть по умолчанию в массивах индикатора MQL5 самый правый бар имеет индекс равный "rates_total-1".
Возвращаясь к Вашему вопросу - необходимо взять последние 50 баров и пройтись по ним. Причём анализировать время открытия бара (массив time[]), если время бара равно заданному, то запомнить индекс этого бара. Потом по этому индексу получить из массива open[] цену открытия.
Это выглядит примерно так:
Здесь, для того, чтобы Вы потом лучше понимали, советую для начала посмотреть нумерацию баров. То есть нужно сначала точно понять, как в MQL5 индикаторе нумеруется самый правый бар.
Для этого в индикаторе, в OnCalculate, поставьте такой вывод комментария:
Этот код выдаст такой результат:
То есть по умолчанию в массивах индикатора MQL5 самый правый бар имеет индекс равный "rates_total-1".
Возвращаясь к Вашему вопросу - необходимо взять последние 50 баров и пройтись по ним. Причём анализировать время открытия бара (массив time[]), если время бара равно заданному, то запомнить индекс этого бара. Потом по этому индексу получить из массива open[] цену открытия.
Это выглядит примерно так:
Karputov Vladimir,огромная Вам благодарность. Буду разбираться. В mql5 вроде сделали более гибко доступ к тайм сериям, но как то усложнилось все по моему для программистов "Любителей-новичков". :))
Дело привычки. Потом поймёте, что всё структурировано, легко и правильно.
Еще такой вопрос. Параметры
Я так понял отвечают за пару на которую наложен индикатор. И вытащить при помощи них ту же информацию о другой валютной паре нельзя? То есть более универсальное решение получается сделать такие же массивы OCHL только через функции Copy...?Еще такой вопрос. Параметры
Я так понял отвечают за пару на которую наложен индикатор. И вытащить при помощи них ту же информацию о другой валютной паре нельзя? То есть более универсальное решение получается сделать такие же массивы OCHL только через функции Copy...?При доступе к чужим символам есть нюансы, которые нужно понимать и знать: Организация доступа к данным. Другими словами, если Вы запрашиваете данные таймсерий чужого символа - сначала нужно удостовериться, что эти данные подготовлены и существуют. Только так можно будет быть уверенным в корректности запрошенных данных с чужого символа.
Понял. Спасибо.
Еще вопрос Вы в функции Print() всегда переводите значения в тип string. С какой целью это делается? Без перевода типы int,double и т.д точно так же отображаются в Print().
Понял. Спасибо.
Еще вопрос Вы в функции Print() всегда переводите значения в тип string. С какой целью это делается? Без перевода типы int,double и т.д точно так же отображаются в Print().
То как число храниться в памяти компьютера и то как оно выводится - это две большие разницы. Тем более для чисел с плавающей точкой всегда лучше ограничивать количество знаков после запятой.
Поэтому стараюсь всегда правильно форматировать вывод чисел через принт - использовать IntegerToString и DoubleToString.
То как число храниться в памяти компьютера и то как оно выводится - это две большие разницы. Тем более для чисел с плавающей точкой всегда лучше ограничивать количество знаков после запятой.
Поэтому стараюсь всегда правильно форматировать вывод чисел через принт - использовать IntegerToString и DoubleToString.
Благодарю за ответы и терпение.
Владимир, я наверное уже замучил Вас:) Но что то очень тяжко идет движение по основам основ. Попробовал сделать тестовую задачу с функциями Copy... Индикатор не рисуется, хотя в Printe числа есть... Ничего не понимаю.