Очень часто перед трейдером стоит задача перебрать все открытые позиции или отложенные ордера ичто-то сделать спозициями или ордерами, которые выставлены поинструменту, ккоторому прикреплен советник. Предположим, что нас интересуют только отложенные ордера.
Используя функцию OrderSymbol(), мыможем получить информация овыделенном спомощью функции OrderSelect() ордере или позиции.
string OrderSymbol()
Напишем кусочек кода, который просматривает все наши неудаленные отложенные ордера ипроизводит какие-то действия сордерами, которые выставлены поинструменту, ккоторому прикреплен советник.
int pos;
for (pos=0; pos=OP_BUYLIMIT)
{
// ордер оказался отложенным; проверим инструмент
if (OrderSymbol()==Symbol())
{
// делаем что-то с ордером
// ...
}
}
}
else
Print("Ошибка ", GetLastError(), " при выборе ордера номер ", pos);
В этом коде Вам могут быть непонятны два момента.
Во-первых, якак-то странно напервый взгляд провожу определение типа ордера: if(OrderType()>=OP_BUYLIMIT). Насамом деле условие OrderType()>=OP_BUYLIMIT будет истинно втех случаях, когда выбран ордер, иложно втех случаях, когда выбрана позиция. Дело втом, что константы, определяющие тип ордера, имеют следующие числовые значения:
| Константа | Значение | Описание |
| OP_BUY | 0 | Позиция напокупку |
OP_SELL | 1 | Продажа |
| OP_BUYLIMIT | 2 | Отложенный ордер BUY LIMIT |
| OP_SELLLIMIT | 3 | Отложенный ордер SELL LIMIT |
| OP_BUYSTOP | 4 | Отложенный ордер BUY STOP |
| OP_SELLSTOP | 5 | Отложенный ордер SELL STOP |
Как мывидим, вовсех случаях, когда выделен отложенный ордер, значение функции OrderType() будет больше или равно OP_BUYLIMIT (т.е. больше или равно 2).
Второй непонятный момент вкоде функция Symbol(). Эта функция возвращает текстовую строку сименем финансового инструмента, ккоторому прикреплен советник:
string Symbol()
Перейти к главе «
функция OrderComment».