Форум о заработке, инвестициях и криптовалюте - Показать сообщение отдельно - Помощь по реализации написания продуктов в коде MQL
Показать сообщение отдельно
Старый 11.10.2013, 14:58   #56
artamir
Новичок
 
Регистрация: 22.08.2013
Сообщений: 18
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Цитата:
Сообщение от osieris Посмотреть сообщение
не пойму как правильно заканчивать советник или индикатор, вот к примеру часть окончания:

if(i<Bars-1) ExtMapBuffer1[i]+=ExtMapBuffer1[i+1];

i--;

}

//----

return(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 будет содержать значение прибыли для последнего выбранного в цикле ордера.
artamir вне форума