Скачать MetaTrader 5

Нюансы OrderSelect()

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не можешь разобраться в коде? Возможно, на эту тему уже написана статья!
Igor Knyazkov
1174
Igor Knyazkov 2016.07.10 07:52 
Здравствуйте. Скажите, пожалуйста, как я могу при помощи OrderSelect() производить поиск ТОЛЬКО в отложенных ордерах, но не в открытых?
Alexey Viktorov
6741
Alexey Viktorov 2016.07.10 09:16  

Чтобы узнать тип ордера его надо сначала выбрать из всего списка ордеров. А работать только с отложками можно так

for(i = 0; i < OrdersTotal(); i++)
 {
  if(OrderSelect(i, SELECT_BY_POS) && OrderType() > OP_SELL)// также отобрать по символу и магику && OrderSymbol() == _Symbol && OrderMagicNumber() == Magic)
   {
    //Делаем с ордером что надо...
   }
 }
Vitalie Postolache
12115
Vitalie Postolache 2016.07.10 11:26  
AlexeyVik:

Чтобы узнать тип ордера его надо сначала выбрать из всего списка ордеров. А работать только с отложками можно так


Надо ещё исключить операции со счётом, их только для статистики считают обычно:

if(OrderSelect(i, SELECT_BY_POS) && (OrderType() > 1  && OrderType() < 6)  && OrderSymbol() == _Symbol && OrderMagicNumber() == Magic)

Igor Knyazkov
1174
Igor Knyazkov 2016.07.10 13:03  
AlexeyVik:

Чтобы узнать тип ордера его надо сначала выбрать из всего списка ордеров. А работать только с отложками можно так


Спасибо!
Igor Knyazkov
1174
Igor Knyazkov 2016.07.10 13:03  
evillive:

Надо ещё исключить операции со счётом, их только для статистики считают обычно:

if(OrderSelect(i, SELECT_BY_POS) && (OrderType() > 1  && OrderType() < 6)  && OrderSymbol() == _Symbol && OrderMagicNumber() == Magic)

Спасибо!
Alexey Viktorov
6741
Alexey Viktorov 2016.07.10 13:34  
evillive:

Надо ещё исключить операции со счётом, их только для статистики считают обычно:

if(OrderSelect(i, SELECT_BY_POS) && (OrderType() > 1  && OrderType() < 6)  && OrderSymbol() == _Symbol && OrderMagicNumber() == Magic)

А разве типы > 5 не только в истории встречаются?
Vitalie Postolache
12115
Vitalie Postolache 2016.07.10 16:13  
AlexeyVik:
А разве типы > 5 не только в истории встречаются?
Может в момент операции они тоже на какие-то секунды в реале, а может и нет, но написать пару символов ничего не стоит )))
Alexey Viktorov
6741
Alexey Viktorov 2016.07.11 05:43  
evillive:
Может в момент операции они тоже на какие-то секунды в реале, а может и нет, но написать пару символов ничего не стоит )))
Никак попасть они в МТ не могут. Эти операции проводятся на сервере и оттуда попадают сразу в историю. Так-что не стоит дуть на воду, тем-более на молоке не обжигаясь.
Ihor Herasko
9033
Ihor Herasko 2016.07.11 17:27  
AlexeyVik:
Никак попасть они в МТ не могут. Эти операции проводятся на сервере и оттуда попадают сразу в историю. Так-что не стоит дуть на воду, тем-более на молоке не обжигаясь.

Значения именованных констант также могут быть изменены. Поэтому условия типа:

OrderType() > OP_SELL

 и 

OrderType() > 1 && OrderType() < 6

Относятся к плохому стилю кодирования, т. к. дискретитируют саму идею именованных констант. Вот потребуется разработчикам в очередном билде изменить значения OP_BUY и OP_SELL на другие, и к чему приведет такой программный подход? Он в итоге даст сбой на ровном месте. Именованными константами нужно пользоваться так, как это задумано в их сути:

OrderType() == OP_SELLSTOP || OrderType() == OP_BUYSTOP || OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT
Vasyl Nosal
18537
Vasyl Nosal 2016.07.14 14:34  
Scriptong:

Значения именованных констант также могут быть изменены. Поэтому условия типа:

 и 

Относятся к плохому стилю кодирования, т. к. дискретитируют саму идею именованных констант. Вот потребуется разработчикам в очередном билде изменить значения OP_BUY и OP_SELL на другие, и к чему приведет такой программный подход? Он в итоге даст сбой на ровном месте. Именованными константами нужно пользоваться так, как это задумано в их сути:

And your code is excessive.

int type=OrderType(); 

(type==OP_SELLSTOP || type==OP_BUYSTOP || type==OP_BUYLIMIT || type==OP_SELLLIMIT) 
Ihor Herasko
9033
Ihor Herasko 2016.07.15 08:35  
eevviill:

And your code is excessive.

В чем избыточность?
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий