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

 
 Просьба помочь со сменой почтового ящика: https://www.mql5.com/ru/forum/1111/page2959#comment_20747153.
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.02.14
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
[Удален]  

Подскажите пож-та, почему брейкпоинты при отладке, и на истории, и онлайн (Ctrl+F5, F5), сдвигаются на следующую функцию?

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

Это баг?

 
Andrey Dik:

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

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

и, соответственно, возникает другой вопрос: нужно ли проверять структуру MqlTick на корректность значений после заполнения её функцией SymbolInfoTick ()? - ведь значения аск и бид могут быть любыми, в том числе и отрицательными. Или достаточно получить true от SymbolInfoTick ()? 

 
Andrey Dik:

и, соответственно, возникает другой вопрос: нужно ли проверять структуру MqlTick на корректность значений после заполнения её функцией SymbolInfoTick ()? - ведь значения аск и бид могут быть любыми, в том числе и отрицательными. Или достаточно получить true от SymbolInfoTick ()? 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике

fxsaber, 2021.02.15 03:02

Нулевая цена COPY_TICKS_INFO-тика - это ошибка?

void OnStart()
{
  MqlTick Ticks[];
  
  CopyTicksRange("GBPUSD", Ticks, COPY_TICKS_INFO, D'2020.10.02 23:54:54' * 1000, D'2020.10.05 00:07:01' * 1000);
    
  ArrayPrint(Ticks);
  Print(AccountInfoString(ACCOUNT_SERVER));
}


Результат.

                         [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
        [0] 2020.10.02 23:54:54 1.29378 1.29385 0.0000        0 1601682894091       4       0.00000
        [1] 2020.10.02 23:54:54 1.29377 1.29383 0.0000        0 1601682894404     134       0.00000
        [2] 2020.10.02 23:54:54 1.29375 1.29379 0.0000        0 1601682894471     134       0.00000
        [3] 2020.10.02 23:54:55 1.29375 1.29381 0.0000        0 1601682895248       4       0.00000
        [4] 2020.10.05 00:06:14 0.00000 1.29313 0.0000        0 1601856374091       6       0.00000
        [5] 2020.10.05 00:07:00 1.29271 1.29332 0.0000        0 1601856420497     134       0.00000
        [6] 2020.10.05 00:07:00 1.29271 1.29331 0.0000        0 1601856420497       4       0.00000
        RannForex-Server
[Удален]  
inwinterborn:

Подскажите пож-та, почему брейкпоинты при отладке, и на истории, и онлайн (Ctrl+F5, F5), сдвигаются на следующую функцию?

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

Это баг?


Пояснение:

1. Ставлю вручную 2 брейкпоинта: 1) Series.mqh строка 81; 2) TimeSeries.mqh строка 48
2. Перехожу в файл ExpertMACD.mq5
3. Запускаю запускаю отладку на исторических или реальных данных
4. Получаю остановку отладчика в файле Series.mqh на строке 94, на которой не было брейкпоинта. Строка является началом следующей функции после моего ручного брейкпоинта, который со строки 81 исчез или переместился.
5. Проверяю второй мой ручной брейкпоинт в TimeSeries.mqh, и вижу, что он тоже переместился с 48й на 63ю строку, опять следующая за моим бывшим брейкпоинтом функция.


Подскажите пож-та, в чём может быть проблема?

 
inwinterborn:


Пояснение:

1. Ставлю вручную 2 брейкпоинта: 1) Series.mqh строка 81; 2) TimeSeries.mqh строка 48
2. Перехожу в файл ExpertMACD.mq5
3. Запускаю запускаю отладку на исторических или реальных данных
4. Получаю остановку отладчика в файле Series.mqh на строке 94, на которой не было брейкпоинта. Строка является началом следующей функции после моего ручного брейкпоинта, который со строки 81 исчез или переместился.
5. Проверяю второй мой ручной брейкпоинт в TimeSeries.mqh, и вижу, что он тоже переместился с 48й на 63ю строку, опять следующая за моим бывшим брейкпоинтом функция.


Подскажите пож-та, в чём может быть проблема?

Проверьте настройки в редакторе - отключите оптимизацию:

[Удален]  
Vladimir Karputov:

Проверьте настройки в редакторе - отключите оптимизацию:

Благодарю за ответ, но не помогает.

Опция действительно была включена.

Отключил. Повторил. Результат такой же, как описано выше.

Закрыл терминал и редактор с новой настройкой.

Открыл снова. Повторил. Результат прежний.

 

В чём ещё может быть проблема?


 
inwinterborn:

Благодарю за ответ, но не помогает.

Опция действительно была включена.

Отключил. Повторил. Результат такой же, как описано выше.

Закрыл терминал и редактор с новой настройкой.

Открыл снова. Повторил. Результат прежний.

 

В чём ещё может быть проблема?


Попробуйте версию 2833 - может что изменилось ...

[Удален]  
Vladimir Karputov:

Попробуйте версию 2833 - может что изменилось ...

Прошло автоматическое обновление до 2834.

Результат не изменился. Брейкпоинты сдвигаются.

 
fxsaber:

У Вас в коде нет проверки возвращаемого функцией значения, посему судить о корректности содержимого структуры Ticks не представляется возможным. 

А если ошибок нет при вызове CopyTicksRange то нужно считать нулевые значения структуры нормой, иначе кому верить вообще? Какие цены вообще можно считать нормальными (речь даже не о 0.0-вых ценах, а о !любых! ценах)? Кому жаловаться в случае ошибочных ценах, в Спортлото? Брокер будет кивать на MQ, а MQ будут кивать на брокера. Вопрос серьёзней чем может показаться.