- •Внешние переменные
- •Глобальные переменные
- •Формальные параметры функций
- •Операции отношения
- •Логическая операция и (&&)
- •Побитовые операции
- •Объединение арифметических и побитовых операций с операцией присваивания
- •Формат оператора цикла while:
- •Формат оператора цикла for:
- •Оператор досрочного завершения цикла break
- •Формат оператора switch:
- •Формат функции OrderSelect():
- •IsStopped(): как проверить, что эксперт был остановлен
- •Выдерживаем паузу между торговыми операциями
- •Index - индекс элемента
- •Реализация трейлинг стопа в эксперте
- •Функция iAlligator() - Аллигатор Билла Вильямса (Alligator)
- •IGator() - определение периодов сна и бодроствования Аллигатора с помощью Gator Oscillator
- •Функция iGator()
- •IFractals(): фракталы б.Вильямса - первое измерение рынка
- •IAo(): Волшебный Осциллятор Билла Вильямса (Awesome Oscillator - ao) - второе измерение рынка
- •Сигналы Волшебного осциллятора (Awesome Oscillator)
Оператор досрочного завершения цикла break
Как я уже сказал, оператор break используется для досрочного выхода из ближайшего вложенного внешнего оператора цикла while или for. Также оператор break используется для выхода из оператора switch (я расскажу о нем в следующих выпусках).
Пример использования этого оператора:
int i;
for ( i = 0; i<10; i++ )
{
...
if ( i == 5 ) break;
}
В нашем примере цикл исполнится не 10 раз, а только 6, т.к. в тот момент, когда переменная i будет равна 5, в операторе if-else условие i=5 станет истинным и будет выполнен оператор break, т.к. произойдет досрочный выход из цикла.
В следующем выпуске я расскажу об операторе досрочного завершения текущей итерации - об операторе continue.
Досрочное завершение очередной итерации цикла с помощью оператора continue
В прошлом выпуске я рассказал о том, как можно досрочно выйти из цикла с помощью оператора break. Однако иногда нам нужно не навсегда выйти из цикла, а просто завершить досрочно очередную его итерацию. Для этого используется оператор continue.
Оператор continue прерывает выполнение текущей итерации и передает управление на начало ближайшего внешнего оператора цикла for или while, запуская на исполнение следующую итерацию.
Пример использования оператора continue:
int i;
for ( i = 0; i < 10; i++)
{
...
continue;
Print ("Изучаем оператор continue"); // этот оператор никогда не будет выполнен
}
В следующем выпуске я расскажу об операторе-переключателе switch.
Оператор переключения switch
Ранее я рассказал об условном операторе if-else, с помощью которого можно изменить порядок выполнения операторов в эксперте. Достаточно часто возникают ситуации, когда нам надо заложить в эксперте не два, а больше варианта развития событий. Например, переменная i может принимать целочисленные значения от 1 до 5 и в зависимости от того, какое значение имеет эта переменная, возможны 5 различных последовательностей операторов. Такую задачу легко можно решить с использованием множества вложенных условных операторов if-else.
if (i == 1)
оператор1;
else
if (i == 2)
оператор2;
else
if (i == 3)
оператор3;
else
if (i == 4)
оператор4;
else
if (i == 5)
оператор5;
Такой код будет работать, но его очень тяжело читать и воспринимать. Для большей наглядности в таких случаях лучше использовать оператор переключения switch.
Формат оператора switch:
switch(выражение)
{
case константа1: операторы1
case константа2: операторы2
...
default: операторы_default
}
Принцип работы этого оператора: сначала вычисляется значение "выражения", потом среди констант "константа1", "константа2" и др. ищется константа, которая равна результату "выражения". Если такая константа найдена, то оправление передается на соответствующую группу операторов. После этого последовательно выполняются все операторы этой группы и всех последующих, пока не будет выполнен последний оператор в операторе switсh или не будет осуществлен досрочный выход из оператора switсh с помощью оператора break. Если же не было найдено подходящей константы, то управление передается на группу операторов "операторы_default".
Метка default и группа операторов "операторы_default" могут отсутствовать. В этом случае просто не будет выполняться никаких действий, если ни одна из констант не соответствует результату "выражения". Default не обязательно должен быть последним.
Каждый вариант case может быть помечен целой константой, символьной константой или константным выражением.
Теперь в качестве примере перепишем наш пример с переменной i и 5 вариантами действий с помощью оператора switch:
switch (i)
{
case 1: оператор1; break;
case 2: оператор2; break;
case 3: оператор3; break;
case 4: оператор4; break;
case 5: оператор5; break;
}
По-моему, выглядит гораздо более читаемо.
Я уверен, что Вам уже не терпиться научить Вашего эксперта торговать. Язык MetaQuotes Language 4 позволяет осуществлять ПОЛНЫЙ контроль над торговым счетом - открывать/закрывать позиции, размещать/модифицировать и удалять ордера, получать информацию об открытых позициях и уже закрытых сделках и многое-многое другое.
В следующем выпуске я хочу привести полный список торговых функций, которые можно вызывать в эксперте, а далее подробно остановлюсь на каждой функции.
Учим эксперта торговать
Я уверен, что Вам уже не терпиться научить Вашего эксперта торговать. Язык MetaQuotes Language 4 позволяет осуществлять ПОЛНЫЙ контроль над торговым счетом - открывать/закрывать позиции, размещать/модифицировать и удалять ордера, получать информацию об открытых позициях и уже закрытых сделках и многое-многое другое.
В этом выпуске я хочу привести полный список торговых функций, которые можно вызывать в эксперте, а в следующих выпусках подробно остановлюсь на каждой функции.
Функция |
Краткое описание |
HistoryTotal |
Количество закрытых позиций и удаленных ордеров |
OrderClose |
Закрывает позицию |
OrderCloseBy |
Закрывает позицию другой позицией (локированной) |
OrderClosePrice |
Цена закрытия выбранного функцией OrderSelect() ордера/позиции |
OrderCloseTime |
Дата и время закрытия выбранного функцией OrderSelect() ордера/позиции |
OrderComment |
Комментарий выбранного функцией OrderSelect() ордера/позиции |
OrderCommission |
Комиссия выбранного функцией OrderSelect() ордера/позиции |
OrderDelete |
Удаляет отложенный ордер |
OrderExpiration |
Дата истечения выбранного функцией OrderSelect() ордера/позиции |
OrderLots |
Количество лотов в выбранном функцией OrderSelect() ордере/позиции |
OrderMagicNumber |
"Магическое" число выбранного функцией OrderSelect() ордера/позиции |
OrderModify |
Изменяет уровень и дату эксперации отложенного ордера, уровни Stop Loss и Take Profit и "магическое" число открытой позиции или отложенного ордера |
OrderOpenPrice |
Цена открытия выбранного функцией OrderSelect() ордера/позиции |
OrderOpenTime |
Дата и время размещения/открытия выбранного функцией OrderSelect() ордера/позиции |
OrderPrint |
Выводит параметры ордера в журнал |
OrderProfit |
Прибыль/убыток выбранного функцией OrderSelect() ордера/позиции |
OrderSelect |
Выбрать ордер для получения информации по нему |
OrderSend |
Открытие позиции или установка отложенного ордера |
OrderStopLoss |
Stop Loss выбранного функцией OrderSelect() ордера/позиции |
OrdersTotal |
Количество открытых позиций и отложенных ордеров |
OrderSwap |
Величина сториджа выбранного функцией OrderSelect() ордера/позиции |
OrderSymbol |
Аббревиатура инструмента выбранного функцией OrderSelect() ордера/позиции |
OrderTakeProfit |
Take Profit выбранного функцией OrderSelect() ордера/позиции |
OrderTicket |
Тикет выбранного функцией OrderSelect() ордера/позиции |
OrderType |
Тип выбранного функцией OrderSelect() ордера/позиции |
В следующих выпусках я рассмотрю эти функции более подробно.
Выбор ордера или позиции с помощью OrderSelect()
В прошлом выпуске я привел полный перечень торговых функций, которые можно использовать в эксперте. Как Вы уже, наверное, успели заметить, подавляющее большинство этих функций позволяет получить какую-то информацию об ордере или позиции, которые были предварительно выбраны с помощью функции OrderSelect().
