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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
creepystaisy97
35
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.}

Alekseu Fedotov
1479
Alekseu Fedotov  
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(........)
Alexey Viktorov
27989
Alexey Viktorov  

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

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

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

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