Rosh: Действительно, здесь есть какая-то путаница. Разберемся, спасибо за сообщение.
Если в обоих случаях приводить 0 к типу datetime, то копирование с помощьюCopyBuffer() работает. Таким образом, не имеет значение в каком порядке передаются дата начала и дата конца при использовании третьего варианта вызова.
2. В описании третьего варианта четко указано - первая дата стартовая. По логике вещей всегда меньше (об обратном в справке ни слова!).
Тем не менее, оба варианта работают. Не забывайте явно приводить второй параметр к типу datetime - тогда будет использоваться именно третья форма вызова.
Rosh: Тем не менее, оба вариант работают. Не забывайте явно приводить второй параметр к типу datetime - тогда будет использоваться именно третья форма вызова.
Rosh: В общем, ошибки нет по CopyBuffer(). Используйте явное приведение типов для правильного вызова нужного вариант функции CopyBuffer().
Вопрос в том как теперь это и на все остальное распространить, чтобы и в остальных CopyXXX не вылазили ошибки...
Если делаете проверку ошибок и защиту (а мне кажется что это оно и есть в КопиБуфер) так делайте тогда везде.
По CopyBuffer() нет ошибки, по всем остальным функциям Copy - есть что-то не то.
Они работают при таком порядке параметров определяющих диапазон:
(datetime)0,TimeCurrent()
а при таком - нет:
TimeCurrent(),(datetime)0
Что мне кажется неправильным, поскольку работающий вариант не соответствует справке. По справке первый параметр (из параметров определяющих диапазон) указывает правый край копируемых данных (если смотрет на график), а в случае
(datetime)0,TimeCurrent()
получается, что он указывает левый край. Еще с универсальностью не очень, если захочу определить размер диапазона в барах, а не по времени, надо менять оба параметра, 0 менять на TimeCurrent() и указывать количество баров, что еще раз дает повод думать, что правильным является вариант
TimeCurrent(),(datetime)0
но он не работает у всех функций кроме CopyBuffer().
Везде работает одинаково. Вот смотрите, если запросить правильно - 1 значение со стартовой позиции равной TimeCurrent(), то все работает правильно.
Результат:
Если же указать вместо единицы 0, то ничего не получите. Логично ведь?
Если же четвертый параметр функции является типом datetime, то применяется третий вариант вызова
Обращение по начальной и конечной датам требуемого интервала времени
intCopyTime(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодdatetime start_time, // с какой датыdatetime stop_time, // по какую датуdatetime time_array[] // массив для копирования времени открытия
);
Для нее не важен порядок указания начала и конца интервала, компилятор понимает оба варианта.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Действительно, здесь есть какая-то путаница. Разберемся, спасибо за сообщение.
Спасибо:)
Действительно, здесь есть какая-то путаница. Разберемся, спасибо за сообщение.
Если в обоих случаях приводить 0 к типу datetime, то копирование с помощьюCopyBuffer() работает. Таким образом, не имеет значение в каком порядке передаются дата начала и дата конца при использовании третьего варианта вызова.
Спасибо:)
2. В описании третьего варианта четко указано - первая дата стартовая. По логике вещей всегда меньше (об обратном в справке ни слова!).
Тем не менее, оба вариант работают. Не забывайте явно приводить второй параметр к типу datetime - тогда будет использоваться именно третья форма вызова.
В общем, ошибки нет по CopyBuffer(). Используйте явное приведение типов для правильного вызова нужного вариант функции CopyBuffer().
Вопрос в том как теперь это и на все остальное распространить, чтобы и в остальных CopyXXX не вылазили ошибки...
Если делаете проверку ошибок и защиту (а мне кажется что это оно и есть в КопиБуфер) так делайте тогда везде.
В общем, ошибки нет по CopyBuffer().
По CopyBuffer() нет ошибки, по всем остальным функциям Copy - есть что-то не то.
Они работают при таком порядке параметров определяющих диапазон:
а при таком - нет:
Что мне кажется неправильным, поскольку работающий вариант не соответствует справке. По справке первый параметр (из параметров определяющих диапазон) указывает правый край копируемых данных (если смотрет на график), а в случае
получается, что он указывает левый край. Еще с универсальностью не очень, если захочу определить размер диапазона в барах, а не по времени, надо менять оба параметра, 0 менять на TimeCurrent() и указывать количество баров, что еще раз дает повод думать, что правильным является вариант
но он не работает у всех функций кроме CopyBuffer().
Вопрос в том как теперь это и на все остальное распространить, чтобы и в остальных CopyXXX не вылазили ошибки...
Если делаете проверку ошибок и защиту (а мне кажется что это оно и есть в КопиБуфер) так делайте тогда везде.
Везде работает одинаково. Вот смотрите, если запросить правильно - 1 значение со стартовой позиции равной TimeCurrent(), то все работает правильно.
Результат:
Если же указать вместо единицы 0, то ничего не получите. Логично ведь?
Везде работает одинаково. Вот смотрите, если запросить правильно - 1 значение со стартовой позиции равной TimeCurrent(), то все работает правильно.
Результат:
Если же указать вместо единицы 0, то ничего не получите. Логично ведь?
Если же четвертый параметр функции является типом datetime, то применяется третий вариант вызова
Для нее не важен порядок указания начала и конца интервала, компилятор понимает оба варианта.
Результат:
Должен признаться, в какой-то момент я и сам запутался из-за пропущенного приведения типов..
Rosh:
Должен признаться, в какой-то момент я и сам запутался из-за пропущенного приведения типов..