Если нет открытой позиции функция возвращает false. Если позиции нет, она должна выделяться, а потом объем смотреть, если объем 0 – значит нет позиции. А так как есть непонятно – нет ли позиции, или какие-то проблемы при попытке ее выделения. Функция PositionSelect() копирует данные о позиции в программное окружение, и последующие вызовы PositionGetDouble(), PositionGetInteger() и PositionGetString() возвращают ранее скопированные данные.

Ну, во первых, подобное случается только иногда. Во вторых, я применяю свой исходник, где использованы API MQL5, а не библиотека МТ4.

Обе функции OrderSelect( ticket ) и OrderGetTicket() действуют одинаково – они заполняют кэш действующих ордеров одним единственным ордером. OrderSelect( ticket ) предназначена для случая, когда тикет ордера известен заранее. OrderGetTicket() в сочетании с OrdersTotal() позволяет осуществить перебор всех имеющихся в базе терминала ордеров. Для каждого вида информации формируется независимый кэш.

mql5 positionselect

Данные об ордерах хранятся в кэше ордеров, данные о позициях хранятся в кэше позиций, данные о сделках и отработанных ордерах хранятся в соответствующих им экземплярах кэша истории. Действующие (отложенные) ордера, которые находятся в ожидании условий их исполнения или отмены, показываются в терминале в закладке “Торговля”. Эти ордера можно модифицировать или отменять.

Исполненные и отмененные ордера показываются в терминале в закладке “История”. Ордера из истории недоступны для модификации. но однажды у меня появился лот 0.2 (просто висел на демо счете советник, не в тестере). Однако, написание и отладка этой функции независима от остальной части алгоритма.

Постановка, отмена и модификация ордеров производится с помощью функции OrderSend(). Если ордер был отменен или истекло время его действия, или ордер был исполнен, то он перемещается в историю ордеров.

Я про то, смысл в иных проверках, поиске, переборе и наращивании кода, если функция не видит конкретно указанный тип POSITION_TYPE_SELL? Я пока мало знаю, возможно чего-то не понимаю, но PositionGetInteger, как мне кажется, обязана эту сделку видеть независимо от иных факторов.

Там только тикеты ордеров, а не тикеты ордеров, позиций и сделок. Данные будут обновляться на каждом тике, что уже намного удобнее, чем постоянно запускать вручную скрипт, который описывался в предыдущей статье “Рецепты MQL5 – Как получить свойства позиции?”. Значительное внимание уделено общей теории времяисчисления.

  • Обновлены функции работы с математической статистикой в стандартной библиотеке.
  • Однако, написание и отладка этой функции независима от остальной части алгоритма.
  • В итоге, так как счёт у вас hadge – Вы выбираете позицию с НАИМЕНЬШИМ тикетом.
  • Успешное выполнение означает только факт отсылки, но не даёт никакой гарантии, что запрос дошел до торгового сервера и был принят для обработки.

mql5 positionselect

В первую очередь статья должна быть интересна новичкам, приступившим к изучению программирования на MQL5. Также можно заметить, что в первой строке над списком свойств позиции отображается общее количество открытых позиций (Total Positions) и текущий номер счётчика позиций (Current). mql5 книга В предыдущей статье Рецепты MQL5 – Вывод информации в печать в разных режимах было показано, как можно быстро сделать скрипт и вывести необходимую информацию тремя разными способами. Теперь создадим скрипт, который получает все свойства позиции и показывает их пользователю.

Несколько вопросов MT4 MQL5

В этом коде сначала идёт выбор позиции черезPositionSelect- выбор позиции по символу. В итоге, так как счёт у вас hadge – Вы выбираете позицию с НАИМЕНЬШИМ тикетом. Дальше идёт обход по всему списку позиций, чтобы Вы просто видели, какие позиции и какие тикеты у них. На первом скрине проверка, две позиции bay и sell, но после формирования бара и открытия позиции sell (тикет №3), sell_opened высвечивает false.

Чтобы правильно обработать эти данные средствами MQL5 необходимо хорошо представлять как происходит взаимодействие mql5-программы и среды исполнения терминала. Значение может быть одним из значений перечисления ENUM_POSITION_PROPERTY_STRING. Значение может быть одним из значений перечисления ENUM_POSITION_PROPERTY_INTEGER.

mql5 positionselect

Доступ к торговой истории из MQL5-программы

Как только эта функция будет каким-либо образом написана и отлажена, алгоритм “увеличения позиции до заданного уровня, если она меньше этого уровня” будет работать. Надежный торговый робот не может быть создан без понимания механизмов работы торговой системы MetaTrader 5. Клиентский терминал получает от торгового сервера информацию о позициях, ордерах и сделках.

Не следует путать между собой позиции и действующие отложенные ордера, которые mql5 community также отображаются на вкладке “Торговля” в панели “Инструменты”.