Целый тип int имеет размер 4 байта (32 бита). Минимальное значение -2 147 483 648, максимальное значение 2 147 483 647.
У меня iBarShift никак не хочет выдавать значение больше 99999
Рисую на графике трендовую линию, следующий скрипт получает время начала линии и выводит порядковый номер бара этого времени.
При смещении линии назад по истории в какой-то момент выводимое значение останавливается на 99999, а если
boolexact=false // режим
поменять на true то выводит -1, при том, что GetLastError = 0
voidOnStart()
{
int total = ObjectsTotal(0, 0, -1); // Общее кол-во объектов на: /текущий график/главное окно/все типы объектовdatetime time0 = 0; // Время соответствующее началу трендовой линииstring objname = ""; // Имя объекта (трендовой линии)int shift = 0; // Номер бара, соответствующего времени начала трендовой линии time0for(int i = total - 1; i >= 0; i--)
{
objname = (string)ObjectName(0, i, 0, OBJ_TREND);
time0 = ObjectGetInteger(0, objname, OBJPROP_TIME, 0);
shift = iBarShift(NULL, PERIOD_M1, time0, false);
Comment("shift: ", shift, " Error: ", GetLastError());
Sleep(2000);
}
}
Что не так?
Пробовал разные графики разных брокеров, время с линии снимается верно, если PERIOD_M1 поменять на М5, например, то для достижения 99999 надо двигать еще дальше по истории
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
Целый тип int имеет размер 4 байта (32 бита). Минимальное значение -2 147 483 648, максимальное значение 2 147 483 647.
У меня iBarShift никак не хочет выдавать значение больше 99999
Рисую на графике трендовую линию, следующий скрипт получает время начала линии и выводит порядковый номер бара этого времени.
При смещении линии назад по истории в какой-то момент выводимое значение останавливается на 99999, а если
boolexact=false // режим
поменять на true то выводит -1, при том, что GetLastError = 0
Что не так?
Пробовал разные графики разных брокеров, время с линии снимается верно, если PERIOD_M1 поменять на М5, например, то для достижения 99999 надо двигать еще дальше по истории
Первым делом проверьте в настройках терминала максимальное количество баров.
intOnInit()
{
//-создадим хэндл индикатораhandle=iAO(name,period);
//-если не удалось создать хэндлif(handle==INVALID_HANDLE)
{
...
return(INIT_FAILED);
}
Вопрос: От каких параметров назначается номер(цифры) хендла? Может ли он после перезагрузки терминала быть другим? Может ли он после переинициализации графика быть другим? В каких случаях он может изменится?
Вопрос: От каких параметров назначается номер(цифры) хендла? Может ли он после перезагрузки терминала быть другим? Может ли он после переинициализации графика быть другим? В каких случаях он может изменится?
Если индикатор один, он всегда имеет хендл 10. Каждый следующий равен предыдущий+1 и всё зависит от последовательности создания хендлов. Измениться может только в случае если один из предыдущих получил ошибку.
Если индикатор один, он всегда имеет хендл 10. Каждый следующий равен предыдущий+1 и всё зависит от последовательности создания хендлов. Измениться может только в случае если один из предыдущих получил ошибку.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Что за проблема с двумерным массивом, подскажите, плз.
Простейший код тестового скрипта:
Выдает сразу две ошибки:
1. "[" - invalid index value, с указанием на двумерный массив ARR в определении процедуры testproc.
2. "ARtst" - parameter conversion not allowed, с указанием на массив ARtst в обращении к процедуре testproc.
С одномерным массивом никаких проблем.
Полностью в коде не разбирался, но тут должно быть так:
Полностью в коде не разбирался, но тут должно быть так:
Точно ! Спасибо большое.
Еще до конце на освоился с отличиями МТ5 от МТ4. )))
Точно ! Спасибо большое.
Еще до конце на освоился с отличиями МТ5 от МТ4. )))
В mql5 работа с массивами нисколько не отличается от mql4.
В mql5 работа с массивами нисколько не отличается от mql4.
Как вижу отличается.
В МТ4 в объявлении многомерных массивов в процедурах не требовалось указания размерности в явном виде ни в одном из измерений.
MQL5 iBarShift
Согласно документации mql5 функция iBarShift возвращает значение типа int.
int #
Целый тип int имеет размер 4 байта (32 бита). Минимальное значение -2 147 483 648, максимальное значение 2 147 483 647.
У меня iBarShift никак не хочет выдавать значение больше 99999
Рисую на графике трендовую линию, следующий скрипт получает время начала линии и выводит порядковый номер бара этого времени.
При смещении линии назад по истории в какой-то момент выводимое значение останавливается на 99999, а если
bool exact=false // режим
поменять на true то выводит -1, при том, что GetLastError = 0
Что не так?
Пробовал разные графики разных брокеров, время с линии снимается верно, если PERIOD_M1 поменять на М5, например, то для достижения 99999 надо двигать еще дальше по истории
MQL5 iBarShift
Согласно документации mql5 функция iBarShift возвращает значение типа int.
int #
Целый тип int имеет размер 4 байта (32 бита). Минимальное значение -2 147 483 648, максимальное значение 2 147 483 647.
У меня iBarShift никак не хочет выдавать значение больше 99999
Рисую на графике трендовую линию, следующий скрипт получает время начала линии и выводит порядковый номер бара этого времени.
При смещении линии назад по истории в какой-то момент выводимое значение останавливается на 99999, а если
bool exact=false // режим
поменять на true то выводит -1, при том, что GetLastError = 0
Что не так?
Пробовал разные графики разных брокеров, время с линии снимается верно, если PERIOD_M1 поменять на М5, например, то для достижения 99999 надо двигать еще дальше по истории
Первым делом проверьте в настройках терминала максимальное количество баров.
Первым делом проверьте в настройках терминала максимальное количество баров.
Спасибо!
Стояло 10000, поменял на unlimited - заработало.
Однако не очевидная вещь..
Подскажите по созданию хендлов
Есть вот такая штука
Вопрос: От каких параметров назначается номер(цифры) хендла?
Может ли он после перезагрузки терминала быть другим?
Может ли он после переинициализации графика быть другим?
В каких случаях он может изменится?
Подскажите по созданию хендлов
Есть вот такая штука
Вопрос: От каких параметров назначается номер(цифры) хендла?
Может ли он после перезагрузки терминала быть другим?
Может ли он после переинициализации графика быть другим?
В каких случаях он может изменится?
Если индикатор один, он всегда имеет хендл 10. Каждый следующий равен предыдущий+1 и всё зависит от последовательности создания хендлов. Измениться может только в случае если один из предыдущих получил ошибку.
Если индикатор один, он всегда имеет хендл 10. Каждый следующий равен предыдущий+1 и всё зависит от последовательности создания хендлов. Измениться может только в случае если один из предыдущих получил ошибку.
Ясно, примерно понятно. Спасибо!