Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1213
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Салют! Помогите :)
Из индикатора (мт5) копируется тиковая история для дальнейшей обработки. Алгоритм копирования содрал со справочника, лишь немного изменив:
Но есть предупреждение, мол тиковая история не синхронизирована:
А в справочнике пишет:
ERR_HISTORY_TIMEOUT
4403
Превышен таймаут при запросе истории
Капитанская интуиция подсказывает, что нужно синхронизировать тики... правильно ли понимаю вот этот момент? А как это сделать? Или можно без особого вреда работать и без синхронизации, просто убрав проверку success ?
Салют! Помогите :)
Из индикатора (мт5) копируется тиковая история для дальнейшей обработки.
в индикаторах асинхронный доступ к историческим данным, в экспертах и скриптах синхронный доступ, по крайней мере разработчики так называют поведение MQL-программ при работе с данными
если человеческим языком, то при обращении к данным истории в индикаторе нужно получив ошибку выполнить выход из цикла расчета и спустя время повторно выполнить обращение к истории
а выполнять в индикаторе в цикле несколько раз обращение к истории нет смысла - такой прием работает только в экспертах и скриптах
в индикаторах асинхронный доступ к историческим данным, в экспертах и скриптах синхронный доступ, по крайней мере разработчики так называют поведение MQL-программ при работе с данными
если человеческим языком, то при обращении к данным истории в индикаторе нужно получив ошибку выполнить выход из цикла расчета и спустя время повторно выполнить обращение к истории
а выполнять в индикаторе в цикле несколько раз обращение к истории нет смысла - такой прием работает только в экспертах и скриптах
Спасибо!
Синхронный это с многопоточностью связано? "Ticks are not synchronized yet" - получается больше как предупреждение?
Нонсенс... с логикой не дружите, с математикой не дружите ..... и в то же время давно и успешно модерируете форум тематика которого пронизана тотально и логикой и математикой.
Где я говорил что не дружу с логикой?
Думаю, что знания которыми обладала куча специалистов не были знаниями самого Форда и никогда ими не стали. Тем более - потребности в этих знаниях у него не было, поскольку он назвал их ненужными. И если бы эти специалисты попытались бы передать свои знания Форду он не смог бы эти знания усвоить и оперировать ими в практических целях. Что бы усваивать новые знания нужно уже иметь немного более чем общие представления о предмете с которым связаны новые знания. В приведенном примере специалисты обеспечивали знаниями не Форда, а адвокатов.
А в Ваших мозгах, как мне кажется есть достаточный набор систематизированных знаний и по математике и по логике и этот набор позволяет Вам быстро и правильно составлять поисковый запрос на новую и недостающую Вам информацию и быстро и правильно ее интерпретировать. Уверен что в Ваших мозгах не может не быть такой информации поскольку Вы каждый день по многу часов проводите на этом форуме и пропускаете через свой мозг огромное количество информации связанной именно с математикой и логикой. Это похоже на изучение иностранного языка методом погружения. Его усваивание происходит автоматически, спонтанно и может быть даже против воли погружаемого.
Если мне сейчас 100 академиков начнут объяснять правила вычисления интегральных уравнений - я не научусь их вычислять до тех пор пока они не вложат в мою голову и не разложат в ней по полочкам все учебники математики и алгебры которые я должен был усвоить в школе до того как учитель начал объяснять нам тему интегральный уравнений.
Аналогично и в изучении MQL Если ты не понимаешь что такое переменная и для чего она нужна, то трудно понять даже что такое знание переменной , я уже не говорю о других даже не очень сложных понятиях.
Форд не говорил, что его влёт обучат нужному вопросу в интересующей его области знаний. Он говорил, что его окружает такое количество специалистов в разных областях знаний, что он в любой момент может получить ответы на нужные в этот момент вопросы. Зачем руководителю знать то, что могут знать 200 спецов, каждый их которых выдаст нужный ответ в своей области? Да и не возможно знать всё в принципе. А вот быстро получать ответы на требуемые задачи при помощи услуг специалистов - это и есть то, о чём говорил Форд, это и есть то, что я говорил о справочниках и использовании нужной информации. И это в какой-то узкой области предоставляет данный ресурс в виде CodeBase и форума.
Спасибо!
Синхронный это с многопоточностью связано? "Ticks are not synchronized yet" - получается больше как предупреждение?
нет
разработчики подразумевают под синхронностью это некую гарантированную обработку исторических данных при вызове функций работы с историей, но это не гарантирует обязательный возврат данных при запросе
... вот на нечеловеческий язык перешли ))))
а асинхронный это запрос и данные или ошибка, причем после возникновения ошибки запускается синхронизация, но время окончания синхронихации (или построения ТФ) неизвестно и из за высокой производительности МТ5 получаешь каждый повторный вызов ошибку вместо синхронизированных данных
ЗЫ: в МТ5 там все сложно.... есть сервер, есть терминал и наконец наша MQL-программа, при запросе истории нужно синхронизировать сервер-терминал и затем уже терминал - MQL-программу, у кого то могут быть не готовы таймфреймы или тиковые данные
нет
разработчики подразумевают под синхронностью это некую гарантированную обработку исторических данных при вызове функций работы с историей, но это не гарантирует обязательный возврат данных при запросе
... вот на нечеловеческий язык перешли ))))
а асинхронный это запрос и данные или ошибка, причем после возникновения ошибки запускается синхронизация, но время окончания синхронихации (или построения ТФ) неизвестно и из за высокой производительности МТ5 получаешь каждый повторный вызов ошибку вместо синхронизированных данных
ЗЫ: в МТ5 там все сложно.... есть сервер, есть терминал и наконец наша MQL-программа, при запросе истории нужно синхронизировать сервер-терминал и затем уже терминал - MQL-программу, у кого то могут быть не готовы таймфреймы или тиковые данные
Проще было ответить примерно так:
Чтобы в индикаторе дождаться синхронизации, нужно после получения ошибки просто выйти из OnCalculate() с возвратом нуля - return 0;
При этом первое обращение к историческим данным запускает процесс синхронизации данных, и остаётся только проверять её завершение. Если ошибка получения данных, то возвращать ноль - так как ноль указывает на количество уже посчитанных данных на прошлом вызове (prev_calculated), и при текущем вызове и успешной загрузке исторических данных OnCalculate() будет рассчитываться по всей глубине истории (так как вернув 0 мы тем самым указали на прошлом вызове, что ничего не было посчитано).
Добрый день всем, помогите пожалуйста решить проблему, проблема состоит в логике, я сегодня весь мозг сломал уже и дошел до того что в голове каша.
Вот написал элементарный пример кода, есть сигнал, если закрытие свечи больше чем машка то открывается один ордер.
Ордер один открывается но после срабатывания стопа или профита, сигнал остается и будет достаточное долгое время оставаться Истинным, уверен понимаете о чем я,
собственно как мне сделать так чтобы при возникновении сигнала на покупку открылся один ордер и все, до тех пор пока ситуация не измениться и цена закрытия не станет меньше машки.
флаги, но при закрытии ордера они не спасут, и он откроется или задержки минут на 15. Еще круче бывает когда одновременно Истинны условия открытия и закрытия ордеров. На каждом тике ордер)))) Флаги это если сигнал на открытие ордера истина и флаг что ордер открыт ложь то открываем ордер. И если флаг что ордер открыт истина, ордер не откроется). Задержка проще и эффективней. После закрытия ордера ставим задержку.
а асинхронный это запрос и данные или ошибка, причем после возникновения ошибки запускается синхронизация, но время окончания синхронихации (или построения ТФ) неизвестно и из за высокой производительности МТ5 получаешь каждый повторный вызов ошибку вместо синхронизированных данных
ЗЫ: в МТ5 там все сложно.... есть сервер, есть терминал и наконец наша MQL-программа, при запросе истории нужно синхронизировать сервер-терминал и затем уже терминал - MQL-программу, у кого то могут быть не готовы таймфреймы или тиковые данные
Приблизительно понял... Спасибо :)
Проще было ответить примерно так:
Чтобы в индикаторе дождаться синхронизации, нужно после получения ошибки просто выйти из OnCalculate() с возвратом нуля - return 0;
При этом первое обращение к историческим данным запускает процесс синхронизации данных, и остаётся только проверять её завершение. Если ошибка получения данных, то возвращать ноль - так как ноль указывает на количество уже посчитанных данных на прошлом вызове (prev_calculated), и при текущем вызове и успешной загрузке исторических данных OnCalculate() будет рассчитываться по всей глубине истории (так как вернув 0 мы тем самым указали на прошлом вызове, что ничего не было посчитано).
Перешел на фондовые инструменты и там только раз напечатало, что не синхронизированы. При последующих запросах ничего такого больше не выводило.
Подскажите, почему в тестере не выдает объемов?
Приблизительно понял... Спасибо :)
Проще не значит понятнее :)Перешел на фондовые инструменты и там только раз напечатало, что не синхронизированы. При последующих запросах ничего такого больше не выводило.
Подскажите, почему в тестере не выдает объемов?
Для поддержания исторических данных в актуальном "горячем" состоянии, необходимо раз в две минуты обращаться к этим данным при помощи любой из функций CopyXXX, iXXX, например CopyTime(), iTime(), и т.д...
Не знаю каких объёмов у вас не выдаёт в тестере. Есть объёмы реальные, и есть тиковые. Без кода нет возможности ответить по существу.