Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У вас все еще есть Контр...
См. комментарий GumRai https://www.mql5.com/en/forum/151167/page2#954622
Спасибо за ваши сообщения.
Я использовал Open вместо Time, потому что как только происходит открытие бара, оно фиксируется навсегда и никогда не изменится. Он не ищет два последовательных бара - это один и тот же бар и спрашивает, совпадает ли открытие текущего бара, на котором только что произошел тик, со значением Open, хранящимся в ThisBarOpen. Кроме того, я бы подумал, что Open будет более простым, чем Time, потому что это простой поиск данных, в то время как Time, возможно, придется ссылаться на что-то еще и, возможно, выполнять какие-то вычисления.
Re Counter--; я не изменил это, потому что другой советник не смог бы закрыть ордер, так как код сначала проверяет, что MagicNumber и Symbol() одинаковы.
Я, конечно, понимаю, что отключение электричества может стереть содержимое BuyTicket, но этого не произошло во время моих тестов, и мой код все еще работает очень медленно. Поэтому я не могу понять, как это может быть причиной.
Мой главный вопрос на данный момент - почему потребовалось так много времени, чтобы удалить советников из окон терминала, в которых были открытые позиции, и совсем немного времени, чтобы удалить их из терминала, в котором не было открытых позиций. Возможно, совпадение - но все четыре окна?
Я не знаю, что это действительно относится к вашему вопросу, но вы ограничиваете свою торговлю 1 покупкой, 1 продажей на советника, так зачем все это делать?
У вас уже есть номер вашего тикета:
если вы сделаете его статическим int, вы сможете закрыть свой ордер явно по этому номеру тикета, не копаясь в пуле ордеров в поисках его.
Спасибо за ваши сообщения.
Re Counter--; Я не изменил это, потому что другой советник не смог бы закрыть ордер, потому что код сначала проверяет, что MagicNumber и Symbol() одинаковы.
Мой главный вопрос на данный момент - почему потребовалось так много времени, чтобы удалить советников из окон на терминале, где были открытые позиции, и совсем немного времени, чтобы удалить их из терминала, где не было открытых позиций. Совпадение возможно - но все четыре окна?
Вы понимаете, как работают циклы?
Допустим, у вас открыто 3 ордера.
При первом проходе счетчик==0, поэтому будет выбран ордер с индексом 0.
В конце цикла вы уменьшаете счетчик на 1, так что counter== -1.
Перед повторным выполнением цикла счетчик увеличивается на 1 в рамках функции for. Таким образом, счетчик ==0
При следующем выполнении цикла счетчик снова = 0!!! и так далее, и так далее.
Вы застряли в бесконечном цикле, который просто продолжает проверять индекс порядка 0.
Единственный способ, которым он остановится, это если нет открытых ордеров, потому что тогда OrdersTotal - 1 будет -1, а 0 не <= -1.