Ошибки, баги, вопросы - страница 1233
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
при неверном преобразовании StringToTime возвращает TimeGMT(); например при StringToTime("0") - когда аргумент не парсится.
И возвращает нормальное время когда аргумент парсится, например при StringToTime("24.10.2014") - D'2014.10.24 00:00:00'
Это нормально? Почему именно TimeGMT()? Это -2 часа от моего текущего времени в МТ4 и на компе.
в то время, как эта же функция с теми же самыми параметрами в коде эксперта работает нормально? "
мой код работает из под отладчика, но не работает в обычном режиме (вернее работает иногда причем простой закономерности почему работает а почему нет я установить не смог)
зачем вообще нужны индикаторы типа iXXX, если их нельзя нормально использовать?
давным давно поднимался вопрос об ошибке 4806 " Почему функция CopyBuffer, помещенная в пользовательском индикаторе, приводит к ошибке 4806,
в то время, как эта же функция с теми же самыми параметрами в коде эксперта работает нормально? "
мой код работает из под отладчика, но не работает в обычном режиме (вернее работает иногда причем простой закономерности почему работает а почему нет я установить не смог)
зачем вообще нужны индикаторы типа iXXX, если их нельзя нормально использовать?
Добрый день. Данные для CopyBuffer берутся с того же ТФ, на котором запущен Ваш индикатор?
Пробовали пользоваться функцией BarsCalculated() для решения проблемы?
Как в MQL-ном ООП проверить тип указателя на принадлежность к конкретному классу - типа instanceof в JavaScript или typeid в C++?
Добрый день. Данные для CopyBuffer берутся с того же ТФ, на котором запущен Ваш индикатор?
Пробовали пользоваться функцией BarsCalculated() для решения проблемы?
День добрый.
Проблема с вызовами функций из системных dll. Задача -- написать простенький сервер TCP на MQL5, к-ый висит на определенном порту и просто принимает сообщения.
Импортировал из ws2_32.dll функции WSAStartup(), WSAClenup(), socket(), bind(), accept(), listen(), recv(). Все работает ровно до того, пока не попытаешься остановить сервер. После попытки остановит сервер и корректно завершить работу скрипта, терминал просто вылетает.
Методом научного тыка вышел на функцию recv().
в прикрепленном файле есть строчка (171):
если ее привести к виду:
то сервер останавливается безо всяких ошибок. Примеры использования ф-ий для работы с сетью смотрел на MSDN и все сделал по аналогии.
Есть ли у кого-нибудь идеи как решить проблему?
Спасибо за вопрос. Данные брал с iATR на Д1 основной индикатор работает на меньших таймфреймах, BarsCalculated() также возвращает -1 и ту же ошибку. Как я догадываюсь, функция есть, а инидикатора нет (в рантайме). Если создать индикатор в другом окне на том же инструменте, то все работает. В режиме отладки тоже работает. Но мой вопрос Это бага или я че то не понимаю?
Сам недавно бился с этой проблемой. Решил, не знаю насколько оптимально, но решил. Только данные брал с iFractals, но это не важно. Почему спросил про ТФ. По моим наблюдениям, происходит следующая вещь. Например, индикатор работает на М15. Если данные по индикатору запрашиваются с M1 до М15 - все нормально, данные доступны сразу в момент обращения (если не первый вызов). Если же данные запрашиваются с М30 (повторюсь, сам индикатор работает на ТФ М15), то в момент обращения данных по М30 за новую свечу нет (либо нужен предварительный запрос, либо данные запаздывают на тик). Решил следующим образом. Запоминаю результат BarsCalculated() на текущей свече. Как только в следующий раз BarsCalculated() возвращает значение на 1 больше (образовалась новая свеча), запоминаем новое значение BarsCalculated() и копируем данные. Но этот момент (появления данных по индикатору на старшем ТФ) не совпадает с образованием новой свечи по текущему ТФ.
Да, BarsCalculated() возвращает -1, когда вообще нет данных, такое бывает, насколько мне известно, только при первом запуске. Т.е, когда получил handle индикатора и сразу запрашиваешь данные. Тоже нужно подождать.
Сразу после создания хендла индикатора нельзя запрашивать данные, так как они не готовы. Процесс инициализации и перерасчета сложен и зависит от множества факторов.
Правильная стратегия: создать хендл в онините, а работать с данными по приходу первого тика.
Сразу после создания хендла индикатора нельзя запрашивать данные, так как они не готовы. Процесс инициализации и перерасчета сложен и зависит от множества факторов.
Правильная стратегия: создать хендл в онините, а работать с данными по приходу первого тика.