![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я уже это читала. Там же ничего нет о предупреждениях. Ошибок нет, только предупреждение. А так как сама функция написаная FAQ наверняка правильная, то у меня и возникает вопрос - где искать концы?
И все-таки я не до конца понимаю эту строку
for(int i=0; i<=OrdersTotal(); i++)
Может кто-нибудь ее объяснить, как для тех кто в танке? :))
"Описание функции - именованная, обособленная часть программы, предназначенная для исполнения.
Вызов функции (обращение к функции) - это запись, исполнение которой приводит к исполнению функции."
это вы с кем сейчас говорили? :)))
(Ну не понимаю я, хоть убей)
Описание функции состоит из двух основных частей - заголовка функции и тела функции.
Заголовок функции содержит указание типа возвращаемого значения, название функции и список формальных параметров, обрамлённый круглыми скобками. Если функция не должна возвращать никакого значения, то её тип обозначают void.
Это наш случай, правильно? И ....?
Почему-то предупреждает:
Function "ClosePending" is not referenced and will be removed from exp-file
Функция "ClosePending" не определена (нет ссылки) и будет удалена из exp-file
Почему так?
Аааа, то есть Void - это не вызов?
Там написано:
Оператор вызова функции - Название_функции (Список_параметров );
Убираю Void - ничего не происходит.
Ну я совсем запуталась. SOOOOS
Относительно функций - все достаточно просто. Функция, это собственно и есть сама программа при запуске (вызове) которой, исполняется код который написан (описаны действия) внутри ее.
1) штудируем Функции
2) Вам надо понять как работает MQL программа, для этого штудируем описание ее работы : Выполнение программ
3) Вам надо понять, что стандартные функции init(); deini(); start(); это такие же функции как и остальные, просто терминал знает только о них, и вызывает их в вот этой последовательности Специальные функции
код внутри функции (программы), выполняется последовательно сверху вниз, и слева на право. Вы можете написать все необходимые инструкции внутри стандартных функций (линейное программирование), и тогда интерпретатор терминала будет их исполнять, или записать их внутри собственных (пользовательских) функций, и потом вызывать их в теле самой программы(стандартной функции), при этом когда интерпретатор встретит строку с именем вашей функции, он будет искать ее в описательной части (за пределами стандартных функций), и исполнять ее код (инструкции(подобно тому, как если бы вы читали книгу, и встретили бы сноску)) Вызов функции, после чего станет исполнять дальнейший (в стандартной функции) код.
И все-таки я не до конца понимаю эту строку
for(int i=0; i<=OrdersTotal(); i++)
Может кто-нибудь ее объяснить, как для тех кто в танке? :))
Перевожу, просто читаем :
для (переменная целого типа имя:= i. от i=0 (нуля), до количества ордеров i<(включительно)= OrdersTotal()<= стандартная функция, которая возвращает количество открытых сейчас ордеров. i++;<= увеличиваем значение переменной на 1 (простой инкремент) на каждой итерации (пока не достигнем максимального значения) OrdersTotal()
Относительно функций - все достаточно просто. Функция, это собственно и есть сама программа при запуске (вызове) которой, исполняется код который написан (описаны действия) внутри ее.
1) штудируем Функции
2) Вам надо понять как работает MQL программа, для этого штудируем описание ее работы : Выполнение программ
3) Вам надо понять, что стандартные функции init(); deini(); start(); это такие же функции как и остальные, просто терминал знает только о них, и вызывает их в вот этой последовательности Специальные функции
код внутри функции (программы), выполняется последовательно сверху вниз, и слева на право. Вы можете написать все необходимые инструкции внутри стандартных функций (линейное программирование), и тогда интерпретатор терминала будет их исполнять, или записать их внутри собственных (пользовательских) функций, и потом вызывать их в теле самой программы(стандартной функции), при этом когда интерпретатор встретит строку с именем вашей функции, он будет искать ее в описательной части (за пределами стандартных функций), и исполнять ее код (инструкции(подобно тому, как если бы вы читали книгу, и встретили бы сноску)) Вызов функции, после чего станет исполнять дальнейший (в стандартной функции) код.
Спасибо, сейчас попробую поразбираться в этом.
Вразумите пожалуйста меня ещё.
Я так поняла, что есть функции которые возвращают значение:
И есть функции, которые не возвращают:
Уважаемый FAQ, скажите пожалуйста, почему в функции void которую вы мне написали есть return;? Ведь Void не должна возвращать значения?
И если значение должно возвращаться, то что именно? return (OrderDelete);? или что-то еще?
И ещё вы написали:
"Вы можете написать все необходимые инструкции внутри стандартных функций (линейное программирование), и тогда интерпретатор терминала будет их исполнять, или записать их внутри собственных (пользовательских) функций, и потом вызывать их в теле самой программы(стандартной функции), при этом когда интерпретатор встретит строку с именем вашей функции, он будет искать ее в описательной части (за пределами стандартных функций), и исполнять ее код"
Значит ли это, что:
Нужно каким-то образом поместить в тело
А затем вне этого поместить: