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

 
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 будут кивать на брокера. Вопрос серьёзней чем может показаться.

 
Andrey Dik:

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

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

В коде показано, какие цены могут быть. Посмотрел свои коды. Не делаю этих и других тупых проверок. Совершил точно больше миллиона сделок в разных местах на одном только MT5. Вопрос очень далек от практики.

 
fxsaber:

В коде показано, какие цены могут быть. Посмотрел свои коды. Не делаю этих и других тупых проверок. Совершил точно больше миллиона сделок в разных местах на одном только MT5. Вопрос очень далек от практики.

Ну и? В том то и дело, что цены могут быть любыми, и какие из них считать верными? Не делаете этих и других тупых проверок, но зато делаете не менее тупые,  но гораздо более дорогие проверки значений на 0.0?

 
inwinterborn:

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

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

Это баг?

Точка останова сдвигается - так как в CSeries::BufferResize эксперт вообще никогда не заходит.