Ошибки, баги, вопросы - страница 2469

 
Eugeni Neumoin:

В описании:

Содержимое переменной _Period, в которой хранится значение таймфрейма текущего графика. Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.

Как-то плохо все сделано. В описании должно быть корректно написано. А не на форуме надо искать источник проблемы.

Так нигде же не написано, что это значение равно периоду в минутах (как было в четвёрке).

https://www.mql5.com/ru/articles/81

С этого начинается статья по ссылке.

Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 
Igor Zakharov:

Так нигде же не написано, что это значение равно периоду в минутах (как было в четвёрке).

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 месяц

======================

И нигде в описании не говорится, что это значение в секундах.

В описании должно быть все сказано.

А когда надо лазить еще по каким-то статьям, то это очень плохо.

 
Sergey Dzyublik:
Спасибо еще раз TheXpert за предоставленный код.
Имеем следующие результаты по ArrayResize capacity МТ5(build 2057):
И так, выводы по работе ArrayResize и влияние на реальное capacity:

1. Очень важен первый ArrayResize, он реально выделяет память с учетом size + reserved_size и устанавливает capacity.
2. Все последующие выполнения ArrayResize с новым значением reserved_size - не имеют ни какого влияние на количество выделенной памяти и capacity, соответственно.
3. Новое выделение памяти происходит только при превышении capacity и в этом случаи опять используется size + reserved_size для определения количества выделяемой памяти и установки нового capacity.
4. Значение reserved_size < 0 освобождает зарезервированную память до размера size. 
 
Eugeni Neumoin:

И нигде в описании не говорится, что это значение в секундах.

Так оно и не в секундах...

 
Eugeni Neumoin:

Есть описание языка, в котором сказано : Значение может быть одним из значений перечисления ENUM_TIMEFRAMES.

Смотрим в описании языка далее:

Периоды графиков

Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.

ENUM_TIMEFRAMES

======================

И нигде в описании не говорится, что это значение в секундах.

В описании должно быть все сказано.

А когда надо лазить еще по каким-то статьям, то это очень плохо.

А кто вам сказал что это значения в секундах?

 
Eugeni Neumoin :

Есть описание языка, в котором сказано : Значение может быть одним из значений перечисления 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().

 
Igor Zakharov:

Так оно и не в секундах...

Так вот об этом в описании языка в первую очередь надо сообщать.

А не в статьях, которые еще и искать надо. На форуме об этом надо искать в последнюю очередь.

Иначе получается так: смотрю в книгу, а вижу фигу...

 

Почему такое может быть?

IM      0       17:19:04.403    Terminal        MetaTrader 5 x64 build 2056 started (MetaQuotes Software Corp.)
NG      0       17:19:04.403    Terminal        Windows 7 Service Pack 1 (build 7601) x64, IE 11, AMD FX-4170 Quad-Core Processor , Memory: 9408 / 12255 Mb, Disk: 20 / 238 Gb, GMT+3

Сегодня обнаружил что в спецификации инструмента минимальный объём равен 100 и шаг тоже 100. Но при таких объёмах, вручную не открывает позиции с ошибкой "Неправильный объём", а если поставить 0.01 то кнопки не активны.

Заменил версию на "помладше"

KK      0       17:35:14.046    Terminal        MetaTrader 5 x64 build 2025 started (MetaQuotes Software Corp.)
IE      0       17:35:14.046    Terminal        Windows 7 Service Pack 1 (build 7601) x64, IE 11, AMD FX-4170 Quad-Core Processor , Memory: 9182 / 12255 Mb, Disk: 20 / 238 Gb, GMT+3

никаких изменений.

Затем заменил на релизную версию

FI      0       17:37:23.049    Terminal        MetaTrader 5 x64 build 2007 started (MetaQuotes Software Corp.)
RS      0       17:37:23.049    Terminal        Windows 7 Service Pack 1 (build 7601) x64, IE 11, AMD FX-4170 Quad-Core Processor , Memory: 9180 / 12255 Mb, Disk: 20 / 238 Gb, GMT+3

И вот результат



Почему такое происходит только в одной компании? Ведь если-бы это было повально, то вопрос уже давно был-бы поднят и решён.

В каком направлении посылать тех.поддержку той компании?


Добавлено: И очень странно, что на центовом счёте этой-же компании билд 2025 работает нормально. Все параметры инструмента как и должны быть.

Торгуй на центовом. Я сам догадался... но хочется побольше.

 
Ilyas:

Спасибо за сообщение.
Это рудимент, исправим.

@Ilyas, аналогичная проблема есть и у NonPOD struct.

struct NonPod{
   uchar data[];
};   
   
void OnStart(){
   NonPod obj;
   
   obj = (NonPod)(obj);   // '(' - invalid cast operation	
}
 
Кто-то знает как кроме ожидания нового билда с поддержкой namespace для классов обойти это ограничение:
template<typename T>
class TestTypedef{
public:
   typedef void (* callback)(T &);    // 'callback' - identifier already used
   callback eq;
};


void ff(int&) {Print(__FUNCSIG__);}

void OnStart(){  

   TestTypedef<int> int_value;
   int_value.eq = ff;
   
   int x = 5;
   int_value.eq(x);                 // Ok

   TestTypedef<string> int_value;   //Compile error 'callback' - identifier already used
}

Проблема в глобальной области объявления имени в рамках функциональности typedef