удаление всех ордеров MQL4 и MetaTrader 4 Форум алго-трейдеров MQL4
Суть нашей системы будет в том, что после того, как индикатор обновит свой экстремум, мы будем выставлять отложенный ордер на предыдущем его значении. Давайте в этот раз попробуем для разнообразия стратегию торговли от ценовых уровней. Так как программно рисменеджмент калькулятор достойно реализовать уровни поддержи и сопротивления не является возможным, а использовать пивоты как-то не особо охота, мы будем торговать по экстремумам индикатора ZigZag. Не скажу, что это прибыльные решение, но для изучения языка пойдет.
Код ошибки, полученный при исполнении скрипта
confined.mq4 в окне Eur/Usd. Функция возвращает код последней ошибки, после чего значение специальной переменной
last_error, в которой хранится код последней ошибки, обнуляется. Для того чтобы предоставить в распоряжение пользователя (и, что не менее важно,
в распоряжение программы) информацию о событиях, связанных с исполнением торгового
приказа, необходимо выполнить обработку ошибок. Клиентский терминал произвёл проверку полученного торгового приказа, не обнаружил
некорректных параметров и отправил торговый приказ на сервер.
Алгоритм представленного эксперта
modifystoploss.mq4 очень прост. Основные вычисления выполняются в цикле перебора ордеров (блок 2-9). Выбор ордера ведётся среди рыночных и отложенных ордеров (параметр pool
в вызове функции OrderSelect() не указан явно). В блоке 2-3 отсортировываются отложенные ордера,
а также ордера, открытые по другому финансовому инструменту; для ордеров, прошедших
отбор, определяется значение StopLoss. Функция возвращает номер тикета (ticket – уникальный порядковый
номер ордера), который назначен ордеру торговым сервером или -1 в случае, если
торговый приказ был отклонён севером или клиентским терминалом.
Выставление отложенных ордеров
Так как Зиг Заг бывает очень «бешеным» во флете и количество его кривых может быть немалое, мы также введем в советник функцию удаления всех отложек перед закрытием рынка в Пятницу обучение инвестированию в 23 часа. Первая система будет называться StopOrder и торговать на пробой уровней ZigZag’a. Соответственно, когда уровни сформируются, у нас появятся ордера Buy Stop и Sell Stop.
- При этом скрипт всякий раз будет вычислять
заявленное значение цены, близкой к тому месту (тому уровню цены), где пользователь
прикрепил скрипт. - Стоимость 1 лота для различных финансовых инструментов, полученная
с помощью conditions.mq4. - Для указания программе ордера, назначенного к модификации
(в окне может находиться несколько отложенных ордеров), используем цену прикрепления
скрипта в окно финансового инструмента. - Нам осталось изучить последнюю тему третьего раздела данного курса — написание советника, осуществляющего торговлю отложенными ордерами.
Если же к этому моменту
ордеров какого-либо типа уже нет, то в блоке 5-6 осуществляется выход из программы. 64.3, в заголовке оператора if анализируется
факт наличия следующего ордера в списке ордеров на момент его выбора. Если следующий
ордер есть, то управление передаётся внутрь тела оператора if для обработки параметров
ордера. Нужно заметить, что такая конструкция тоже не спасает от возможного конфликта,
т.к.
Как всегда, мы получаем информацию о заказе, используя функцию OrderSelect(). Таким образом, мы можем передать стоп-лосс и зафиксировать цену. Перед изменением ордера мы проверяем, что наша новая цена отложенного ордера не совпадает с текущей ценой. Немаловажное платформа xcritical отзывы значение имеет правильная оценка программистом той или иной характеристики
ордера. Например, при решении задачи о порядке закрытия ордеров, необходимо задаться
какими-то критериями, чтобы вычислить, какой из ордеров необходимо закрыть раньше,
а какой после.
Язык MQL4 предоставляет возможность модификации рыночных и отложенных ордеров. Модификация
ордеров производится в соответствии с правилами, описанными в разделе Характеристики ордеров и Приложении 3. С другой стороны, как уверяют некоторые брокеры, лимитные отложки не скользят. Это значит, что торгуя отложенными Limit ордерами вы минимизируете риск проскальзывания в отличие от рыночных ордеров, где при сильной волатильности оно может составить десятки пунктов.
Закрытие рыночных ордеров
Bid – меньшая из цен в двухсторонней котировке по финансовому инструменту, предлагаемая
брокером. Далее мы определим ТП и СЛ в зависимости от типа ордера, ну и выставим цвет треугольничка для отображения на графике и строковое значение с текстом для журнала. Цель сего индикатора — строить линии по локальным максимумам и минимумам в зависимости от его настроек.
Удаляет все отложенные ордера
Конечно, если значение Something никогда не изменится, цикл будет выполняться бесконечно. Таким образом, необходимо, чтобы в какой-то момент цикла возникло условие изменить значение Something. Как только это условие выполнено, цикл прекращает свое выполнение.
Функция OrderSelect()
Если текущий ордер не требует модификации, то в конце блока 4-5 осуществляется
выход из цикла while, и модификация этого ордера (в блоке 5-6) не осуществляется. Если же ордер требует модификации, то управление передаётся в блок 5-6, в котором
вычисляются необходимые параметры и выполняется обращение к функции OrderModify(),
которая и формирует торговый приказ. Обычный рыночный ордер содержит два стоп-приказа – StopLoss и TakeProfit, – предписывающих
закрытие ордера по заявленным ценам с целью ограничения убытков и фиксации прибыли. Модификация рыночных ордеров бывает полезна для изменения заявленных цен стоп-приказов
либо в результате получения в программе новых расчётных значений, либо по инициативе
трейдера.
Модификация рыночных ордеров
Открытие торговой позиции произойдет после того, как брокерская компания совершит торговую операцию и установит Стоп Лосс и Тейк Профит. При этом во вкладке “Терминал — Торговля” появится строка состояния открытой позиции, а на графике (если включена опция “Показывать торговые уровни”) появятся уровни цены открытия и Стоп Лосс и Тейк Профит. Мы вычитаем цену открытия ордера из текущей цены Bid, чтобы рассчитать текущую прибыль в пунктах, далее сохраняем ее в PipsProfit. Рассчитываем минимальную прибыль в пунктах и сохраняем ее в MinProfit. Если PipsProfit больше или равен MinProfit, мы изменим стоп-лосс так, чтобы он равнялся цене открытия ордера.
Обратите внимание, заявленная цена отложенного ордера ограничена относительно рыночной
цены, а стоп-приказы – относительно заявленной цены отложенного ордера (см. Требования и ограничения торговых операций). Отложенный ордер может быть открыт (преобразован в рыночный) и по цене, не совпадающей
с заявленной ценой открытия отложенного ордера. Это может произойти при резком
изменении рыночной цены, т.е. Slippage – максимально допустимое отклонение заявленной цены открытия ордера от рыночной
цены для рыночных ордеров (пунктов). В случае установки отложенного ордера параметр
не обрабатывается. Далее управление в исполняемой программе будет передано оператору цикла while (блок
6-10).
На некоторых торговых серверах может быть установлен лимит на общее количество открытых и отложенных ордеров. При превышении этого лимита новый ордер открыт не будет (отложенный ордер не будет установлен), и торговый сервер вернет ошибку 148 (ERR_TRADE_TOO_MANY_ORDERS). При изменении рыночной ситуации может потребоваться удалить отложенный ордер. Для этого необходимо выполнить команду контекстного меню отложенного ордера “Модифицировать или удалить ордер” либо дважды щелкнуть левой кнопкой мыши на строке состояния отложенного ордера в окне “Терминал — Торговля”.


