Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1110
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Возвращает ошибку 4108 иногда - неправильный тикет для OrderClose. Может ли быть так что OrderTicket() не совпадает с тикетом в OrderSelect ? Переменная ticket может быть равной нулю.
Мне долго воспроизводить ошибку, проще спросить.Возвращает ошибку 4108 иногда - неправильный тикет для OrderClose. Может ли быть так что OrderTicket() не совпадает с тикетом в OrderSelect ? Переменная ticket может быть равной нулю.
Мне долго воспроизводить ошибку, проще спросить.Вы выбираете ордер по тикету. А уверены, что выбранный ордер уже не закрыт? Но при этом пытаетесь его опять закрыть... Время закрытия проверьте после успешного выбора по тикету.
Вы выбираете ордер по тикету. А уверены, что выбранный ордер уже не закрыт? Но при этом пытаетесь его опять закрыть... Время закрытия проверьте после успешного выбора по тикету.
Я проверю, когда воспроизведу ошибку. У меня все тикеты в глобальных переменных хранятся. При закрытии ордера они удаляются. Перед OrderSelect() ticket берется из глобальных переменных. Если тикета нет в переменных - эта переменная будет 0, а значит ордер не должен выбраться и OrderSelect() вернет false. Но вообще да, стоит проверить. Спасибо.
Я проверю, когда воспроизведу ошибку. У меня все тикеты в глобальных переменных хранятся. При закрытии ордера они удаляются. Перед OrderSelect() ticket берется из глобальных переменных. Если тикета нет в переменных - эта переменная будет 0, а значит ордер не должен выбраться и OrderSelect() вернет false. Но вообще да, стоит проверить. Спасибо.
Это стандартно - проверить цену закрытия при выборе ордера по тикету. Другим способом вы нормально не узнаете закрыт ли ордер, и выбран из списка закрытых, или ещё открыт, и выбран из списка рыночных.
Самое недальновидное - хранить тикеты в глобальных переменных. Их нужно брать из торгового окружения - там актуальная на текущий момент информация.
Это стандартно - проверить цену закрытия при выборе ордера по тикету. Другим способом вы нормально не узнаете закрыт ли ордер, и выбран из списка закрытых, или ещё открыт, и выбран из списка рыночных.
Самое недальновидное - хранить тикеты в глобальных переменных. Их нужно брать из торгового окружения - там актуальная на текущий момент информация.
Если я буду выбирать вот так: OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES), по идее это частично решит проблему? Тикеты в глобальных переменных храню по другим причинам, ну и заодно воспользовался в этом случае.
Если я буду выбирать вот так: OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES), по идее это частично решит проблему? Тикеты в глобальных переменных храню по другим причинам, ну и заодно воспользовался в этом случае.
Нет, не решит - pool (MODE_TRADES) при выборе по тикету игнорируется.
Возвращает ошибку 4108 иногда - неправильный тикет для OrderClose. Может ли быть так что OrderTicket() не совпадает с тикетом в OrderSelect ? Переменная ticket может быть равной нулю.
Мне долго воспроизводить ошибку, проще спросить.обычно достаточно проверить для рыночных ордеров:
OrderCloseTime() == 0 //ордер открыт
OrderCloseTime() > 0 //ордер закрыт
для лимитных ордеров нужно еще смотреть цену закрытия, если она равна 0 - то лимитник был Canceled
Здравствуйте!
Поделитесь, кто может, кодом с употреблением метода PositionClosePartial .
Теоретически понимаю, как работает, но мне бы на рабочий код посмотреть.
Или посоветуйте, где посмотреть.
Заранее благодарен.
Здравствуйте!
Поделитесь, кто может, кодом с употреблением метода PositionClosePartial .
Теоретически понимаю, как работает, но мне бы на рабочий код посмотреть.
Или посоветуйте, где посмотреть.
Заранее благодарен.
Практически это одна строка кода. Но для неё надо получить тикет позиции. Вот советник из OnInit открывающий позицию лотом 0.2 и в OnTick закрывающий половину позиции.
Или вот полный код из класса CTrade