- НУЖНА ПОМОЩЬ!!! Ожидание второй части сигнала
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- [АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3.
Потому, что в isCloseLastPosByTake() свой перебор ордеров и всё сбивается.
Не надо вызывать другую функцию с перебором ордеров. Ведь если тут ордер выбран, его проще здесь проверить на закрытие и принять решение.
Ерунда какая-то написана.
OrderSelect (OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES) - выбирает РЫНОЧНЫЙ ордер. Т.е. ордер, который еще не закрыт. И далеко не факт, что OrdersTotal()-1 будет соотвтествовать последнему открытому ордеру.
Ну, да. Я что-то не обратил внимания на то что в isCloseLastPosByTake() перебор истории.
Тогда перед вызовом isCloseLastPosByTake() запиши в переменную тикет ордера, а потом после возврата из isCloseLastPosByTake() выбор ордера по этому тикету.
(OrderSelect(OrdersTotal(), SELECT_BY_POS,MODE_HISTORY) == true)
Так правильно? (Я хочу выбрать последний закрытый ордер)
Конечно не правильно. Во первых для истории есть OrdersHistoryTotal()
OrdersTotal() или OrdersHistoryTotal() это количество открытых ордеров, как рыночных так и отложенных, или закрытых и удалённых отложников. А нумеруются они от 0 до OrdersTotal()-1 соответственно OrdersHistoryTotal()-1
И даже поставив OrdersHistoryTotal()-1 никакой гарантии что он последний или первый нету...
(OrderSelect(OrdersTotal(), SELECT_BY_POS,MODE_HISTORY) == true)
Так правильно? (Я хочу выбрать последний закрытый ордер)
... int nCounter; for (nCounter = OrdersHistoryTotal () - 1; nCounter >= 0; nCounter--) { OrderSelect (nCounter, SELECT_BY_POS, MODE_HISTORY); if ... else ... }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования