Заработать на ФОРЕКС
Четверг, 25.05.2017, 23:01
Всё для прибыльной торговли на FOREX!
Главная | Добавить в избранное | Сделать стартовойфорекс советники
Меню сайта
Категории раздела
Торгуем прибыльно с Price Action и VSA [27]
Учимся прибыльно торговать с помощью методики Price Action и VSA
Форекс видео уроки [14]
Форекс видео уроки
Основы Финансового Рынка - Азбука Инвестора форекс видео [41]
Форекс видео уроки для трейдеров и инвесторов - Азбука Инвестора
Лучшие брокеры
заработок в интернете форекс бесплатно Виртуальный выделенный сервер для Форекс Виртуальный выделенный сервер для Форекс Виртуальный выделенный сервер для Форекс Виртуальный выделенный сервер для Форекс заработок в интернете заработок на форекс заработок в интернете заработок в интернете заработок в интернете заработок в интернете Виртуальный выделенный сервер для Форекс
Радио Forex
Друзья сайта
Поиск
Наш опрос
Рейтинг брокеров
Всего ответов: 1923
Термины ФОРЕКС
<a href="http://instaforex.com/ru/" rel="nofollow">Форекс портал</a>

Основы языка MQL4. Первое знакомство

Часть1

Введение

Эта серия статей рассчитана на трейдеров, которые ничего не знают о программировании, но хотят изучить язык MQL4 максимально быстро с минимальными усилиями и затратами времени. Если вы боитесь таких словосочетаний, как "объектная ориентация" или "трёхмерный массив", эта статья - то что вам нужно. Уроки рассчитаны на максимально быстрый результат. Кроме того, материал будет подаваться в доступной форме. Мы не будем сильно углубляться в теорию, зато практическую пользу вы получите уже на первом уроке.
 

Совет

Если вы действительно впервые сталкиваетесь с программированием, то в некоторых местах вам будет трудно уловить суть с первого раза. Медленно перечитывайте текст и обдумывайте каждое предложение. В конечном итоге вы все поймете, так как ничего сложного там в действительности нет. Не двигайтесь дальше, если полностью не поняли предыдущий материал. Изучайте примеры кода. Пишите свой код на основе того, что вы уже поняли.
 

Первое знакомство с MQL4

Для начала давайте разберемся, что вы можете делать с помощью этого языка. Он предназначен для создания скриптов, пользовательских индикаторов, советников и библиотек:

  • Скрипты - это последовательности команд, программы, которые выполняются только один раз по вашему запросу. Они могут заменять действия, которые вы выполняете каждый день при торговле. Например, открывать ордера. Они также могут выполнять специфические действия - например, исследовать графики и выводить статистическую информацию.
  • Пользовательские индикаторы - это технические индикаторы, написанные в дополнение к встроенным в терминал индикаторам. Они выводят графики или другую визуальную информацию. В отличие от скриптов, пользовательские индикаторы выполняются при каждом изменении цены, то есть на каждом тике. То, что будут выводить индикаторы, зависит только от вас. Это может быть бесполезный график синуса или что-то, что будет помогать вам ориентироваться в ситуации на рынке. Например, если вы точно знаете, при каких условиях на рынке тренд, а при каких флэт, то это наверняка можно написать в виде индикатора.
  • Советники - это механические торговые системы, которые привязаны к любому финансовому инструменту. Подобно пользовательским индикаторам, советники выполняются при каждом новом тике, но в отличие от первых могут информировать вас о состоянии рынка (например, давать конкретные советы о покупке или продаже) или торговать самостоятельно без вашего участия. Терминал поддерживает тестирование стратегий, что позволяет быстро оценить прибыльность вашего советника. Вы описываете свою стратегию на языке MQL4, а терминал хладнокровно выполняет все ваши указания.
  • Библиотеки - это наборы функций для выполнения специфических задач. Например, один из ваших советников может использовать специальные математические функции для принятия решения о том, когда выполнять покупку, а когда - продажу.

В этой статье мы научимся писать обычные скрипты. Для этого используется специальная программа - редактор MetaEditor 4. Чтобы её запустить, нажмите на клавишу F4 при открытом клиентском терминале. Чтобы создать новый скрипт, нажмите в редакторе MetaEditor 4 на кнопки меню File->New или исопльзуйте сочетание клавиш Ctrl+N на клавиатуре:

После этого появится окно, в котором вам следует указать, что вы собираетесь создать. Выбираем Script и жмём на кнопку Далее:

В следующем окне следует ввести название скрипта в поле Name. Укажите свое имя в поле Author и e-mail или адрес вашего веб-узла в поле Link. Далее нажимаем на кнопку Готово:

После этого откроется новое окно, с которым вы в дальнейшем будете работать больше всего. В нём отображается исходный текст:

Обратите внимание, что даже пустой, ничего не делающий скрипт включает в себя какой-то код. Теперь всё готово для начала программирования. Но, к сожалению, вы не имеете представления, как это делается. Давайте попробуем исправить ситуацию.
 

Исходный текст, компиляция и прочее

Вы должны понять важную вещь. То, что будет написано в MetaEditor'e, - это исходный код. То есть последовательность команд, которую будет выполнять терминал одну за другой сверху вниз. Но терминал не может выполнять исходные коды. Исходный код понятен вам, но не MetaTrader'у. Чтобы исходный код был понятен терминалу, его нужно "перевести" на соответствующий "язык". Чтобы это сделать, нужно нажать на клавишу F5 в MetaEditor'е. После этого будет выполнена компиляция исходного кода в исполняемый файл. Компиляция - это процесс "перевода" исходного кода, написанного вами и понятного вам, в специальный исполняемый файл, который понимает и способен выполнить MetaTrader. Проверьте это сами. Создайте новый скрипт под названием Test1 и сохраните, но не компилируйте. Запустите терминал и, используя Навигатор, зайдите в раздел "Скрипты". Как видно, скрипта с названием Test1 нет:

Теперь скомпилируйте скрипт (клавиша F5):

Опять загляните в терминал. Скрипт Test1 появился:

Двойной клик на названии скрипта в Навигаторе терминала - и он запускается. Но ничего не происходит, так как скрипт пуст.

Вы уже должны представлять, на что похож процесс написания скрипта: вы пишете исходный код, компилируете, запускаете скрипт в терминале, смотрите на результат, изменяете исходный код, компилируете, смотрите ... и так - до тех пор, пока не получите нужный результат.
 

Где писать скрипты?

Вы уже заметили, что пустой скрипт содержит в себе определённый код. Но в каком месте вам следует вписывать исходный код, чтобы он работал? Его нужно вписывать между строками int start(){ и return(0);}, как показано на рисунке:

Всё, что я дальше буду вам предлагать писать, размещайте в этом месте - и всё будет работать. Позже мы рассмотрим более детально, что означают все эти строки.
 

Переменные

Что такое переменная? Попробуйте сами ответить на этот вопрос, а я вам помогу. Сколько вам лет? Сколько вам будет лет через пять лет? Теперь смотрите: возраст - это и есть переменная. Возраст изменяется с течением времени, как и любая другая переменная. То есть первая особенность переменной заключается в её изменении с течением времени. Другой пример: какой был ваш рост в пять лет? Очевидно, намного меньше, чем сейчас. Рост - ещё один пример переменной. Но есть важное отличие. Обратите внимание на то, что возраст мы измеряли, используя целые числа. Рост намного удобнее измерять, используя десятичные дроби ("числа с плавающей точкой"). Возраст: 20 лет, 30 лет. Рост: 1,8 метра, 1,95 метра. Это очень важная особенность: каждая переменная относится к определённому типу. Давайте посмотрим, какие еще бывают типы переменных. Вы можете описать числами многие параметры, но как представить текст? Для этого используются специальные типы - строковые. Эти типы переменных хранят только строки. Теперь давайте посмотрим, как можно создать и описать переменную на языке MQL4. Пример:

int age = 25;

Здесь мы объявили переменную целого типа (int - integer - целое число). int - это ключевое слово языка MQL4, которое указывает, что мы используем тип целых чисел. Дальше мы написали age (возраст) - это название переменной, то есть слово, по которому мы будем обращаться к значению, хранящемуся в этой переменной. Затем мы присвоили переменной значение 25, используя символ "=". После каждой инструкции ставится точка с запятой, что мы и сделали. Обратите внимание - объявление и инициализация любой переменной сводятся к такой форме:

[тип переменной] [название переменной] = [значение переменной];

Кстати, присваивать какое-то значение переменной (совершать инициализацию) необязательно, вы могли бы написать и так:

int age;

Еще один пример:

double height = 1.95;

Здесь мы объявляем переменную с названием height (рост), которая хранит значения типа double (число с плавающей запятой, десятичная дробь) и которой мы сразу присваиваем значение 1.95, используя оператор "=".

Теперь рассмотрим строковую переменную:

string name = "Janet";

string - тип переменной, name - название переменной, "Janet" - значение переменной. Обратите внимание, что значения для переменной типа string размещаются между двойными кавычками (").

Существует еще один очень полезный тип переменной - bool. Переменные этого типа могут принимать только два значения: либо true (правда), либо false (ложь). Пример:

bool trend = false;

Теперь вам нужно запомнить несколько важных вещей. Язык MQL4 - это регистрозависимый язык, то есть имеет большое значение, ПРОПИСНЫМИ буквами вы пишете код или строчными. Например, если вы объявите несколько переменных с одинаковыми названиями, но разным регистром, то это будут совершенно разные переменные:

double HIGHTPRICE; 
double hightprice; 
double HightPrice; 
double hightPrice;

Вышеприведённый код создаст четыре совершенно разных переменных. Также обратите внимание на то, что все ключевые слова языка MQL4 пишутся строчными буквами.

Следующий пример:

DOUBLE hightPrice1; Double hightPrice2;

Вышеприведённый код работать не будет, потому что слово double не будет воспринято как ключевое слово языка MQL4. Ещё один важный момент заключается в том, что названия переменных не могут начинаться с цифр или специальных знаков (*,&, ,%,$). Например:

double 1price; 
double %price;

Ещё один элемент языка - комментарии. Если вы напишете "//" перед строкой, то она целиком закомментируется. Это значит, что при компиляции она будет игнорироваться. Например:

// this is a comment 
// это комментарий

Теперь вы должны заметить, что код пустого скрипта включает в себя много комментариев, которые несут информативный характер. Комментируйте свой код, иногда это может сэкономить вам много времени.
 

Работа с переменными

Теперь давайте разберёмся, что можно делать с переменными после того, как мы их объявили. Рассмотрим простой пример:

double a = 50.0;// объявляем переменную с плавающей запятой и
 // присваиваем ей значение 50 
double b = 2.0; 
double c; 
 
c = a + b; // присваиваем переменной c сумму переменных
 // a и b. Теперь значение с равно 52. Как и
 // после любой другой инструкции, ставим точку
 // с запятой (";") 
 
c = a - b; // вычитание, с = 48 
c = a*b; // умножение, с = 100 
c = a / b; // деление, c = 25 
c = (a + b)*a; // в скобках нужно размещать операции, которые
 // должны выполняться в первую очередь. Так, в
 // нашем случае сначала будет найдена сумма a и 
 // b, а потом эта сумма умножена на а и присвоена с
 
// если есть несколько операций в кавычках, то они
c = (a + b) / (a - b); 
 // будут выполняться слева направо 
 
// в соответствиями с правилами математики, сначала будет 
// найдено 
c = a + b*3.0; 
 // произведение b и 3, а уже потом сумма

Если нужно выполнить какую-то операцию с переменной и присвоить ей же результат, например, увеличить на 5, то поступают одним из следующих способов:

int a = 5;
a = a + 5; // увеличиваем a на 5 
a += 5; // аналогично 
a = a*5;
a *= 5; // умножаем а на 5 и присваиваем ей же
a /= 5; // делим и присваиваем

Если хотите увеличить или уменьшить переменную на 1, используйте такой метод:

int a = 5;
a++; // увеличиваем а на 1, это называется инкремент
а--; // уменьшаем а на 1, это декремент

Это всё очень хорошо, но вы при выполнении подобных скриптов можете только догадываться, правильно всё работает или нет, так как на экране ничего не происходит.
Поэтому удобно выводить результаты. Для этого существует встроенная функция MessageBox().
 

MessageBox()

Функция - это какой-то набор инструкций, который принимает параметры и в зависимости от них выводит результат. В нашем случае функция MessageBox() принимает два параметра: первый - текст сообщения, второй - текст заголовка. Вот пример использования функции:

MessageBox("Hello, World! There is some text.","caption");

Чтобы вызвать функцию, сначала пишут её название. Не забывайте про регистр! Потом открываются скобки, и в них через запятую пишутся параметры. В нашем случае параметры имеют строковый тип. Как мы помним, все строки пишутся между двойными кавычками ("). Как в любой инструкции, в конце ставим точку с запятой. Чтобы окончательно разобраться, посмотрите на рисунок. Он показывает, как связаны код и результат:
 


Да, это всё, конечно, хорошо. Но как можно вывести переменные других типов? Очень просто - мотайте на ус:

int a = 50; 
int b = 100; 
MessageBox("It is very simple. a+b=" + (a + b), "a+b=?"); 

В результате получим:
 


Как вы уже догадались, MQL4 устроен таким образом, что когда мы пытаемся добавить к строке какой-то другой числовой тип, то он автоматически переводит числа в строки и объединяет их. Это действительно замечательное свойство! Подобные операции вы можете делать и с переменными-строками:
 

int a = 50; 
int b = 100; 
string str1 = "a + b ="; 
str1 += a + b; // теперь str1 = "a + b = 150" 
// теперь используем переменную str1 в качестве 
// 
первого параметра
MessageBox(str1, "a + b = ?");

Теперь вы знаете, как можно выводить различные данные с помощью функции MessageBox(). Но какой интерес выводить результаты элементарных математических операций? Нам ведь MQL4 нужен не для того, чтобы находить суммы и произведения, не так ли?

 



Наш выбор брокеров
forex4you roboforex форекс бесплатно заработать на форекс instaforex nordfx

Копирование
VPS для Форекс
vps сервер для форекс
Заработать на ФОРЕКС
памм инвестирование
Форекс обзор
<a href="http://instaforex.com/ru/" rel="nofollow">Форекс портал</a>
Наша кнопка
Установите нашу кнопку себе на сайт

Форекс советники

Торговые сессии
Котировки Sell/Buy
vps для форекс
Журнал
FOREX MAGAZINE
Форекс рассылки
FxMail.ru
Рекомендуемые Форекс рассылки
Форма входа
Статистика
vps для форекс сервер для форекс
Онлайн всего: 2
Гостей: 2
Пользователей: 0
Календарь
«  Май 2017  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
293031
Торговля на финансовых рынках сопряжена с риском. Все материалы носят исключительно ознакомительный характер. Администрация сайта не несет ответственности за принимаемые Вами решения.
Copyright Profit © 2010 - 2017

Облако тегов: форекс для начинающих форекс для начинающих видео форекс для новичков форекс для тебя форекс для чайников форекс анализ технический анализ форекс прогноз форекс аналитика рейтинг форекс брокеров форекс видео брокеры форекс лучшие брокеры форекс надежный брокер форекс форекс брокеры отзывы самый лучший форекс брокер MQL4 Волновой форекс анализ и прогноз mql4 com Форекс аналитика от Trading Central трейдер VSA форекс вебинар бесплатные советники форекс советники форекс бесплатно vps для форекс форекс сервер советники форекс ПАММ памм счета стратегии форекс торговые стратегии форекс зaрaботaть нa форекс волновой анализ форекс волновой анализ рынка форекс волновой анализ волновой анализ рынка волновой анализ эллиотта волновой анализ элиота аналитика рынка форекс аналитика форекс аналитика форекс на каждый день форекс аналитика прогнозы trading central аналитика аналитика форекс на сегодня trading central заработок на форекс форекс советники vps лучшие советники форекс форекс советники бесплатно Форекс советник аналитика форекс прогноз ежедневная форекс аналитика форекс новости аналитика советники форекс 2014 прибыльные советники форекс советники форекс скачать скачать советник форекс советники форекс 2015 советники форекс 2016 аналитика форекс евро форекс аналити лучшая аналитика форекс аналитика форекс евро доллар trading central отзывы прогнозы от trading central технический анализ форекс анализ рынка форекс фундаментальный анализ форекс Анализ Форекс нелинейный волновой анализ упрощенн волновой анализ эл волновой анализ eur usd теория волн технический анализ рынка прогноз доллара форекс прогноз рынка форекс прогноз форекс прогноз курса форекс форекс прогноз евро доллар аналитика форекс прогнозы прогноз форекс на сегодня прогноз евро форекс аналитика рынка аналитика евро форекс аналитика форекс евро дол прогноз аналитика форекс графический анализ форекс свечной анализ на форекс Фундаментальный анализ форекс на сегодня прогноз рынка форек фундаменталь прогноз форекс 2016 форекс прогноз евро технический анали технический анализ для начинающих технический анализ трейдеров