Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В отладчике идентификатор позиции равен НУЛЮ, но выбрать сделки по этому идентификатору, пожалуйста...
Балансовые сделки выбираются. Все в порядке.
Добавьте пожалуйста вывод posID через Print
Какое значение распечатается ?
Печатает тоже ноль.
Но я в своей проблеме разобрался.
Если я правильно помню, то некоторое время назад сделка в OnTradeTransaction была выбрана автоматом. Либо не закрывалось несколько позиций в цикле, поэтому всё проходило нормально... Теперь чтобы получить идентификатор позиции по тикету сделки, её, сделку сначала надо выбрать функцией HistoryDealSelect(trans.deal);
Балансовые сделки выбираются. Все в порядке.
Балансовая сделка имеет тикет 1
Балансовая сделка имеет тикет 1
Именно это значение вернет HistoryDealGetTicket(0).
Именно это значение вернет HistoryDealGetTicket(0).
Нет. На снимке видно, что тикет сделки trans.deal = 16 и, если не ошибаюсь, никаким боком тут нулевой в списке. Как-бы там ни было, но при ID позиции равной нулю, выбрать ордера или сделки не может быть возможности. Нумерация всех позиций, сделок или ордеров начинается с единицы.
Нет. На снимке видно, что тикет сделки trans.deal = 16 и, если не ошибаюсь, никаким боком тут нулевой в списке. Как-бы там ни было, но при ID позиции равной нулю, выбрать ордера или сделки не может быть возможности. Нумерация всех позиций, сделок или ордеров начинается с единицы.
Вы бы хотя бы проверяли.
Вы бы хотя бы проверяли.
Я не понимаю как это соотносится с тем кодом о котором идёт речь. Позиция закрылась. Мне надо получить ID этой позиции используя тикет сделки которая её закрыла. Тикет сделки 16. По этому тикету я получаю ID = 0. Но это пол-беды, беда в том, что имея ID позиции ноль, что априори быть не может, тем-не менее какие-то сделки по ID позиции равной нулю выбираются.
Поймите пожалуйста, что индекс позиции или сделки нигде не используется. Используются только тикеты и ID.
Я не понимаю как это соотносится с тем кодом о котором идёт речь. Позиция закрылась. Мне надо получить ID этой позиции используя тикет сделки которая её закрыла. Тикет сделки 16. По этому тикету я получаю ID = 0. Но это пол-беды, беда в том, что имея ID позиции ноль, что априори быть не может, тем-не менее какие-то сделки по ID позиции равной нулю выбираются.
Поймите пожалуйста, что индекс позиции или сделки нигде не используется. Используются только тикеты и ID.
Нулевой ID получаете, потому что не выбрали сделку 16 для работы с ее историей. Делайте сначала HistoryDealSelect..
Выбор сделок по нулевому ID, что делается дальше, отрабатывает правильно - идет выбор балансовых сделок.
Нулевой ID получаете, потому что не выбрали сделку 16 для работы с ее историей. Делайте сначала HistoryDealSelect..
Выбор сделок по нулевому ID, что делается дальше, отрабатывает правильно - идет выбор балансовых сделок.
Я это и сделал
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 2190
Alexey Viktorov, 2019.11.28 17:38
Печатает тоже ноль.
Но я в своей проблеме разобрался.
Если я правильно помню, то некоторое время назад сделка в OnTradeTransaction была выбрана автоматом. Либо не закрывалось несколько позиций в цикле, поэтому всё проходило нормально... Теперь чтобы получить идентификатор позиции по тикету сделки, её, сделку сначала надо выбрать функцией HistoryDealSelect(trans.deal);
Я это и сделал
Выходит, все работает правильно.