Скрипт закрытия ордеров

 

Добрый день,идея такая если из 2х ордеров (buystop, sellstop),открывается один из них,удаляется противоположный(например открывается buystop,удаляется sellstop.Я привела код ниже,но что-то он не очень эффективен(Не удаляет ордер).Помогите,пожалуйста советом.Спасибо


1.for (int i=OrdersTotal()-1; i>=0; i--)

2.  {

3.      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;

4.if (OrderType()==OP_BUY) OrderDelete(OrderType()==OP_SELLSTOP);

5.if (OrderType()==OP_SELL) OrderDelete(OrderType()==OP_BUYSTOP);

6.}

 
creepystaisy97:

Добрый день,идея такая если из 2х ордеров (buystop, sellstop),открывается один из них,удаляется противоположный(например открывается buystop,удаляется sellstop.Я привела код ниже,но что-то он не очень эффективен(Не удаляет ордер).Помогите,пожалуйста советом.Спасибо


1.for (int i=OrdersTotal()-1; i>=0; i--)

2.  {

3.      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;

4.if (OrderType()==OP_BUY) OrderDelete(OrderType()==OP_SELLSTOP);

5.if (OrderType()==OP_SELL) OrderDelete(OrderType()==OP_BUYSTOP);

6.}

Чтобы удалить, нужно его забрать с помощью OrderSelect(........)
 

Перед тем как что-то писать надо хоть одним глазком заглянуть в документацию.

OrderDelete - Торговые функции - Справочник MQL4
OrderDelete - Торговые функции - Справочник MQL4
  • docs.mql4.com
OrderDelete - Торговые функции - Справочник MQL4
 
Alekseu Fedotov:
Чтобы удалить, нужно его забрать с помощью OrderSelect(........)

 Вовсе нет. Достаточно знать тикет ордера. Ведь OrderDelete() использует именно тикет. Поэтому ответ будет таков: нужно в качестве аргумента функции OrderDelete() передать тикет ордера Sell Stop или Buy Stop. Для получения тикета есть два пути:

  1. Сразу после установки ордера запоминать его тикет.
  2. Воспользоваться перебором всех ордеров, чтобы найти нужный тикет.
В приведенном же коде в функцию OrderDelete() передается 0, а такого тикета точно не существует. Таким образом, автору кода нужно разобраться в том, что такое OrderType(), OrderSelect() и как работать с функциями OredrClose() и OrderDelete(). В этом может помочь чтение учебника по MQL4 или документации.
Причина обращения: