Alexey Oreshkin: Да нет же, вопрос не в том что я не могу закрыть позиции, а в том что в стандартной библиотеке недоработка, вот и всё. А предложенный вами вариант не будет работать на обычных счетах, не хеджевых.
Для хеджевых и нетинговых счетов надо писать разные советники.
Если использовать закрытие хеджевых как для нетинговых то закроется только один ордер по символу, а наоборот... позиция не имеет тикета.
Sergey Gritsay: С чего это вы решили что не будет?
Потому что если счёт не хеджевый, то у позиции нет тикета, а имеется 1 позиция по символу, и закрывается соответственно выделением по символу а не по тикету. Могу конечно ошибаться, но по идее должно быть так. не проверял ввиду отсутствия необходимости.
Пожалуй это разумный ответ. Если использовать из стандартной библиотеки класс CTrade, то в любом случае метод SetExpertMagicNumber() используется тоже. Соответственно у метода PositionClose() проблем не будет, а когда мне надо было постоянно во время проверки робота закрывать сотни открытых позиций, то я без лишней запары и сделал себе этот скрипт для быстрого закрытия всего, который на хеджевых счетах и не закрывал у меня позу из-за наличия магика. Тогда и исправлять в хелпе или в библиотеке ничего не надо. всё корректно. Благодарю!
И кстати метод PositionCloseByTicket() который в хелпе описан, в самой библиотеке отсутствует. Для обоих типов счетов нужно использовать PositionClose(), просто передавая ему или символ или тикет. И это походу уже явный косяк или хелпа или библиотеки, но где то в одном месте исправить надо.
Alexey Oreshkin: И кстати метод PositionCloseByTicket() который в хелпе описан, в самой библиотеке отсутствует. Для обоих типов счетов нужно использовать PositionClose(), просто передавая ему или символ или тикет. И это походу уже явный косяк или хелпа или библиотеки, но где то в одном месте исправить надо.
Alexey Oreshkin: И кстати метод PositionCloseByTicket() который в хелпе описан, в самой библиотеке отсутствует. Для обоих типов счетов нужно использовать PositionClose(), просто передавая ему или символ или тикет. И это походу уже явный косяк или хелпа или библиотеки, но где то в одном месте исправить надо.
Какой косяк?
Karputov Vladimir:
Возможно опечатка и имелось в виду это:
Владимир, Вам-ли напоминать о перегрузке функций?
О чём вы??? Для нетинг счёта передаётся символ, для хедж передаётся тикет...
Alexey Oreshkin: Читаем внимательно хелп. там русским по белому написано: PositionCloseByTicket()
Мама дорогая... еле нашёл о чём речь. Алексей, ну так эта функция в группе "Набор классов для создания и проверки торговых стратегий". Насколько я понимаю это относится к созданию советников и индикаторов с помощью МастераMQL5. И никаким образом не касается нормального программирования. Может я и ошибаюсь.
Попробуйте так
Сергей, а где это такая функция PositionCloseByTicket()?
Может у меня библиотека старая?
Да нет же, вопрос не в том что я не могу закрыть позиции, а в том что в стандартной библиотеке недоработка, вот и всё.
А предложенный вами вариант не будет работать на обычных счетах, не хеджевых.
Для хеджевых и нетинговых счетов надо писать разные советники.
Если использовать закрытие хеджевых как для нетинговых то закроется только один ордер по символу, а наоборот... позиция не имеет тикета.
Используй второй вариант
С чего это вы решили что не будет?
Могу конечно ошибаться, но по идее должно быть так. не проверял ввиду отсутствия необходимости.
CTrade my_trade; my_trade.SetExpertMagicNumber(1234862);Благодарю!
И это походу уже явный косяк или хелпа или библиотеки, но где то в одном месте исправить надо.
И кстати метод PositionCloseByTicket() который в хелпе описан, в самой библиотеке отсутствует. Для обоих типов счетов нужно использовать PositionClose(), просто передавая ему или символ или тикет.
И это походу уже явный косяк или хелпа или библиотеки, но где то в одном месте исправить надо.
Возможно опечатка и имелось в виду это:
Возможно опечатка и имелось в виду это:
Да, где то опечатка. Или в хелпе или в библиотеке. Как бы для сервис деска достучаться только.
И кстати метод PositionCloseByTicket() который в хелпе описан, в самой библиотеке отсутствует. Для обоих типов счетов нужно использовать PositionClose(), просто передавая ему или символ или тикет.
И это походу уже явный косяк или хелпа или библиотеки, но где то в одном месте исправить надо.
Какой косяк?
Возможно опечатка и имелось в виду это:
Владимир, Вам-ли напоминать о перегрузке функций?
О чём вы??? Для нетинг счёта передаётся символ, для хедж передаётся тикет...
Какой косяк?
Владимир, Вам-ли напоминать о перегрузке функций?
Читаем внимательно хелп. там русским по белому написано: PositionCloseByTicket()