Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2724
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Именно это и происходило
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Alexey Viktorov, 2026.03.30 13:44
Затрётся, но разве это проблема? Ведь последовательность в списке останется прежней. И соответственно начинать цикл сначала не надо.
Чтобы сильно не заморачиваться, можно после получения цены открытия сразу вызвать HistorySelect() и только потом вернуть полученную цену.
Это панель отображения истории.
Проблем нет ни с чем, кроме получения текущего дня, а текущий день - это время закрытия позиции, а не время открытия
Поэтому получается вот так
Проблема в том, что если открыть позицию вчера и закрыть сегодня, то нет доступа к цене открытия, поэтому разницу в пунктах за сегодня считает не корректно
--
P.S. А если открыть месяц назад, а закрыть сегодня, то как быть?
если открыть позицию вчера и закрыть сегодня, то нет доступа к цене открытия
Это панель отображения истории.
Проблем нет ни с чем, кроме получения текущего дня, а текущий день - это время закрытия позиции, а не время открытия
Поэтому получается вот так
Проблема в том, что если открыть позицию вчера и закрыть сегодня, то нет доступа к цене открытия, поэтому разницу в пунктах за сегодня считает не корректно
Виталий, я читал это в самом первом сообщении. И другого варианта не вижу, кроме как из цикла перебора позиций за сегодня вызывать функцию в которой делается выборка по идентификатору позиции, определяется цена открытия и цена закрытия в одном цикле, затем вызывается HistorySelect() и из функции выход. Дальше в цикле продолжается перебор сделок и опять в функцию…
Дополнение к
--
P.S. А если открыть месяц назад, а закрыть сегодня, то как быть?
Да хоть в прошлом году… Или даже в прошлом веке, если умудрился открыть.
Почему? Всегда же есть
У меня не получилось, пробовал разные варианты, пока не сделал так
У меня не получилось, пробовал разные варианты, пока не сделал так
У меня не получилось, пробовал разные варианты, пока не сделал так
Виталий, у меня нет ни одной открытой/закрытой позиции на счёте, поэтому вариант не проверенный…
Смысл должно быть понятен, а остальное дополнишь сам.
Сюда можно и комиссию вставить.
void PositionPriceIN(long posID, double & prIN) { if(HistorySelectByPosition(posID)) { for(int i=0; i<HistoryDealsTotal(); i++) { ulong ticket = HistoryDealGetTicket(i); if(HistoryDealGetInteger(ticket, DEAL_ENTRY) == DEAL_ENTRY_IN) prIN = HistoryDealGetDouble(ticket, DEAL_PRICE); } } HistorySelect(dt, TimeCurrent()); }
Спасибо!
Добавил все фильтры, всё отработало чётко, буду проверять дальше.
В моём коде не хватало именно этого