Добрый день.
Написал эксперт, отладка на исторических данных гоняет как надо.
Прикрепил эксперт к реальному графику в реальном времени, начались косяки.
Запустил отладку на реальных данных, и пошли чудеса:
i = 102043546 при цикле от 5 до 0
какой тип имеет pm_QtyPos ? держу пари, что uint, unsigned, беззнаковый и получилось underflow
((uint)0)-1 = MAX_UINT
то есть в вашем случае цикл должен выглядить как : for(int i=((int)pm_QtyPos)-1;i>=0;i--) {.....}
а вообще стоит поменять тип pm_QtyPos
какой тип имеет pm_QtyPos ? держу пари, что uint, unsigned, беззнаковый и получилось underflow
((uint)0)-1 = MAX_UINT
то есть в вашем случае цикл должен выглядить как : for(int i=((int)pm_QtyPos)-1;i>=0;i--) {.....}
а вообще стоит поменять тип pm_QtyPos
на картинке ведь виден тип pm_QtyPos - int
Проблема в том, что переменная i не инициализируется:
Что c MQL ?
Да, кстати сталкивался с такой проблемой, так и не понял в чём дело, в итоге просто поменял i на другую букву и всё заработало как надо.
Проблема в том, что переменная i не инициализируется:
Опупеть!
Что на это скажут разработчики MQL ?
Я написал о самой очевидной проблеме.
Есть и другие - когда заполняешь переменные объекта в одних функциях, в других функциях эти переменные не инициализированы!Эксперт работает очень непредсказуемо!
1. Покажите информацию о терминале и об операционной системе:
Forum on trading, automated trading systems and testing trading strategies
Vladimir Karputov, 2021.03.16 04:20
If you have a question, first of all you should show the first three lines from the 'Journal' tab
(select these lines, copy to the clipboard and paste into the message using the button ). It should look like this:
2021.03.16 05:13:07.133 Terminal MetaTrader 5 x64 build 2832 started for MetaQuotes Software Corp. 2021.03.16 05:13:07.134 Terminal Windows 10 build 19042, Intel Core i7-9750H @ 2.60GHz, 26 / 31 Gb memory, 842 / 947 Gb disk, IE 11, UAC, GMT+2 2021.03.16 05:13:07.134 Terminal C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
2. Вставьте код из сообщения #3, код который можно загрузить в редактор MetaEditor и проверить.

- 2021.06.07
- www.mql5.com
Проблема в том, что переменная i не инициализируется:
Что c MQL ?
Само значение, конкретной 'i', верное, неверное отображение в WatchList
Обнаружена и устранена ошибка в WatchList отладчика: в некоторых случаях (часто), значение могло извлекаться по старому адресу переменной с именем 'i', (не обязательно той 'i', что в текущей области видимости)
Исправление будет доступно в ближайшем билде.
К сожалению не могу проверить, ваш это случай или нет, т.к. Вы не предоставили компилируемый код для исследования
Проблема в том, что переменная i не инициализируется:
Что c MQL ?
Предоставьте пожалуйста минимальный компилируемый код для воспроизведения ошибки.
Версии:
2021.06.08 03:11:19.925 Terminal Alpari MT5 x64 build 2940 started for Alpari International 2021.06.08 03:11:19.927 Terminal Windows 10 build 18363, AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx, 3 / 5 Gb memory, 15 / 237 Gb disk, IE 11, Admin, GMT+3 2021.06.08 03:11:19.927 Terminal C:\Program Files\Alpari MT5
Предоставьте пожалуйста минимальный компилируемый код для воспроизведения ошибки.
Эксперт прикрепил архивом.
Открываете в отладчике, нажимаете отладка на реальных данных. Период М5, EURUSD:
Добавил отладочный код (выделил комментариями этот участок в коде), поэтому сразу откроются позиции (по принципу - на каждый свече, один раз, свеча растет вверх - позиция Бай,растет вниз - позиция Селл)
Лучше подождать 5 мин, тогда откроется несколько позиций Бай и Селл.
Откроется вот с так:
как видно на картинке выше, хоть у нас и открыто по GBPUSD 2 позиции Buy и 1 Sell, в выделенных красным участках информация по позициям не отображается.
Все из за проблем с инициализацией переменной i (класс PositionsManager.mqh, строка 276):
а так же из за того, что в этом же классе в функции PositionAdd не верно сохраняется тип позиции в переменной PositionType, строка 242:
На картинке выше тип позиции присвоится верно ("00" или "11), но в следующей функции (в той же CheckStatus, где проблемы с инициализацией i) в pm_PositionsArray[i].PositionType будет NULL.
Возможно, это не все проблемы с инициализациями и присваиванием переменных.
Правильный вариант работы:
Сейчас открыта позиция Бай, и по ней в левом столбце выводится вся информация (QtyBuy - количество позиций Бай, информация о лоте TotalVolume, инфрмация о прибыли)
Позиций Селл нет, поэтому в правом столбце ничего не выводится.
Запустить правильный вариант можно в отладке на исторических данных, предварительно закомментировав указанный участок кода (в противном случае будут открываться позиции на каждой свече):
Настройки исторического тестирования:
EURUSD M5 (как и реального тестирования)
Каждый тик на основе реальных тиков.
Без задержек, идеальное исполнение.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день.
Написал эксперт, отладка на исторических данных гоняет как надо.
Прикрепил эксперт к реальному графику в реальном времени, начались косяки.
Запустил отладку на реальных данных, и пошли чудеса:
i = 102043546 при цикле от 5 до 0
Как такое возможно?