Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2723
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Приветствую!
Что не так в этом коде и как можно оптимизировать?
Проблема в том, что если открыть позицию вчера и закрыть сегодня, то нет доступа к цене открытия, поэтому разницу в пунктах за сегодня считает не корректно
Да в сама функция GetPriceIn(posID) тяжёлая
--
--
Такой код считает корректно, но тяжёлый
Функция GetPriceIn() абсолютно неправильная. Зачем перебирать все сделки в цикле когда есть HistorySelectByPosition() и есть идентификатор позиции… Эта функция вернёт всего 2 сделки IN и OUT, конечно при условии если открывали одной сделкой и закрывали одной. Но это по любому будет меньше, чем все сделки в истории… А если пишется исключительно для себя любимого и предполагается открывать и закрывать позиции только целиком, то можно вообще обойтись без цикла. Сделка IN будет всегда индексом 0, а OUT всегда 1.
Мнится мне, что после вызова HistorySelectByPosition() опять придётся вызывать HistorySelect(), так как она затрётся. Нет?
Затрётся, но разве это проблема? Ведь последовательность в списке останется прежней. И соответственно начинать цикл сначала не надо.
Чтобы сильно не заморачиваться, можно после получения цены открытия сразу вызвать HistorySelect() и только потом вернуть полученную цену.
предполагается открывать и закрывать позиции только целиком
Ожидания могут не совпасть с реальностью
Могут, но это редко. И не у всех…
И всё же, а если? То что?
«только для себя» и на свой страх и риск
Мнится мне, что после вызова HistorySelectByPosition() опять придётся вызывать HistorySelect(), так как она затрётся. Нет?
Если б я писал для себя, то точно бы делал так, чтобы мне мой код не подложил бяку. И, впрочем, стараюсь (насколько хватает знаний) делать всё как для себя.
Артём, не придирайся. Я не агитировал за такое написание, а просто отметил, что такое возможно с определёнными рисками.
По хорошему надо в цикле считать среднюю цену открытия, но это утяжелит код. Так-же и цену закрытия надо считать среднюю. Ведь закрытие тоже может быть не одной сделкой. И по хорошему всё это надо делать в одном цикле по сделкам выбранным по идентификатору позиции, как цену открытия так и цену закрытия…