![]() |
|
|
![]() |
#1 | |
Новичок
Регистрация: 22.08.2013
Сообщений: 18
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
![]() Цитата:
Выдержка из справки mql: "Составной оператор (блок) состоит из одного или большего числа операторов любого типа, заключенных в фигурные скобки { }. После закрывающейся фигурной скобки не должно быть точки с запятой (http://forum.forex-investo.ru/public...DIR#>/wink.png." Если в коде встречается закрывающая фигурная скобка "}", значит должна быть и открывающая. Например нужно подсчитать общую прибыль по всем рыночным ордерам, открытым по текущему инструменту. Для этого на потребуется: 1. Обнулить переменную, где будет храниться прибыль по всем ордерам. (double sum=0 ![]() 2. Открываем цикл по индексам от 0 до КоличествоОрдеров-1 с шагом 1. (for(int idx=0;idx<OrdersTotal();idx++)) { 2.1 Выбираем ордер по индексу. (OrderSelect(idx, SELECT_BY_POS, MODE_TRADES)http://forum.forex-investo.ru/public...DIR#>/wink.png 2.2 Проверить если ордер имеет тип OP_BUY или OP_SELL (if(OrderType()>=2) continue ![]() 2.3 Получить значение текущей прибыли для выбранного ордера. (double profit=OrderProfit()http://forum.forex-investo.ru/public...DIR#>/wink.png 2.4 Добавить полученное значение прибыли ордера к общему значению прибыли. (sum=sum+pofit ![]() } В данном примере фигурные скобки обозначают, что пункты 2.1-2.4 будут выполняться в теле цикла, т.е. для каждого ордера. В итоге после выполнения цикла переменная sum будет содержать общую прибыль по всем ордерам. Если скобки опустить, то компилятор не выдаст ни одной ошибки. Но результат выполнения будет следующим: В теле цикла будет содержаться только !ОДИН оператор (2.1). Все остальные операторы будут выполнены после окончания выполнения цикла. Следовательно переменная sum будет содержать значение прибыли для последнего выбранного в цикле ордера. |
|
![]() |