?> Характеристики ордеров и правила проведения торговых операций Торговые операции Учебник по MQL4

Характеристики ордеров и правила проведения торговых операций Торговые операции Учебник по MQL4

В блоке 6-7 выполняется проверка наличия найденных рыночных ордеров. Если
в блоке 2-4 не было обнаружено ни одного рыночного ордера (а это в общем случае
вполне возможно), то значение флага Real_Order остаётся равным -1, что означает
отсутствие рыночных ордеров. Если при проверке в блоке 6-7 выявлено отсутствие
рыночных ордеров, то выполнение цикла while прерывается и программа заканчивает
работу. Если же значение переменной Real_Order оказывается равным 0 или 1, то это
значит, что рыночный ордер к закрытию ранее определён и его надо закрыть. Если бы заранее было точно известно, что в течение периода закрытия ордеров цена
не изменится, то порядок закрытия ордеров не имел бы значения.

  • Эта программа не приспособлена для модификации
    заявленной цены ордера в противоположную сторону от рыночной цены, в ней также
    не реализована возможность изменения положения отдельно взятого какого-либо из
    стоп-приказов.
  • Cохраним регистрацию BuyTicket, чтобы открывались только чередующиеся ордера на покупку / продажу.
  • Минимальное расстояние отложенной цены от текущей рыночной цены в пунктах также можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL.
  • Функция изменяет параметры рыночных и отложенных ордеров.
  • Чтобы принять решение о том, какие ордера и в какой последовательности необходимо
    закрывать, требуется иметь сведения обо всех ордерах, открытых на текущий момент.

Может быть любым
из значений идентификаторов запроса (см. Идентификаторы функции MarketInfo). Стоимость 1 лота для различных финансовых инструментов, полученная
с помощью conditions.mq4. Наличие разнонаправленных ордеров не высвобождает залог. Сервер получил торговый приказ, произвёл его проверку, не обнаружил некорректных
параметров и принял решение исполнить торговый приказ.

Ошибка 134. Недостаточно денег для совершения операции

Добавление минимального уровня прибыли позволит вам установить начальный стоп-лосс, одновременно задерживая трейлинг-стоп, пока не будет достигнута указанная сумма прибыли. В этом примере давайте предположим, что при размещении ордера установлен начальный стоп-лосс в 100 пунктов. Мы используем трейлинг-стоп в 50 пунктов с минимальным уровнем прибыли в 50 пунктов. Когда прибыль по ордеру достигнет 50 пунктов, стоп-лосс будет скорректирован в безубыток. Мы пройдемся по пулу ордеров и проверим каждый ордер, чтобы увидеть, нужно ли нам его закрыть. Если текущий ордер является рыночным ордером на покупку, как указано OP_BUY, и если он соответствует символу нашего графика и аргументам магического числа, мы приступим к закрытию ордера.

  • Мы также проверяем, чтобы стоп-лосс еще не был установлен по цене безубытка.
  • Отложенные ордера немного отличаются от рыночных по логике их параметров.
  • Здесь рассматривается 2 вида ошибок – те, которые
    позволяют ещё надеяться на успешное открытие и те, появление которых однозначно
    указывает на необходимость прекратить исполнение программы.

При изменении трейлинг-стопа мы должны проверить, больше ли расстояние в пунктах между текущей ценой и текущим стоп-лоссом, чем трейлинг-стоп. Если это так, то стоп-лосс будет изменен таким образом, чтобы расстояние от текущей цены в пунктах было равно количеству пунктов в настройке трейлинг-стопа. Мы также можем использовать наш цикл ордеров для изменения нескольких ордеров. Трейлинг-стоп перемещает стоп-лосс вверх или вниз по цене ордера, поскольку ордер получает прибыль. Позволяет зафиксировать часть прибыли и обеспечить отличную защиту от потерь.

В этом случае при попытке задать ненулевое значение в параметре expiration будет сгенерирована ошибка 147 (ERR_TRADE_EXPIRATION_DENIED). Цены StopLoss и TakeProfit не могут располагаться слишком близко к рынку. Минимальное eur cad курс и график евро расстояние стопов в пунктах можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае ошибочных, а также ненормализованных стопов генерируется ошибка 130 (ERR_INVALID_STOPS).

Другие ошибки и функция MarketInfo()

Если же zz1 уже определена, то мы просто прерываем цикл, потому что нами найдены оба ближайших экстремума. В MQL4 есть одна очень важная возможность – программно определить в окне финансового
инструмента координаты места, на которое был установлен эксперт или скрипт, если
они присоединены с помощью мыши. Например, используя функцию WindowPriceOnDropped()
можно получить значение прикрепления скрипта по оси ординат.

Закрытие нескольких ордеров

В данном случае мы сразу же  пропишем ордерам цели, а не будем их модифицировать после становления рыночными (хотя так тоже можно реализовать, просто немного дольше). Соответственно, вначале нам нужно сделать небольшие расчеты, на которые влияет тип ордера — покупка или продажа. Зиг Заг не является встроенным индикатором терминала МТ4, поэтому импорт его данных нужно проводить с помощью функции iCustom, которую мы проходили в этом уроке. Аналогичное изменение кода следует выполнить в блоке 5-6 и для другого
стоп-приказа. В результате вычислений в теле оператора if () переменная Dist_SL может получить
новое значение. Предположим, что обычно минимальная дистанция составляет 5 пунктов.

Открытие рыночных ордеров

При этом для управления торговыми позициями откроется окно “Ордер”. Открытие позиции или вход в рынок — это первичная покупка или продажа определенного объема торгуемого финансового инструмента. Открытие позиции происходит как при исполнении рыночного ордера, так и при автоматическом исполнении отложенного ордера. Мы использовали функцию BuyMarketCount(), чтобы получить количество открытых ордеров на покупку. Cохраним регистрацию BuyTicket, чтобы открывались только чередующиеся ордера на покупку / продажу.

Как изменять открытые и отложенные ордера в MQL4?

В нем для удаления ордера необходимо нажать одноименную кнопку. Также отложенные ордера могут удаляться автоматически при наступлении времени, указанного в поле “Истечение”. При удалении отложенного ордера в окне “Терминал — История счета” появляется соответствующая информация. Кнопка “Установить ордер” отправляет ордер на исполнение, которое происходит в два этапа. После выдачи ордера брокерская компания производит его установку. При этом во вкладке “Терминал — Торговля” появится строка с номером и состоянием отложенного ордера.

Перед тем как приступить к использованию торговых функций, необходимо
рассмотреть параметры, характеризующие рыночные цены, типы ордеров и их
характеристики, а также правила проведения торговых операций. Если запустить этот скрипт на исполнение, то в подавляющем большинстве случаев он
будет работать. Скрипт состоит из одной специальной функции, содержащей функцию
открытия ордера OrderSend() и оператор https://fxtrend.org/ return. Опишем порядок исполнения программных
строк и связанных с этим событий. Единственное – негативное – влияние
подобных тактик может состоять только в отвлечении средств в соответствии с правилами,
принятыми в некоторых дилинговых центрах. Кроме того, наличие нескольких встречных
ордеров представляет большую сложность с точки зрения программного управления торговлей, чем один ордер.

Если же возникла ошибка “нет цен” (ошибка 136),
то нет смысла сразу снова отправлять торговый приказ на сервер. В этом случае необходимо
дождаться нового тика (на сервере в этот период тоже нет цен) и только после этого
произвести ещё одну попытку открытия ордера. Поэтому в блоке обработки ошибки 136
имеется цикл задержки, который будет прерван в результате поступления нового тика. Выход из оператора switch() осуществляется с помощью оператора continue, который
прекращает текущую итерацию цикла while () и начинает новую. Если же попытка открыть ордер не увенчалась успехом, то управление передаётся в
блок 8-9 для анализа ошибок.

В первом операторе switch обрабатываются ошибки, которые по смыслу являются
преодолимыми, т.е, если можно считать, что при выполнении торговой операции возникли
временные затруднения. Для каждой из таких ошибок выполняются необходимые действия,
после чего текущая итерация прерывается, и исполнение цикла while начинается снова. При установке отложенного ордера цена открытия не может быть слишком близкой к рынку. заработок на форекс без вложений для начинающих трейдеров Минимальное расстояние отложенной цены от текущей рыночной цены в пунктах также можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае неправильной цены открытия отложенного ордера будет сгенерирована ошибка 130 (ERR_INVALID_STOPS). В результате рассматриваемых событий рыночный ордер Buy был открыт по цене на 25
пунктов хуже в сравнении с ценой отложенного ордера BuyStop.

Если также принять во внимание наличие комиссионных и свопов (для каждого из рыночных
ордеров), то необходимость закрывать встречные ордера становится очевидной. Мы будем использовать функцию OrderSelect(), а также операторы цикла, чтобы выполнить перебор ордеров и получить информацию о конкретном ордере. Этот метод будет использоваться для закрытия нескольких ордеров, добавления трейлинг-стопов, подсчета количества открытых ордеров и многого другого. Как вы знаете ECN/STP-брокеры, которые используют MetaTrader, не поддерживают установку стоп-лосса и тейк-профита при открытии сделки. В этом случае нам нужно будет разместить стоп-лосс и тейк-профит после размещения ордера с помощью функции OrderModify(). Это относится только к рыночным ордерам — для отложенных ордеров вы все равно можете разместить стоп-лосс и тейк-профит с помощью функции OrderSend().

Leave a Reply

Your email address will not be published. Required fields are marked *