Новая версия платформы MetaTrader 5 build 2615: Фундаментальный анализ и комплексный критерий в тестере стратегий - страница 8

 

Почините, пожалуйста CopyTicks и CopyTicksRange

https://www.mql5.com/ru/forum/351196#comment_18277490

В 2605 тоже самое

Билд 2560 где ошибка?
Билд 2560 где ошибка?
  • 2020.09.14
  • www.mql5.com
я где-то ошибся или терминал глючит...
 
Yurixx:

Еще хотел бы спросить. Определение функции из Справочника MQL5:

MathRound

Возвращает значение, округленное до ближайшего целого числа указанного числового значения.


Если эта функция округляет до целого, то почему она double ?
Неудивительно, что при ее использовании мне все время сыпятся предупреждения о потере точности.
И странно, что у меня только сейчас это стало приводить к ошибке.
Нельзя ли ее, как и положено при округлении до целого, сделать int ?

Потому что полученная целая часть может оказаться за пределами диапазона LONG_MIN - LONG_MAX
 
prostotrader:

Почините, пожалуйста CopyTicks и CopyTicksRange

https://www.mql5.com/ru/forum/351196#comment_18277490

В 2605 тоже самое

В той ветке так и не понял, где ошибка. Приведите несколько тиков подряд и покажите, какой из них битый.

 
Slava:
Потому что полученная целая часть может оказаться за пределами диапазона LONG_MIN - LONG_MAX

Разве это не проблема программиста, которой должен знать, что такое int ?

Уж наверное если программист пишет MathRound(x), то он знает, что делает.

И, если на то пошло, как корректно округлять, если системная функция делает это некорректно ?
 
Yurixx:

Разве это не проблема программиста, которой должен знать, что такое int ?

Уж наверное если программист пишет MathRound(x), то он знает, что делает.

И, если на то пошло, как корректно округлять, если системная функция делает это некорректно ?
MathRound уже исправили.
 
Yurixx:

Разве это не проблема программиста, которой должен знать, что такое int ?

Уж наверное если программист пишет MathRound(x), то он знает, что делает.

И, если на то пошло, как корректно округлять, если системная функция делает это некорректно ?

Приведение типов, и этот вопрос точно не сюда. Округление бывает разным и в разные стороны. И не должно менять тип переменной. 

double A=1.1;
int A1 = (int) MathRound (A);
Для меня спорное исправление, если например округление используется в вычислении. Придется обратно приводить.
 
Slava:
MathRound уже исправили.

Спасибо, это хорошая новость.

 
Valeriy Yastremskiy:

Приведение типов, и этот вопрос точно не сюда. Округление бывает разным и в разные стороны. И не должно менять тип переменной. 

При чем тут " менять тип переменной " ? Речь идет о присвоении целой переменной значения вещественной переменной.

Valeriy Yastremskiy:

Для меня спорное исправление, если например округление используется в вычислении. Придется обратно приводить.

Приведенный вами пример не показателен. Вот другой пример:

int A = 1;
double B;
B = A;
A = B;
//Результат A = 0

Преобразование к вещественному типу не создает проблемы. А вот наоборот - не всегда.

 
fxsaber:

В той ветке так и не понял, где ошибка. Приведите несколько тиков подряд и покажите, какой из них битый.

cnt = 0;
      result = 0;
      while ((result <= 0) && (cnt < 100)) 
      {
        result = CopyTicksRange(sec_symbol, sec_ticks, COPY_TICKS_INFO, ulong(start_time) * 1000, ulong(end_time) * 1000);
        res = CheckSeries(sec_symbol, a_bars);
        cnt++;
      }
      if(result > 0)
      {
        for(int i = 0; i< result;i++)
        {
          if((sec_ticks[i].ask == 0.0) || (sec_ticks[i].bid == 0.0))
          {
            Print("Tick time = ", sec_ticks[i].time, ", Symbol = ", sec_symbol, ", Position = ", i, ", Ticks total = ", result, ", Ask = ", sec_ticks[i].ask, ", Bid = ", sec_ticks[i].bid);
          }
        }
       }
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.01 22:03:25, Symbol = BR-11.20, Position = 7363, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 15:44:58, Symbol = BR-11.20, Position = 11445, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:00, Symbol = BR-11.20, Position = 11446, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:00, Symbol = BR-11.20, Position = 11447, Ticks total = 223687, Ask = 0.0, Bid = 46.19
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:00, Symbol = BR-11.20, Position = 11448, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:00, Symbol = BR-11.20, Position = 11449, Ticks total = 223687, Ask = 46.23, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:00, Symbol = BR-11.20, Position = 11450, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:00, Symbol = BR-11.20, Position = 11451, Ticks total = 223687, Ask = 46.28, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:00, Symbol = BR-11.20, Position = 11452, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:00, Symbol = BR-11.20, Position = 11453, Ticks total = 223687, Ask = 0.0, Bid = 46.22
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:02, Symbol = BR-11.20, Position = 11456, Ticks total = 223687, Ask = 46.28, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:02, Symbol = BR-11.20, Position = 11457, Ticks total = 223687, Ask = 46.24, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:02, Symbol = BR-11.20, Position = 11458, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:02, Symbol = BR-11.20, Position = 11459, Ticks total = 223687, Ask = 0.0, Bid = 46.19
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:03, Symbol = BR-11.20, Position = 11460, Ticks total = 223687, Ask = 0.0, Bid = 46.2
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:05, Symbol = BR-11.20, Position = 11463, Ticks total = 223687, Ask = 46.24, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:06, Symbol = BR-11.20, Position = 11465, Ticks total = 223687, Ask = 46.24, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:06, Symbol = BR-11.20, Position = 11466, Ticks total = 223687, Ask = 46.23, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:06, Symbol = BR-11.20, Position = 11467, Ticks total = 223687, Ask = 46.24, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 16:00:07, Symbol = BR-11.20, Position = 11469, Ticks total = 223687, Ask = 46.24, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.02 22:11:35, Symbol = BR-11.20, Position = 20877, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 15:44:59, Symbol = BR-11.20, Position = 29203, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 16:00:00, Symbol = BR-11.20, Position = 29204, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 16:00:00, Symbol = BR-11.20, Position = 29205, Ticks total = 223687, Ask = 44.15, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 16:00:00, Symbol = BR-11.20, Position = 29206, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 16:00:00, Symbol = BR-11.20, Position = 29207, Ticks total = 223687, Ask = 0.0, Bid = 44.08
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 16:00:00, Symbol = BR-11.20, Position = 29208, Ticks total = 223687, Ask = 0.0, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 16:00:00, Symbol = BR-11.20, Position = 29209, Ticks total = 223687, Ask = 0.0, Bid = 44.09
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 16:00:03, Symbol = BR-11.20, Position = 29212, Ticks total = 223687, Ask = 44.1, Bid = 0.0
2020.09.16 11:16:27.970	Spread_new (BR-10.20,M1)	Tick time = 2020.09.03 16:01:15, Symbol = BR-11.20, Position = 29315, Ticks total = 223687, Ask = 44.07, Bid = 0.0

Не влезло все
 
Slava:
MathRound уже исправили.

А когда ожидать обновления ? 

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