Uncategorized

MQL4 MetaQuotes Language 4 язык разработки торговых стратегий

удаление отложенных ордеров mql4

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

Функция OrderDelete()

В данном случае мы не ставим перед собой цель предоставить враспоряжение пользователя готовую программу. Очень важно, чтобы программист сампроанализировал другие варианты ошибок и самостоятельно принял решение о том, какиеещё ошибки и как необходимо обработать в программе. В то же время, некоторые ошибкине должны обрабатываться, потому что сама программа построена таким образом, чтоне предполагает возможности для возникновения некоторых ошибок, биржевая торговля по трендам например, в данномслучае – для ошибок 129 и 130. Существуют и другие ограничения, связанные с определением значений параметров функцииоткрытия ордера OrderSend(). Это – максимальный и минимальный шаг изменения стоимостиордера, максимальный и минимальный размер стоимости ордера и пр. Использованиефункции MarketInfo() позволяет получить различную информацию по финансовым инструментам,которые отражены в окне “Обзор рынка” клиентского терминала.

Функция OrderTakeProfit()

Это на самом деле не очень наглядно, но лучше, чем ничего. Нам нужно добавить оператор #include для stdlib.mqh сверху нашего файла. Обратите внимание, что если вы получаете цену с помощью функции MarketInfo(), нет необходимости пивот это использовать RefreshRates(). Мы используем цикл while для оценки IsTradeContextBusy(). Если функция возвращает true, указывая, что поток исполнения сделки занят, советник будет остановлен в течение 10 миллисекунд.

0 Добавляем разные вариации Трайлинг Стопа в Советник

Чтобы найти фактическую цену, мы просто получаем значение цены Low [LowestShift] или, другими словами, Low [6]. Для проведения торговых операций в языке MQL5 представлены функции по работе с ордерами, сделками и позициями. Ордер – это запрос на совершение покупки или продажи, при исполнении которого совершается сделка, результатом сделки является открытие, изменение или закрытие позиции. На первый взгляд может показаться, что функция OrderSend() слишком сложна для понимания.В действительности, все рассматриваемые параметры достаточно просты, необходимыи полезно используются в торговле.

удаление отложенных ордеров mql4

Если код ошибки не обрабатывается в первом операторе switch, то эта ошибка считаетсянепреодолимой. В этом случае управление передаётся второму оператору switch, смыслисполнения которого сводится к информированию пользователя о возникновении тойили иной критической ошибки. В дальнейшем исполняется оператор break, прерывающийисполнение цикла while.

удаление отложенных ордеров mql4

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

Очень важное свойство клиентского терминала состоит в том, что в случае, если вовремя выполнения прикладной программы возникает ошибка, то клиентский терминалне прекращает исполнение программы. Обычно ошибки возникают по причине несовершенства используемогов прикладной программе алгоритма, а в некоторых случаях – в результате внешних(по отношению к программе) причин. К внутренним причинам относятся любые нарушениятребований языка MQL4 или правил торговли, например, использование неправильныхцен, а к внешним – причины, не связанные с прикладной программой, например, проблемысо связью. Чтобы рассчитать размер лота с помощью этого метода, нам нужно указать процент используемых средств и стоп-лосс в пунктах.

Значения стоп-лосс и тейк-профит должны быть рассчитаны относительно цены открытия отложенного ордера. Обратите внимание, заявленная цена отложенного ордера ограничена относительно рыночнойцены, а стоп-приказы – относительно заявленной цены отложенного ордера (см. Требования и ограничения торговых операций). Если для открытия ордера свободных средств хватает, то управление передаётся в блок4-5 и далее в блок 5-6. большая игра на понижение тайные пружины финансовой катастрофы Этим полагается,что для любой минимальной дистанции, установленной брокером, найдутся соответствующиезначения стоп-приказов. В блоке 1-2 намеренно указано значение 3 пункта для TP.Подавляющее число брокеров устанавливают минимальную дистанцию 5 пунктов. В блоке5-6 будет обнаружено, что заданное значение меньше допустимого, и установлено такоезначение цены стоп-приказа, которое не противоречит ограничению.

Мы создаем еще одну строку с нашими ценовыми и торговыми параметрами и сохраняем ее в переменной ErrLog, которую мы передаем в функцию Print(). Print() печатает содержимое аргумента функции в журнал экспертов. Журнал экспертов можно просмотреть на вкладке «Эксперты» в окне «Терминал» или на вкладке «Журнал» в окне «Тестер», если вы используете тестер стратегий. Мы просто сравниваем значение LotSize, наш расчетный или фиксированный размер лота с минимальным и максимальным размером лота. Если LotSize меньше минимального размера лота или превышает максимальный размер лота, ему будет назначено соответствующее минимальное или максимальное значение.

  1. Ордер может пропасть (быть закрытым) в процессе обработки его параметров.Однако такое решение оказывается наиболее эффективным в случае, если на момент выбора ордера его уже нет.
  2. Рекомендуется вызывать эту функцию каждый раз, когда вы используете переменные Bid или Ask, особенно после заключения сделки.
  3. Следующий код рассчитывает минимально допустимую цену для тейк-профита на покупку, стоп-лосс на продажу, стоп-ордер на покупку или лимитный ордер на продажу.
  4. Например,можно учитывать дистанцию между текущей ценой и заявленным значением StopLoss каждогоиз ордеров.

При наступлении этого срока отложенный ордербудет автоматически закрыт на торговом сервере. На некоторых торговых серверахможет быть установлен запрет на применение срока истечения отложенных ордеров.В этом случае при попытке задать ненулевое значение параметра торговый приказ будетотклонён. Takeprofit – заявленная цена закрытия, определяющая предельный уровень прибыльности.

Соответственно, когда уровни сформируются, у нас появятся ордера Buy Stop и Sell Stop. В MQL такой тип заявки именуется как OP_BUYSTOP и OP_SELLSTOP. На прошлых уроках мы научились создавать разнообразные советники по классическим и пользовательским индикаторам, торгующие рыночными ордерами. Нам осталось изучить последнюю тему третьего раздела данного курса — написание советника, осуществляющего торговлю отложенными ордерами. Opposite – Уникальный порядковый номер противоположного ордера.

Алгоритм блока обработки ордеров в целом сохранён (см. код closeby.mq4). В цикле перебораордеров for, а именно в блоке 3-4, так же, как и в предыдущих программах, производитсяотсев “не наших” ордеров, в данном случае – открытых по другому финансовомуинструменту, а также отложенных ордеров. В дальнейшем, в зависимости от кодаошибки, выполняется либо выход из программы либо повторное исполнение торговойоперации. В первом операторе switch обрабатываются ошибки, которые по смыслу являютсяпреодолимыми, т.е, если можно считать, что при выполнении торговой операции возникливременные затруднения. В блоке 7-8, в зависимости от типа ордера вычисляется цена закрытия – для ордеров Buyэто значение Bid, а для ордеров Sell – Ask (см. Требования и ограничения торговых операций). Функция возвращает значение заявленной цены закрытия позиции при достижении уровняприбыльности (take profit) для текущего выбранного ордера.

Функция изменяет параметры рыночных и отложенных ордеров. Функция возвращает TRUEпри успешном исполнении торговой операции и FALSE при неудачном. Мы используем OrderType(), чтобы проверить, является ли выбранный ордер на продажу рыночным или стоп-ордером. Если это рыночный ордер, мы закрываем его с помощью OrderClose().

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

Минимальный стоп-лосс в пунктах для рыночного ордера будет включать текущий спред, поэтому минимальный стоп-лосс будет больше минимального тейк-профита. Например, если уровень стопа составляет 3 пункта, спред составляет 2 пункта, а цена открытия ордера составляет 1,4500, стоп-лосс для ордера на покупку на рынке должен быть ниже 1,4495. Блок 6-10 представляет обработку ошибок, он полностью аналогичен рассмотренным ранее(в этом и предыдущем параграфах).

Leave a Reply