Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 820

 

Изучаем мат.часть. Запутался среди двух сосен..

Есть вот такое:

int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 

Вопросы о begin:

1. Что это такое? Значение его = 0. Это индекс?

2. Что это такое по сути? Что есть значимые данные? А какие ещё бывают?

3. На каком основании это значение вычисляется? И какие в принципе могут быть варианты? Например, значимые данные могут начинаться не с 0-го индекса, а с 5-го?

4. Зачем этот параметр вставлен в OnCalculate?

Если я пропустил где об этом написано в справке, то прошу просто ткнуть носом.

 

Может кто подскажет как избавиться от этих многозначных значений в окне отладки (переменные нормализованы)?


 
Андрей:

Может кто подскажет как избавиться от этих многозначных значений в окне отладки (переменные нормализованы)?


Добавить строковую переменную, присвоить ей значение DoubleToString() и её смотреть в окне отладки.

Можно поместить всё это в макрос #ifdef _DEBUG

 
Alexey Viktorov:

Добавить строковую переменную, присвоить ей значение DoubleToString() и её смотреть в окне отладки.

Можно поместить всё это в макрос #ifdef _DEBUG

Спасибо, но возникает вопрос - вот эти многозначные значения, они соответствуют действительности или так, "игра света".

Дело то не в том, чтобы красиво смотрелось, а в том - какие значения используются для дальнейших расчетов.

 
Андрей:

Спасибо, но возникает вопрос - вот эти многозначные значения, они соответствуют действительности или так, "игра света".

Дело то не в том, чтобы красиво смотрелось, а в том - какие значения используются для дальнейших расчетов.

Вот эти многозначные соответствуют. Причём они, гады, иногда портят картину, особенно в выражениях сравнения.
Чтоб наверняка, рекомендуется использовать NormalizeDouble() с заданной точностью.
 
А про бегин так никто и сподобился сказать. Видать, это что-то совсем инородное..
 
User_mt5:
Вот эти многозначные соответствуют. Причём они, гады, иногда портят картину, особенно в выражениях сравнения.
Чтоб наверняка, рекомендуется использовать NormalizeDouble() с заданной точностью.
Так вот эти "гады" и возникают из нормализованных значений. Похоже  в этом супе (МТ5) чего то не хватает.
 
Андрей:
Так вот эти "гады" и возникают из нормализованных значений. Похоже  в этом супе (МТ5) чего то не хватает.

До сих пор я наивно полагал, что нормализация - это истина в последней инстанции.
Вы не могли бы показать фрагмент кода, где возникает проблема. Возможно, причиной является что-то иное.

 
User_mt5:

До сих пор я наивно полагал, что нормализация - это истина в последней инстанции.
Вы не могли бы показать фрагмент кода, где возникает проблема. Возможно, причиной является что-то иное.

Вот фрагментик, которого впрочем хватает чтобы увидеть "эффект".

Вот результат:

Что с нормализацией, что без - одинаково.

 

Андрей:

Что с нормализацией, что без - одинаково.

Да уж.

Вообще-то, в выражениях сравнения (как бы, "на лету") нормализация работает.
Насколько я понимаю, проблемы возникают в процессе простого вычисления.
Но если число нормализовано, то и храниться должно нормализованное число.

Но увы.

Интересно, что об этом скажут разработчики.

Причина обращения: