Announcement

Collapse
No announcement yet.

Структура программы

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Структура программы

    Ранее мы ознакомились с основными понятиями, на которых базируется язык программирования MQL4. Теперь необходимо рассмотреть, как устроена программа в целом. Изучая этот вопрос, мы рассмотрим её структурную схему.

    Как уже упоминалось, основной код программы, составленный программистом, располагается внутри пользовательских и специальных функций. В разделе Функции мы рассматривали понятие и свойства встроенных и пользовательских функций. Кратко напомним, что пользовательская функция имеет описание, а для запуска её на исполнение в программе используется вызов функции. Любая встроенная или пользовательская функция может быть исполнена только в результате обращения к ней; в этом случае говорят, что функция вызвана для исполнения программой.

    Свойства специальных функций подробно изложены в разделе Специальные функции, а здесь мы рассмотрим только общие сведения о них. Специальная функция - это такая функция, которая вызывается для исполнения клиентским терминалом. В отличие от обычных функций, специальные функции имеют только описание, а вызов специальных функций в программе не указывается. Специальные функции вызываются для исполнения клиентским терминалом (имеется техническая возможность вызова специальных функций и из программы, но мы будем считать такой способ некорректным и здесь рассматривать не будем). Когда программа запущена на исполнение в окне финансового инструмента, клиентский терминал передаёт управление одной из специальных функций, в результате чего эта функция исполняется.

    Правило программирования на языке MQL4 состоит в следующем:
    Код программы должен быть расположен внутри функций.
    Это значит, что программные строки (операторы и обращения к функциям), находящиеся за пределами функций, не могут быть исполнены. При попытке компиляции такой программы редактор MetaEditor выдаст соответствующее сообщение об ошибке, и исполняемый файл *.ех4 в результате компиляции получен не будет.


    Рассмотрим функциональную схему обычной прикладной программы-эксперта:


    Рис. 31. Функциональная схема программы (эксперта).


    Наиболее крупными функциональными блоками составленной на MQL4 программы являются:

    1. Головная часть программы.

    2. Специальная функция init().

    3. Специальная функция start().

    4. Специальная функция deinit().

    5. Пользовательские функции.

    В дальнейшем мы будем рассматривать только внутреннее содержание этих функциональных блоков (составных частей) программы, а все внешние объекты, будь то информационная среда клиентского терминала или оборудование, не будут входить в круг наших интересов. Информационная среда клиентского терминала МТ4

    Информационная среда клиентского терминала МТ4 не является составной частью программы. Информационная среда - это набор параметров, доступных для обработки программой. Например, это - пришедшая с новым тиком цена финансового инструмента, накапливающийся с каждым новым тиком объём, сведения о максимальных и минимальных ценах исторических баров, параметры, характеризующие предлагаемые дилинговым центром условия торговли и т.д. Информационная среда постоянно сохраняется и с каждым новым тиком обновляется клиентским терминалом, поддерживающим постоянную связь с сервером. Структура программы

    Головная часть

    Головная часть - это несколько строк программы, расположенных в её начале (буквально - в первой, второй строке и т.д.), содержащих некоторые записи. В этих строках размещается информация общего характера, касающаяся программы в целом. Например, в головной части располагаются строки объявления и инициализации глобальных переменных (необходимость расположения той или иной информации в головной части программы будет рассмотрена ниже). Признаком окончания головной части может служить встретившееся в следующей строке описание функции (пользовательской или специальной). Специальные функции

    Обычно после головной части следует описание специальных функций. Внешне описание специальной функции выглядят так же, как и описание обычной пользовательской функции, с той разницей, что специальные функции имеют предопределённые имена - init(), start() и deinit(). Специальные функции представляют собой собственно блок вычислений и находятся во взаимоотношениях с информационной средой клиентского терминала и пользовательскими функциями. Специальные функции подробно рассматриваются в разделе Специальные функции. Пользовательские функции

    Описания пользовательских функций обычно располагаются непосредственно после описания специальных функций. Количество пользовательских функций в программе не ограничено. На схеме представлены всего две пользовательские функции, в то время как в программе их может быть 10 или 500, или ни одной. Если в программе не применяются пользовательские функции, значит, программа будет иметь упрощённый вид: головную часть и описания специальных функций. Стандартные функции

    Ранее упоминалось, что стандартные функции могут быть представлены только в виде вызова функции. Вообще говоря, стандартная функция, как и специальные и пользовательские функции, имеет описание. Однако это описание не указывается в программе (поэтому и не показано на схеме). Описание стандартной функции скрыто от глаз программиста, его невозможно изменить, но оно доступно редактору MetaEditor. В период компиляции программы редактор MetaEditor сформирует такой исполняемый файл, в котором в полной мере правильно будут исполняться все вызываемые стандартные функции. Порядок расположения в программе

    Головная часть программы должна находиться в первых строках. Порядок расположения в программе описаний специальных и пользовательских функций не имеет значения. На рис. 32 представлена обычная последовательность функциональных блоков, а именно - головная часть, специальные функции, пользовательские функции. На рис. 33 представлены другие варианты структуры программы. Во всех примерах головная часть находится вверху, в то время как в отношении описаний функций допускается произвольный порядок.

Disclaimer: There is a risk of loss in trading futures, forex and options. Futures, forex and options trading are not appropriate for all investors. Only risk capital should be used when trading futures. All information is for educational use only and is not investment advice. Past performance is not indicative of future results.

This website is hosted and operated by AMP Global Clearing, LLC ("AMP"), which provides brokerage services to traders of futures and foreign exchange products. This website is intended for customer support, educational and informational purposes only and should NOT be viewed as a solicitation or recommendation of any product, service or trading strategy. No offer or solicitation to buy or sell derivative or futures products of any kind, or any type of trading or investment advice, recommendation or strategy, is made, given, or in any manner endorsed by AMP and the information made available on this Web site is NOT an offer or solicitation of any kind. The content and opinions expressed on this website are those of the authors and do not necessarily reflect the official policy or position of AMP.

All Users and Contributors along with their websites, products and services, are independent persons or companies that are in no manner affiliated with AMP. AMP is not responsible for, do not approve, recommend or endorse any User and/or Contributor Content referenced on this website and it’s your sole responsibility to evaluate All Content. Please be aware that any performance information provided by a user and/or contributor should be considered hypothetical.

HYPOTHETICAL PERFORMANCE RESULTS HAVE MANY INHERENT LIMITATIONS, SOME OF WHICH ARE DESCRIBED BELOW. NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO ACHIEVE PROFITS OR LOSSES SIMILAR TO THOSE SHOWN. IN FACT, THERE ARE FREQUENTLY SHARP DIFFERENCES BETWEEN HYPOTHETICAL PERFORMANCE RESULTS AND THE ACTUAL RESULTS SUBSEQUENTLY ACHIEVED BY ANY PARTICULAR TRADING PROGRAM.

ONE OF THE LIMITATIONS OF HYPOTHETICAL PERFORMANCE RESULTS IS THAT THEY ARE GENERALLY PREPARED WITH THE BENEFIT OF HINDSIGHT. IN ADDITION, HYPOTHETICAL TRADING DOES NOT INVOLVE FINANCIAL RISK, AND NO HYPOTHETICAL TRADING RECORD CAN COMPLETELY ACCOUNT FOR THE IMPACT OF FINANCIAL RISK IN ACTUAL TRADING. FOR EXAMPLE, THE ABILITY TO WITHSTAND LOSSES OR TO ADHERE TO A PARTICULAR TRADING PROGRAM IN SPITE OF TRADING LOSSES ARE MATERIAL POINTS WHICH CAN ALSO ADVERSELY AFFECT ACTUAL TRADING RESULTS. THERE ARE NUMEROUS OTHER FACTORS RELATED TO THE MARKETS IN GENERAL OR TO THE IMPLEMENTATION OF ANY SPECIFIC TRADING PROGRAM WHICH CANNOT BE FULLY ACCOUNTED FOR IN THE PREPARATION OF HYPOTHETICAL PERFORMANCE RESULTS AND ALL OF WHICH CAN ADVERSELY AFFECT ACTUAL TRADING RESULTS.

AMP has NOT endorsed or recommended the use any product, services offered by any 3rd party User or Contributor on this forum. No person employed by, or associated with, AMP is authorized to provide any information about any 3rd party User or Contributor content. All specific brokerage related questions should be directed towards AMP.

Copyright © 2017. All rights reserved.

Working...
X