5 апреля 2009 года сервер «demo.metaquotes.net» будет остановлен. При этом History Center с минутной историей продолжит работу.
С этого дня наша компания отказывается от использования демонстрационного сервера. В настоящее время количество компаний, работающих на платформе MetaTrader 4, настолько велико, что мы не видим необходимости в содержании собственного сервера.
Это какая-то древность (упоминается другой сервер). В этом году неоднократно, последний раз месяц назад на MetaQuotes-Demo был нормально создан новый демо-счет.
Кроме того, если сервер удален почему он показывается и пингуется в мастере открытия счета? Затык происходит только на последнем шаге.
При первом обращении к историческим данным из индикатора, при условии недостаточности локальных данных, начинается подгрузка данных и функция возвращает ошибку.
Это я прекрасно понимаю. Если бы дело было в недостатке баров в истории, то обе функции вернули бы 0. А так одна возвращает 0, а вторая корректно возвращает количество баров в истории. При чем вызываются они одна за другой:
Loader(): symbol(Symbol()), timeframe(Period())
{
Print(__FUNCTION__ + " symbol: " + symbol + " timeframe: " + EnumToString(timeframe));
ResetLastError();
Print(__FUNCTION__ + " bars: " + (string)iBars(symbol, timeframe)); // Данный вызов iBars() даёт 0 при перезапуске терминалаPrint(__FUNCTION__ + " Error: " + (string)GetLastError());
Print(__FUNCTION__ + " bars (2): " + (string)iBars(Symbol(), Period())); // Этот же вызов iBars() работает нормально
}
Только данные берутся, в первом случае уже из готовых преременных-членов (symbol и timeframe) класса Loader (корректно проинициализированых), а во втором с функций Symbol() и Period() (которые дают точно такие же значения, как было записано в symbol и timeframe). Значения переменных идентичны значениям функций (я проверял). Но где косячит iBars(symbol, timeframe) с абсолютно корректными symbol и timeframe, мне не ясно. При том что iBars(Symbol(), Period()) не косячит. Вот я и решил, что где-то ошибка в самой работе терминала или неправильная компиляция исходника.
Если указаны параметры start_time и stop_time, то функция возвращает количество баров в диапазоне дат. Если эти параметры не указаны, то функция возвращает общее количество баров. Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не...
Это я прекрасно понимаю. Если бы дело было в недостатке баров в истории, то обе функции вернули бы 0. А так одна возвращает 0, а вторая корректно возвращает количество баров в истории. При чем вызываются они одна за другой:
Только данные берутся, в первом случае уже из готовых преременных-членов (symbol и timeframe) класса Loader (корректно проинициализированых), а во втором с функций Symbol() и Period() (которые дают точно такие же значения, как было записано в symbol и timeframe). Значения переменных идентичны значениям функций (я проверял). Но где косячит iBars(symbol, timeframe) с абсолютно корректными symbol и timeframe, мне не ясно. При том что iBars(Symbol(), Period()) не косячит. Вот я и решил, что где-то ошибка в самой работе терминала.
А теперь запишите вот так, как Игорь посоветовал:
Loader(): symbol(Symbol()), timeframe(Period())
{
Print(__FUNCTION__ + " symbol: " + symbol + " timeframe: " + EnumToString(timeframe));
ResetLastError();
Print(__FUNCTION__ + " bars: " + (string)iBars(Symbol(), Period())); // Данный вызов iBars() даёт 0 при перезапуске терминалаPrint(__FUNCTION__ + " Error: " + (string)GetLastError());
Print(__FUNCTION__ + " bars (2): " + (string)iBars(symbol, timeframe)); // Этот же вызов iBars() работает нормально
}
И не забывайте, что это конструктор класса, а он вызывается ещё до инициализации
Это я прекрасно понимаю. Если бы дело было в недостатке баров в истории, то обе функции вернули бы 0. А так одна возвращает 0, а вторая корректно возвращает количество баров в истории. При чем вызываются они одна за другой:
Вы придумали какую то историю
затем решили эту историю оформить в виде претензии и затем в вопрос
что пишет справка по ошибке 4401 ?
что я писал?
Вы понимаете разницу между недостатком баров и неготовностью чарта?
у Вас же ситуация после перезагрузки терминала с запуском индикатора, причем данные Вы запрашиваете в глобальной инициализации MQL-программы (конструктор класса), которая будет выполнена до ОнИнит()
ушел, пишете быстрее чем читаете, поиском по форуму 4401 - все ответы
Такое присваивание может быть выполнено один раз при запуске, не может быть такого чтобы каждый раз при обращении к Lots автоматически присваивалось выражение. Не слышал что mql был на такое способен.
Не может быть такого. У вас идёт объявление и инициализация, переменной Lots присваивается выражение.
Такое присваивание может быть выполнено один раз при запуске, не может быть такого чтобы каждый раз при обращении к Lots автоматически присваивалось выражение. Не слышал что mql был на такое способен.
Я проверял, при изменении баланса, лот тоже меняется
MakarFX: Я проверял, при изменении баланса, лот тоже меняется
Ничего себе я проверю. Я знаю что можно инициализировать функциями переменные с элементами массивов не прокатывает но что оно автоматически меняется не знал, мне кажется в с++ тоже нет такого я проверю потом.
Artyom Trishkin: И не забывайте, что это конструктор класса, а он вызывается ещё до инициализации
Это если объект автоматический. А я создаю его с помощью ключевого слова new (в OnInit()) и удаляю с помощью ключевого слова delete (в OnDeinit()). То есть, использую указатель на объект типа Loader. Но на счёт таких подробностей, думаю, вы в курсе... Поэтому, создаётся loader в OnInit() и тут не может быть ошибки.
Если вы имеете в виду, поменять функции местами, то пробовал я и так, результат всё тот же. Только сообщения идут в другой последовательности :)
Обращаю ваше внимание, на то что это происходит именно при перезапуске терминала и только при нем! Так как при первом запуске терминала (после запуска Windows) пример отрабатывает корректно.
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
затем решили эту историю оформить в виде претензии
Никаких претензий! И в чём же выдумка, если я предоставил исходник и даже расписал последовательность действий для тестирования его работы? Очевидно, Вы меня неправильно поняли...
Igor Makanu:
причем данные Вы запрашиваете в глобальной инициализации MQL-программы (конструктор класса), которая будет выполнена до ОнИнит()
ушел, пишете быстрее чем читаете, поиском по форуму 4401 - все ответы
Не должна она выполняться до OnInit(), написал в предыдущем посте. Это Вы невнимательно читаете, как посты, так и код исходника, который я добавил для тестирования.
Это какая-то древность (упоминается другой сервер). В этом году неоднократно, последний раз месяц назад на MetaQuotes-Demo был нормально создан новый демо-счет.
Кроме того, если сервер удален почему он показывается и пингуется в мастере открытия счета? Затык происходит только на последнем шаге.
Да, что то не идёт регистрация, даже в мобильном терминале. Раньше в этом году все регилось.
Закрытие MetaQuotes Demo Server
MetaQuotes Software Corp.
4 марта 2009
5 апреля 2009 года сервер «demo.metaquotes.net» будет остановлен. При этом History Center с минутной историей продолжит работу.
С этого дня наша компания отказывается от использования демонстрационного сервера. В настоящее время количество компаний, работающих на платформе MetaTrader 4, настолько велико, что мы не видим необходимости в содержании собственного сервера.
Это какая-то древность (упоминается другой сервер). В этом году неоднократно, последний раз месяц назад на MetaQuotes-Demo был нормально создан новый демо-счет.
Кроме того, если сервер удален почему он показывается и пингуется в мастере открытия счета? Затык происходит только на последнем шаге.
При первом обращении к историческим данным из индикатора, при условии недостаточности локальных данных, начинается подгрузка данных и функция возвращает ошибку.
Это я прекрасно понимаю. Если бы дело было в недостатке баров в истории, то обе функции вернули бы 0. А так одна возвращает 0, а вторая корректно возвращает количество баров в истории. При чем вызываются они одна за другой:
Только данные берутся, в первом случае уже из готовых преременных-членов (symbol и timeframe) класса Loader (корректно проинициализированых), а во втором с функций Symbol() и Period() (которые дают точно такие же значения, как было записано в symbol и timeframe). Значения переменных идентичны значениям функций (я проверял). Но где косячит iBars(symbol, timeframe) с абсолютно корректными symbol и timeframe, мне не ясно. При том что iBars(Symbol(), Period()) не косячит. Вот я и решил, что где-то ошибка в самой работе терминала или неправильная компиляция исходника.
Это я прекрасно понимаю. Если бы дело было в недостатке баров в истории, то обе функции вернули бы 0. А так одна возвращает 0, а вторая корректно возвращает количество баров в истории. При чем вызываются они одна за другой:
Только данные берутся, в первом случае уже из готовых преременных-членов (symbol и timeframe) класса Loader (корректно проинициализированых), а во втором с функций Symbol() и Period() (которые дают точно такие же значения, как было записано в symbol и timeframe). Значения переменных идентичны значениям функций (я проверял). Но где косячит iBars(symbol, timeframe) с абсолютно корректными symbol и timeframe, мне не ясно. При том что iBars(Symbol(), Period()) не косячит. Вот я и решил, что где-то ошибка в самой работе терминала.
А теперь запишите вот так, как Игорь посоветовал:
И не забывайте, что это конструктор класса, а он вызывается ещё до инициализацииЭто я прекрасно понимаю. Если бы дело было в недостатке баров в истории, то обе функции вернули бы 0. А так одна возвращает 0, а вторая корректно возвращает количество баров в истории. При чем вызываются они одна за другой:
Вы придумали какую то историю
затем решили эту историю оформить в виде претензии и затем в вопрос
что пишет справка по ошибке 4401 ?
что я писал?
Вы понимаете разницу между недостатком баров и неготовностью чарта?
у Вас же ситуация после перезагрузки терминала с запуском индикатора, причем данные Вы запрашиваете в глобальной инициализации MQL-программы (конструктор класса), которая будет выполнена до ОнИнит()
ушел, пишете быстрее чем читаете, поиском по форуму 4401 - все ответы
У меня лот высчитывается так
стоит в начале советника...и ставил в самый конец кода
Когда идет обращение в функции OnTick к переменной Lots, то советник находит и пересчитывает.
Не может быть такого. У вас идёт объявление и инициализация, переменной Lots присваивается выражение.
Такое присваивание может быть выполнено один раз при запуске, не может быть такого чтобы каждый раз при обращении к Lots автоматически присваивалось выражение. Не слышал что mql был на такое способен.
Не может быть такого. У вас идёт объявление и инициализация, переменной Lots присваивается выражение.
Такое присваивание может быть выполнено один раз при запуске, не может быть такого чтобы каждый раз при обращении к Lots автоматически присваивалось выражение. Не слышал что mql был на такое способен.
Я проверял, при изменении баланса, лот тоже меняется
Ничего себе я проверю. Я знаю что можно инициализировать функциями переменные с элементами массивов не прокатывает но что оно автоматически меняется не знал, мне кажется в с++ тоже нет такого я проверю потом.
И не забывайте, что это конструктор класса, а он вызывается ещё до инициализации
Это если объект автоматический. А я создаю его с помощью ключевого слова new (в OnInit()) и удаляю с помощью ключевого слова delete (в OnDeinit()). То есть, использую указатель на объект типа Loader. Но на счёт таких подробностей, думаю, вы в курсе... Поэтому, создаётся loader в OnInit() и тут не может быть ошибки.
Если вы имеете в виду, поменять функции местами, то пробовал я и так, результат всё тот же. Только сообщения идут в другой последовательности :)
Результат:
2020.06.24 23:10:48.568 Loader::Loader symbol: EURUSD timeframe: PERIOD_H1
2020.06.24 23:10:48.568 Loader::Loader bars (2): 140435
2020.06.24 23:10:48.568 Loader::Loader bars: 0
2020.06.24 23:10:48.568 Loader::Loader Error: 4401
Вы придумали какую то историю
затем решили эту историю оформить в виде претензии
Никаких претензий! И в чём же выдумка, если я предоставил исходник и даже расписал последовательность действий для тестирования его работы? Очевидно, Вы меня неправильно поняли...
причем данные Вы запрашиваете в глобальной инициализации MQL-программы (конструктор класса), которая будет выполнена до ОнИнит()
ушел, пишете быстрее чем читаете, поиском по форуму 4401 - все ответы
Не должна она выполняться до OnInit(), написал в предыдущем посте. Это Вы невнимательно читаете, как посты, так и код исходника, который я добавил для тестирования.
Это какая-то древность (упоминается другой сервер). В этом году неоднократно, последний раз месяц назад на MetaQuotes-Demo был нормально создан новый демо-счет.
Кроме того, если сервер удален почему он показывается и пингуется в мастере открытия счета? Затык происходит только на последнем шаге.