Если произошла ошибка, возвращаемое значение будет ложным. События, произошедшие при исполнении скрипта closeby.mq4. Сообщения, полученные при исполнении скрипта closeby.mq4. Результат встречного закрытия ордеров с помощью функции OrderCloseBy(). Результат отдельного закрытия ордеров с помощью функции OrderClose(). Сообщения, полученные в результате успешного исполнения скрипта closeorder.mq4.

Для открытия рыночных ордеров используются функции OrderSend( ), а для закрытия- функция OrderClose( ). Обратить внимание следует лишь на тот факт, что проверка достаточности средств (необходимыхдля преобразования отложенного ордера в рыночный) для отложенных ордеров не производитсяни клиентским терминалом, ни сервером и никак не ограничена. Возможно выставитьотложенный ордер, многократно превышающий по стоимости имеющиеся на счёте средства.Такой ордер может находиться в торговле неопределённо долгое время. В момент, когдарыночная цена достигнет уровня заявленной в отложенном ордере цены открытия, насервере будет произведена проверка. Если в этот момент средств на счёте достаточнодля открытия, то ордер будет преобразован в рыночный (открыт), если же нет – тоон будет удалён. Slippage – максимально допустимое отклонение заявленной цены открытия ордера от рыночнойцены для рыночных ордеров (пунктов).

  1. Мы получаем цену открытия для ордера, используя OrderOpenPrice(), и назначаем ее переменной OpenPrice.
  2. Основная функция, используемая для совершения торговых операций или установки отложенного ордера.
  3. Единственное, что можно сделать с рыночнымордером, – это закрыть его.

Например, для отложенных ордеров вы можете изменить цену открытия. Для рыночных ордеров вы можете изменить стоп-лосс или тейк-профит. Для изменения ордеров в MQL4 есть функция OrderModify(). Указанные вычисления реализованы в (условно) бесконечном цикле while в блоках 2-10.В начале этого цикла на каждой итерации делается предположение, что ордеров какого-либотипа уже не осталось. Для этого переменным Hedg_Buy и Hedg_Sell присваивается значение-1. Алгоритм блока обработки ордеров в целом сохранён (см. код closeby.mq4).

Советник для удаления отложенных ордеров

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

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

Функция OrderModify()

Нулевое значение MODE_STOPLEVEL означает либо отсутствие  ограничения на минимальную дистанцию для стоп-лосса/тейк-профита, либо факт использования торговым сервером внешних механизмов динамического контроля уровней, которые не могут быть транслированы в терминал. Во втором случае GetLastError() может возвращать ошибку 130, так как уровень MODE_STOPLEVEL фактически является “плавающим”. Основная функция, используемая для совершения торговых операций или установки отложенного ордера. В некоторых дилинговых центрах при соблюдении того же общего порядка стоимостныепоказатели для некоторых финансовых инструментов могут отличаться.

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

Ошибки непреодолимой силы обрабатываются иначе. Если такая ошибка возникла, то программапросто сообщит о ней пользователю и прекратит работу. Для этой цели в программеиспользуется оператор break (последний в блоке 8-9), прекращающий цикл while (),в результате чего программа заканчивает работу.

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

Ордер – это запрос на совершение покупки или продажи, при исполнении которого совершается сделка, результатом сделки является открытие, изменение или закрытие позиции. Рассмотрим пример скрипта, который позволит нам устанавливать стоп-лосс и тейк-профит для всех открытых ордеров. Когда вы запускаете скрипт на графике, вы можете установить некоторые параметры, чтобы ограничить, какие ордера будут изменены. При изменении ордеров мы должны быть уверены, что значения, которые мы передаем функции, действительны. Например, ордер по-прежнему должен быть открытым — мы не можем изменить закрытый ордер. При изменении отложенных ордеров с помощью параметра Price, ордер не должен быть уже исполнен.

Раноили поздно клиентский терминал вернёт управление в программу, будет исполнен операторприсваивания в блоке 6-7, в результате чего переменная ticket получит какое-тозначение, и управление будет передано далее – в блок анализа ошибок скам ликс 7-8-9. Код ошибки, полученный при исполнении скрипта confined.mq4 в окне Eur/Usd. Клиентский терминал произвёл проверку полученного торгового приказа, не обнаружилнекорректных параметров и отправил торговый приказ на сервер.

Deja un comentario

Tu dirección de correo electrónico no será publicada.