Заработать на ФОРЕКС
Суббота, 18.11.2017, 07:21
Всё для прибыльной торговли на FOREX!
Главная | Добавить в избранное | Сделать стартовойфорекс советники
Меню сайта
Категории раздела
Уроки по MQL4 [14]
Лучшие брокеры
заработок в интернете форекс бесплатно Виртуальный выделенный сервер для Форекс Виртуальный выделенный сервер для Форекс Виртуальный выделенный сервер для Форекс Виртуальный выделенный сервер для Форекс заработок в интернете заработок на форекс заработок в интернете заработок в интернете заработок в интернете заработок в интернете Виртуальный выделенный сервер для Форекс
Радио Forex
Друзья сайта
Поиск
Наш опрос
Рейтинг брокеров
Всего ответов: 1945
Термины ФОРЕКС
<a href="http://instaforex.com/ru/" rel="nofollow">Форекс портал</a>
Главная » Статьи » Уроки по MQL4 » Уроки по MQL4


MQL4 УРОК 11 – Ваш первый индикатор (часть 2)

MQL4 УРОК 11 – Ваш первый индикаторMQL4 УРОК 11 – Ваш первый индикатор (часть 2)

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

Начнём кодить!

Я выделил жирным код, который нужно добавить.

Цитата

//+——————————————————————+

//| MyFirstIndicator.mq4 |

//| Kirill |

//| StockProgrammer@mail.ru |

//+——————————————————————+

#property copyright "Kirill”

#property link "StockProgrammer@mail.ru”

#property indicator_separate_window

#property indicator_buffers

#property indicator_color1 Red

//—- buffers

double ExtMapBuffer1[];

//+——————————————————————+

//| Custom indicator initialization function |

//+——————————————————————+

int init() {

//—- indicators

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

string short_name = "Your first indicator is running!”;

IndicatorShortName(short_name);

//—-

return(0);

}

//+——————————————————————+ //|

Custom indicator deinitialization function |

//+——————————————————————+

int deinit()

{

//—-

//—-

return(0);

}

//+——————————————————————+ //|

Custom indicator iteration function |

//+——————————————————————+

int start()

{

int counted_bars=IndicatorCounted();

//—- check for possible errors

if (counted_bars<0) return(-1);

//—- last counted bar will be recounted

if (counted_bars>0) counted_bars–;

int pos=Bars-counted_bars;

double dHigh , dLow , dResult;

Comment("Hi! I’m here on the main chart window!”);

//—- main calculation loop

while(pos>=0)

{ dHigh = High[pos];

dLow = Low[pos];

dResult = dHigh – dLow;

ExtMapBuffer1[pos]= dResult ;

pos–;

}

//—-

return(0);

}

//+——————————————————————+

Как он будет работать?

Код:

Разбор:

Комментарии Первые пять строчек (выделены серым цветом у Вас в редакторе) – это комментарии. Напомню, что комментарии мы используем для того, чтобы вставлять в код строчки, которые компилятор должен игнорировать. Есть много причин, по которым могут потребоваться комментарии: - Сделать код более красивым. - Задокументировать такие моменты, как право собственности, дату создания и т.д. - Сделать код понятнее. - Объяснить, как код работает. - …

Комментарии бывают однострочные и многострочные (см. урок 2 – Синтаксис).

В нашей программе помощник собрал введённую нами информацию о названии программы, её авторе и ссылке в самом верху.

Код:

Разбор:

Директива property . (см. урок 9)

#property copyright – здесь хранится имя автора программы. Вы ввели его на втором шаге помощника. Тип данных – string.

#property link – ссылка на Вашу домашнюю страницу или Ваш e-mail. Эти данные Вы также ввели на втором шаге помощника. Тип данных – string.

#property indicator_separate_window – таким образом мы говорим препроцессору, что мы хотим, чтобы наш индикатор рисовался в отдельном окне. Тип данных – void (нет принимаемого значения). * #property indicator_chart_window – альтернатива – индикатор рисуется в окне графика. Обе опции использовать одновременно нельзя.

#property indicator_buffers 1 – с помощью indicator_buffers мы устанавливаем количество массивов, выделяемых под линии нашего индикатора. В каждом индикаторе разрешается не больше 8 линий. В нашем случае мы рисуем только одну линию.

#property indicator_color1 Red – indicator_colorN устанавливает цвет линии номер N. Пользователь может изменить этот цвет в настройках индикатора. Тип данных – color.

Код:

Разбор:

Массивы (Arrays)

В жизни мы часто группируем похожие объекты. В программировании тоже очень удобно группировать данные одного типа. Для достижения этой цели используются массивы. Массив – это упорядоченное множество элементов одного типа. Нумерация в массиве начинается с нуля. Объявление массива:

Здесь мы объявили массив, в котором может содержатся до 50 (включительно) элементов типа integer. Доступ к элементу происходит по его индексу. Например, доступ к 0-вому элементу массива и присваивания ему значения 16 выглядит так:

Массив можно инициализировать в строчке его объявления. Делается это так:

В нашей программе используется такой код:

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

Код:

Разбор:

В MQL4 есть три спец. функции: init(), start(), deinit(). Подробнее – см. урок 7 – Функции.

Код:

Разбор:

Функции пользовательских индикаторов.

Я не могу дать Вам описания всех функций индикаторов в этом уроке, но те, которые мы использовали, мы обсудим.

SetIndexStyle():

void SetIndexStyle( int index, int type, int style=EMPTY, int width=EMPTY, color clr=CLR_NONE) 

- Устанавливает новый тип, стиль, ширину и цвет для указанной линии индикатора.

index – Порядковый номер линии. Должен быть от 0 до 7. Это потому что у нас может быть всего 8 линий, а нумерация в массиве, где они хранятся начинается с нуля.

type – Стиль отрисовки линии индикатора. Может быть одним из перечисленных стилей отрисовки линии: DRAW_LINE – Простая линия DRAW_SECTION – Отрезки между непустыми значениями линии DRAW_HISTOGRAM – Гистограмма DRAW_ARROW – Стрелки (символы) DRAW_ZIGZAG – Отрезки между непустыми значениями чётной и нечётной линий (зигзаг) DRAW_NONE – Отсутствие какого-либо рисования

style – Стиль линии. Используется для линий толщиной в 1 пиксель. Может быть одним из перечисленных стилей линии. Пустое значение (EMPTY) указывает, что стиль не будет изменен. DRAW_LINE – Простая линия DRAW_SECTION – Отрезки между непустыми значениями линии DRAW_HISTOGRAM – Гистограмма DRAW_ARROW – Стрелки (символы) DRAW_ZIGZAG – Отрезки между непустыми значениями чётной и нечётной линий (зигзаг) DRAW_NONE – Отсутствие какого-либо рисования

width – Ширина линии. Допустимые значения – 1,2,3,4,5. Пустое значение (EMPTY) указывает, что ширина не будет изменена.

clr – Цвет линии. Отсутствие параметра означает, что цвет не будет изменен.

В нашем коде:

index = 0 – это означает, что мы будем работать с первой (и единственной) нашей линией. type = DRAW_LINE – это означает, что мы хотим рисовать линию. Остальные параметры мы оставили по умолчанию.

SetIndexBuffer()

bool SetIndexBuffer(int index, double array[]) 

- Связывает переменную-массив, объявленный на глобальном уровне, с предопределенным буфером пользовательского индикатора. Количество буферов, необходимых для расчета индикатора, задается с помощью функции IndicatorBuffers() и не может быть больше 8. В случае успешного связывания возвращается TRUE, иначе FALSE. Чтобы получить расширенные сведения об ошибке, следует вызвать функцию GetLastError(). 

Как мы уже замечали ранее, рассчитанные данные для отрисовки на график в нашей программе будут храниться в массиве ExtMapBuffer1[]. Его мы и связываем с нашей единственной линией, имеющей индекс 0.

IndicatorShortName();

void IndicatorShortName(string name) 

- Установка "короткого” имени пользовательского индикатора для отображения в подокне индикатора и в окне DataWindow. 

Мы в нашей программе завели переменную short_name типа string, которой присвоили значение "Your first indicator is running!”. Затем мы передали эту переменную в функцию IndicatorShortName(); .

Код:

Разбор:

Функция init() возвращает 0 и завершает свою работу. Управление переходит функции start().

Код:

Разбор:

Ничего нового про функцию deinit() сказать не могу.

Мы продолжим разбирать код в следующем уроке.

Категория: Уроки по MQL4 | Добавил: Profit (24.10.2013)
Просмотров: 2549 | Теги: MQL4, mql4 индикаторы, mql4 скачать, mql4 com, mql4 учебник, mql4 программирование, mql4 для чайников, mql4 советник, mql4 функции, язык mql4 | Рейтинг: 5.0/1

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш выбор брокеров
forex4you roboforex форекс бесплатно заработать на форекс instaforex nordfx

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

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

Торговые сессии
Котировки Sell/Buy
vps для форекс
Журнал
FOREX MAGAZINE
Форекс рассылки
FxMail.ru
Рекомендуемые Форекс рассылки
Форма входа
Статистика
vps для форекс сервер для форекс
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Торговля на финансовых рынках сопряжена с риском. Все материалы носят исключительно ознакомительный характер. Администрация сайта не несет ответственности за принимаемые Вами решения.
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 форекс прогноз евро технический анали технический анализ для начинающих технический анализ трейдеров прогноз форекс 2017 евро доллар прогноз форекс