Ошибки, баги, вопросы - страница 2469
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
буду знать ) тогда хак
Перевожу программу с MQL4 на MQL5.
Столкнулся с такой ошибкой.
На таймфреймах до m30 значение Period() выдается правильно.
2019.05.22 17:45:38.628 TestStat (GBPUSD,M15) 4854 Period()=15
2019.05.22 17:46:08.267 TestStat (GBPUSD,M30) 4854 Period()=30
А начиная с таймфрейма H1 выводятся непонятные значения.
2019.05.22 17:31:07.446 TestStat (GBPUSD,H1) 4854 Period()=16385
2019.05.22 17:46:39.362 TestStat (GBPUSD,H4) 4854 Period()=16388
2019.05.22 17:46:55.552 TestStat (GBPUSD,D1) 4854 Period()=16408
Версия терминала build 2057 от 21 мая 2019 года.
Спасибо.
В описании:
Period
Возвращает значение таймфрейма текущего графика.
ENUM_TIMEFRAMES Period();
Возвращаемое значение
Содержимое переменной _Period, в которой хранится значение таймфрейма текущего графика. Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.
Смотри также
PeriodSeconds, Периоды графиков, Дата и время, , Видимость объектов
=================
Как-то плохо все сделано. В описании должно быть корректно написано. А не на форуме надо искать источник проблемы.
Выходит, Period() выдат не значение текущего таймфрейма, как это сказано : Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.
А что-то совсем другое.
Разработчики поправьте описание языка.
Имеем следующие результаты по ArrayResize capacity МТ5(build 2057):
Результат:
В описании:
Содержимое переменной _Period, в которой хранится значение таймфрейма текущего графика. Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.
Как-то плохо все сделано. В описании должно быть корректно написано. А не на форуме надо искать источник проблемы.
Так нигде же не написано, что это значение равно периоду в минутах (как было в четвёрке).
https://www.mql5.com/ru/articles/81
С этого начинается статья по ссылке.
Так нигде же не написано, что это значение равно периоду в минутах (как было в четвёрке).
https://www.mql5.com/ru/articles/81
С этого начинается статья по ссылке.
Есть описание языка, в котором сказано : Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.
Смотрим в описании языка далее:
Периоды графиков
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.
ENUM_TIMEFRAMES
Идентификатор
Описание
PERIOD_CURRENT
Текущий период
PERIOD_M1
1 минута
PERIOD_M2
2 минуты
PERIOD_M3
3 минуты
PERIOD_M4
4 минуты
PERIOD_M5
5 минут
PERIOD_M6
6 минут
PERIOD_M10
10 минут
PERIOD_M12
12 минут
PERIOD_M15
15 минут
PERIOD_M20
20 минут
PERIOD_M30
30 минут
PERIOD_H1
1 час
PERIOD_H2
2 часа
PERIOD_H3
3 часа
PERIOD_H4
4 часа
PERIOD_H6
6 часов
PERIOD_H8
8 часов
PERIOD_H12
12 часов
PERIOD_D1
1 день
PERIOD_W1
1 неделя
PERIOD_MN1
1 месяц
======================
И нигде в описании не говорится, что это значение в секундах.
В описании должно быть все сказано.
А когда надо лазить еще по каким-то статьям, то это очень плохо.
Спасибо еще раз TheXpert за предоставленный код.
Имеем следующие результаты по ArrayResize capacity МТ5(build 2057):
1. Очень важен первый ArrayResize, он реально выделяет память с учетом size + reserved_size и устанавливает capacity.
2. Все последующие выполнения ArrayResize с новым значением reserved_size - не имеют ни какого влияние на количество выделенной памяти и capacity, соответственно.
3. Новое выделение памяти происходит только при превышении capacity и в этом случаи опять используется size + reserved_size для определения количества выделяемой памяти и установки нового capacity.
4. Значение reserved_size < 0 освобождает зарезервированную память до размера size.
И нигде в описании не говорится, что это значение в секундах.
Так оно и не в секундах...
Есть описание языка, в котором сказано : Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.
Смотрим в описании языка далее:
Периоды графиков
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.
ENUM_TIMEFRAMES
======================
И нигде в описании не говорится, что это значение в секундах.
В описании должно быть все сказано.
А когда надо лазить еще по каким-то статьям, то это очень плохо.
А кто вам сказал что это значения в секундах?
Есть описание языка, в котором сказано : Значение может быть одним из значений перечисления ENUM_TIMEFRAMES .
Смотрим в описании языка далее:
Периоды графиков
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.
ENUM_TIMEFRAMES
Идентификатор
Описание
PERIOD_CURRENT
Текущий период
PERIOD_M1
1 минута
PERIOD_M2
2 минуты
PERIOD_M3
3 минуты
PERIOD_M4
4 минуты
PERIOD_M5
5 минут
PERIOD_M6
6 минут
PERIOD_M10
10 минут
PERIOD_M12
12 минут
PERIOD_M15
15 минут
PERIOD_M20
20 минут
PERIOD_M30
30 минут
PERIOD_H1
1 час
PERIOD_H2
2 часа
PERIOD_H3
3 часа
PERIOD_H4
4 часа
PERIOD_H6
6 часов
PERIOD_H8
8 часов
PERIOD_H12
12 часов
PERIOD_D1
1 день
PERIOD_W1
1 неделя
PERIOD_MN1
1 месяц
======================
И нигде в описании не говорится, что это значение в секундах.
В описании должно быть все сказано.
А когда надо лазить еще по каким-то статьям, то это очень плохо.
Вы никогда не должны полагаться на значение перечисления.
Используйте PeriodSeconds().