В последующих функциях мы рассмотрим торговые функции, с помощью которых можно открывать/закрывать позиции, размещать/модифицировать и удалять ордера:
Очень часто необходимо указать количество лотов открытой позиции или отложенного ордера. Самой простой вариант получить это значение - это выделить позицию или ордер с помощью функции OrderSelect(), а потом вызвать функцию OrderLots().
double OrderLots()
Функция возвращает количество лотов в выделенном ордере или позиции.
Как я уже сказал, основное применение функции - передать количество лотов в качестве параметра в функции OrderClose() и OrderModify().
Забегая вперед, расскажу о формате функции OrderClose():
bool OrderClose(int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Где:
Как Вы видите, в качестве второго параметра нам нужно передать в функцию количество лотов. Самый простой способ сделать это - получить количество лотов с помощью функции OrderLots():
// закрыть позицию с тикером 77777 по текущей цене
// предположим, что позиция уже выделена с помощью OrderSelect
// и мы точно знаем, что это открытая позиция
if (OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), Ask, 3);
else
OrderClose(OrderTicket(), OrderLots(), Bid, 3);
В этом примере нам встретились две предопределенные переменные типа double:
В следующих выпусках мы продолжим знакомство с торговыми функциями.
В прошлых выпусках я рассказал о следующих типах операций в выражении:
Зачастую в выражении можно встретить сразу несколько операций. Возникает вопрос - в какой последовательности эти операции будут выполняться. Это очень важный вопрос, ведь от этого зависит конечный результат, который мы в итоге получим.
Разобьем операции по группам в порядке уменьшения приоритетов.
Сначала выполняются все операции первой группы, потом все операции второй группы и т.д. до девятой группы операций. Если в выражении присутствует несколько операций, принадлежащих одной группе, то они выполняются слева направо. Единственное исключение - операции второй и девятой групп - они выполняются справа налево.
Бывают случаи, когда Вам нужно изменить порядок выполнения операций по умолчанию. В этом случае Вы должны использовать круглые скобки () - они имеют наивысший приоритет.
Пример выражения:
a = 5 + 6 * 3; // переменной a будет присвоено значение 23 a = ( 5 + 6 ) *3; // переменной a будет присвоено значение 33
В следующем выпуске мы продолжим анализ кода функции init() нашего первого эксперта и расскажу об условном операторе if-else.
В прошлых выпусках мы рассмотрели арифметические и побитовые операции. Помимо этого мы познакомились и с оператором присваивания.
В синтаксисе MetaQuotes Language 4 - языка написания советников - есть возможность объединить арифметические и побитовые операции с операцией присваивания.
Объединение арифметических и побитовых операций с операцией присваивания
Сложение j и k | ||
Вычитание второго аргумента (k) из первого (j) | ||
Умножение j и k | ||
Получить частное от деления j на k | ||
Получить остаток от деления j на k | ||
Сдвиг двоичного представления j на k бит вправо | ||
Сдвиг двоичного представления j на k бит влево | ||
Побитовая операция И двоичных представлений j и k | ||
Побитовая операция ИЛИ двоичных представлений j и k | ||
Побитовая операция исключающее ИЛИ двоичных представлений j и k |
В следующем выпуске вы узнаете о приоритетах операций и порядке их исполнения.
Есть что сказать? Не стесняйтесь!
Последние статьи:
Видео по теме:
УГОЛОК АДМИНИСТРАТОРА