Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1035
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет! Впрос по MQL5.
Как правильно закрыть ордер, не нашел нормального примера. Просто закрывать умею, классом CTrade пользуюсь, но есть ли нормальное готовое решение?
Цель не просто отправить команду на закрытие, а иметь фукцию которая возвращает true только после того как получит от брокера ответ "ДА, ПОЗИЦИЯ ТОЧНО ЗАКРЫТА, расслабься))".
Про trade.ResultRetcode() знаю и про TRADE_RETCODE_DONE тоже, но не хочется изобретать велосипед, есть у кого готовое решение?
OrderClose из MT4Orders вернет true c той же логикой, как и в MT4 - когда позиция будет закрыта.
OrderClose из MT4Orders вернет true c той же логикой, как и в MT4 - когда позиция будет закрыта.
думаю, как в прошлый раз появятся адепты МТ5 с критикой Вашей библиотеки, все бы ничего... но как пользоваться ордерной системой МТ5 мало кто знает ))))
OrderClose из MT4Orders вернет true c той же логикой, как и в MT4 - когда позиция будет закрыта.
думаю, как в прошлый раз появятся адепты МТ5 с критикой Вашей библиотеки, все бы ничего... но как пользоваться ордерной системой МТ5 мало кто знает ))))
Странно, что от разработчиков mql5 нет готового решения. А order, deal и position вообще мозг разрывают. Position это то, что открыто, а если уже закрыто, это что? HistoryOrdersTotal что возвращает если, по логике, один ордер открывает позицию, а другой закрывает, т.е. по два на позицию... при этом, тикет открывающего ордера (иногда, может быть, наверное) равет id позиции, а какой тогда тикет у закрывающего????
Странно, что от разработчиков mql5 нет готового решения.
Есть.
Я просто не могу решить банальную задачу - надо обратиться к этой последней сущности (по тикиту наверно) и собрать о ней информацию - время открытия/закрытия, объем и т.д. Предположим, что это нечно открывалось одним ордером и закрывалось тоже одним. Получается надо из HistoryOrderTotal брать последние два и из них стороить какой то анализ? А вдруг у них тикеты разные...
Как такое обращение к истории решено на практике?
Вы пишите "Закрытая позиция (это когда нет позиции, и говорить о ней как о чём-то осязаемом - бесполезно - нет её) - результат исполнения сделки на выход из рынка". Получается что в истории нет такой единой сущности, а есть набор событий - ордер->сделка (открытие), ордер->сделка (закрытие) и у этого всего нет единого названия.
Я просто не могу решить банальную задачу - надо обратиться к этой последней сущности (по тикиту наверно) и собрать о ней информацию - время открытия/закрытия, объем и т.д. Предположим, что это нечно открывалось одним ордером и закрывалось тоже одним. Получается надо из HistoryOrderTotal брать последние два и из них стороить какой то анализ? А вдруг у них тикеты разные...
Как такое обращение к истории решено на практике?
Попробуйте разобраться со структурой MqlTradeTransaction. Получив из истории последний ордер или сделку можно собрать в массив все ордера и/или сделки которые участвовали в формировании позиции. Таким образом из этих сделок можно собрать всю информацию о позиции.
Вы пишите "Закрытая позиция (это когда нет позиции, и говорить о ней как о чём-то осязаемом - бесполезно - нет её) - результат исполнения сделки на выход из рынка". Получается что в истории нет такой единой сущности, а есть набор событий - ордер->сделка (открытие), ордер->сделка (закрытие) и у этого всего нет единого названия.
Я просто не могу решить банальную задачу - надо обратиться к этой последней сущности (по тикиту наверно) и собрать о ней информацию - время открытия/закрытия, объем и т.д. Предположим, что это нечно открывалось одним ордером и закрывалось тоже одним. Получается надо из HistoryOrderTotal брать последние два и из них стороить какой то анализ? А вдруг у них тикеты разные...
Как такое обращение к истории решено на практике?
Идентификатор позиции всегда равен тикету самого первого её ордера - приказа на открытие этой позиции, и за время её существования он (идентификатор) никогда не меняется (в отличии от тикетов). Поэтому, чтобы найти все ордера и сделки конкретной позиции, ищите их по идентификатору позиции - они все точно будут принадлежать искомой позиции.
У ордера это ORDER_POSITION_ID, у сделки это DEAL_POSITION_ID, ну и у позиции это POSITION_IDENTIFIER