mql4 moving average код

Разбор советника Moving Average для Metatrader 4

mql4 moving average код. download. mql4 moving average код фото. mql4 moving average код-download. картинка mql4 moving average код. картинка download. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Язык MQL4 — это кастрированный вариант языка Си, убиты структуры, указатели, крайне бедные дефайны, есть отличия в массивах, вызове функций и т.д. Тем не менее, программист на Си/С++ освоит этот обглодыш за пару дней. В принципе, серьезных роботов на нем не напишешь, но вполне можно сделать простенькую рабочую лошадку для зарабатывания бабла :)) Сегодня запишу видео, как работает мой скальпер на MQL4, сделал специально для своих студентов, чтобы не выли, что все в жизни так сложно.

А сейчас, если кому интересно поучится программированию и есть пол-часа времени, посмотрите первую часть разбора советника. Для начинающих программеров будет полезно, ибо я достаточно подробно все объясняю, рассчитано на совсем неопытных комрадов. Вторая часть будет сегодня попозже.

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

Если не воспроизводится видео, поставьте Adobe FlashPlayer
Ссылка на часть 1

Источник

mql4 moving average код. 4B5DE8B4 9045. mql4 moving average код фото. mql4 moving average код-4B5DE8B4 9045. картинка mql4 moving average код. картинка 4B5DE8B4 9045. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.

Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.

Скользящие Средние (Moving Averages, MA) показывают среднее значение цены инструмента за некоторый период времени. При расчете Moving Average производится математическое усреднение цены инструмента за данный период. По мере изменения цены ее среднее значение либо растет, либо падает.

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

Единственное, чем Moving Average разных типов существенно отличаются друг от друга, — это разные весовые коэффициенты, которые присваиваются последним данным. В случае Простого Скользящего Среднего (Simple Moving Average) все цены рассматриваемого периода имеют равный вес. Экспоненциальные и взвешенные скользящие средние (Exponential Moving Average и Linear Weighted Moving Average) делают более весомыми последние цены.

Самый распространенный метод интерпретации скользящего среднего цены состоит в сопоставлении его динамики с динамикой самой цены. Когда цена инструмента поднимается выше значения Moving Average, возникает сигнал к покупке, а когда она опускается ниже линии индикатора — сигнал к продаже.

Скользящие Средние могут применяться также и к индикаторам. При этом интерпретация скользящих средних индикаторов аналогична интерпретации ценовых скользящих средних: если индикатор поднимается выше своего Moving Average — значит восходящее движение индикатора продолжится: если индикатор опускается ниже Moving Average, это означает продолжение его нисходящего движения.

Варианты скользящих средних:

Simple Moving Average (SMA) — простое скользящее среднее

Exponential Moving Average (EMA) — экспоненциальное скользящее среднее

Smoothed Moving Average (SMMA) — сглаженное скользящее среднее

Linear Weighted Moving Average (LWMA) — линейно-взвешенное скользящее среднее

Расчет

SMA = SUM (CLOSE (i), N) / N

SUM — сумма;
CLOSE (i) — цена закрытия текущего периода;
N — число периодов расчета.

Первое значение этой сглаженной рассчитывается, как и простая скользящая средняя (SMA).

SUM1 = SUM (CLOSE (i), N)

Второе и последующие скользящие средние рассчитываются по следующей формуле:

LWMA = SUM (CLOSE (i) * i, N) / SUM (i, N)

Где:
SUM — сумма;
CLOSE(i) — текущая цена закрытия;
SUM (i, N) — сумма весовых коэффициентов;
N — период сглаживания.

Описание технического индикатора

Полное описание Moving Average доступно в разделе Технический анализ: Moving Average

Источник

Программирование: ценовая константа технического индикатора Moving Average Previous Indicator`s Data

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

столкнулся с небольшой проблемой: в учебнике по программированию MQL4 написаны все ценовые константы технического индикатора Moving Average (iMA), кроме Previous Indicator`s Data, которая есть в стандартном наборе к индикатору в МТ4. Это решаемо или надо заказывать?

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

осталось получить консультацию, как это сделать.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Предположим, я хочу построить вторую такую же МАшку (от первой МА), но не Simple, а Exponential.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

для новичка нет никакой засады.

а ArraySetAsSeries() вызывается, чтоб «нулевой» бар стал справа, а не слева в результирующем массиве.

чтоб вы обращались к его элементам как вы это делаете в индикаторах.

ищите примеры использования в кодебазе

это лучший вариант для новичка разобраться.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. avatar na2. mql4 moving average код фото. mql4 moving average код-avatar na2. картинка mql4 moving average код. картинка avatar na2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

для новичка нет никакой засады.

а ArraySetAsSeries() вызывается, чтоб «нулевой» бар стал справа, а не слева в результирующем массиве.

чтоб вы обращались к его элементам как вы это делаете в индикаторах.

ищите примеры использования в кодебазе

это лучший вариант для новичка разобраться.

Мне очень лестно, что Вы думаете обо мне так высоко. Сделал следующий шаг новичка, нашел в учебнике https://book.mql4.com/ru/samples/indicators

Но мне-то надо указать построение «индикатора от индикатора».

Источник

Язык MQL4 для «чайников». Пользовательские индикаторы (часть 1)

mql4 moving average код. 2126 1296636146. mql4 moving average код фото. mql4 moving average код-2126 1296636146. картинка mql4 moving average код. картинка 2126 1296636146. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. 2126 1296636146. mql4 moving average код фото. mql4 moving average код-2126 1296636146. картинка mql4 moving average код. картинка 2126 1296636146. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Введение

Это четвертая статья из цикла «Язык MQL4 для ‘чайников'». Сегодня мы будем учиться писать пользовательские индикаторы. Мы изучим классификацию свойств индикаторов, посмотрим, как эти свойства влияют на сам индикатор, узнаем про новые функции и оптимизацию, и наконец-то напишем несколько своих индикаторов. Кроме того, в конце статьи вас ждут советы по стилю программирования. Если это первая статья «для чайников», которую вы читаете, то, пожалуйста, прочитайте предыдущие статьи, чтобы у вас не возникало никаких вопросов. Кроме того убедитесь, что вы хорошо разобрались в старом материале, так как в этой статье я не буду объяснять основы.

Какие бывают индикаторы?

Сейчас я покажу вам какие бывают индикаторы. Конечно, вы и сами видели их достаточно, но сейчас я хочу обратить ваше внимание на свойства и параметры индикаторов, чтобы сделать таким образом небольшую классификацию свойств и параметров. Это поможет вам в дальнейшем писать пользовательские индикаторы. Итак, первый простенький индикатор:

mql4 moving average код. screen001. mql4 moving average код фото. mql4 moving average код-screen001. картинка mql4 moving average код. картинка screen001. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Это Скользящее Среднее (Moving Average, MA), часто используемый технический индикатор. Обратите внимание на следующие важные вещи:

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

mql4 moving average код. screen002. mql4 moving average код фото. mql4 moving average код-screen002. картинка mql4 moving average код. картинка screen002. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Это Процентный Диапазон Вильямса (Williams’ Percent Range, %R). Обратите внимание, что:

Таким образом, существуют следующие свойства индикаторов:

mql4 moving average код. screen003. mql4 moving average код фото. mql4 moving average код-screen003. картинка mql4 moving average код. картинка screen003. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. screen004. mql4 moving average код фото. mql4 moving average код-screen004. картинка mql4 moving average код. картинка screen004. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Теперь давайте посмотрим на еще один индикатор:

mql4 moving average код. screen005 1. mql4 moving average код фото. mql4 moving average код-screen005 1. картинка mql4 moving average код. картинка screen005 1. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Как видите, индикатор Объемов (Volumes) рисуется в виде гистограммы. Таким образом, существуют еще несколько видов вывода показателей индикатора. Вот пример другого типа вывода:

mql4 moving average код. screen006. mql4 moving average код фото. mql4 moving average код-screen006. картинка mql4 moving average код. картинка screen006. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

индикатор Фракталов (Fractals) рисуется в виде определенных символов. А теперь внимательно посмотрите на следующий индикатор:

mql4 moving average код. screen007 1. mql4 moving average код фото. mql4 moving average код-screen007 1. картинка mql4 moving average код. картинка screen007 1. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Это индикатор Аллигатор (Alligator). Обратите внимание, что индикатор одновременно рисует 3 показателя (линии баланса). Как это работает?? Дело в том, что любой (есть и исключения, но о них в другой раз) индикатор при выводите использует буферы данных.

Теперь давайте подведем итог нашей небольшой экскурсии. Любой индикатор имеет такие свойства:

Убедитесь, что вы хорошо разобрались и понимаете все эти свойства. Сейчас мы воспользуемся Мастером, чтобы создать пользовательский индикатор.

Создание пользовательского индикатора

Запускаем Meta Editor, выбираем Файл->Создать:

mql4 moving average код. step 01. mql4 moving average код фото. mql4 moving average код-step 01. картинка mql4 moving average код. картинка step 01. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Появляется окно Мастера создания советника, выбираем Пользовательский индикатор, нажимаем Далее:

mql4 moving average код. step 02. mql4 moving average код фото. mql4 moving average код-step 02. картинка mql4 moving average код. картинка step 02. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Заполняем поля Имя, Автор и Ссылка. Тут все как обычно, но теперь вы можете добавлять параметры. Что же это такое??

Сейчас (для наглядного примера) мы добавим параметр, который будет указывать, сколько баров должно обрабатываться для расчета показателя нашего индикатора. Где это может быть использовано?? Представьте, например, что ваш индикатор серьезно нагружает процессор, так как проводит много сложных вычислений. При этом вы часто меняете таймфрейм графика и просматриваете лишь 100-200 последних баров. Зачем в таком случае проводить лишние вычисления и ждать несколько лишних секунд?? Вот тут нас и выручит этот параметр. Конечно, в нашем индикаторе не будет ничего сложного и затратного для ресурсов компьютера. Это просто один из вариантов использования параметров индикатора.

Итак, чтобы добавить параметр нужно нажать на кнопку Добавить (1). После этого вы можете изменить название переменной на что-нибудь более подходящее (2). В нашем случае меняем название на barsToProcess (баров для обработки). Также вы можете изменить начальное значение (3), то есть значение по умолчанию. Меняем на 100. Кроме того, вы можете изменить тип переменной, но в нашем случае ничего менять не нужно, так как тип int идеально подходит для наших целей. После внесения всех необходимых изменений нажимаем Далее:

mql4 moving average код. step 03. mql4 moving average код фото. mql4 moving average код-step 03. картинка mql4 moving average код. картинка step 03. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. step 04. mql4 moving average код фото. mql4 moving average код-step 04. картинка mql4 moving average код. картинка step 04. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Вуаля!! Ваш первый индикатор готов! Ну и что, что он ничего не рисует, зато сколько кода. Файл с исходным кодом будет размещен в папке с индикаторами: MetaTrader4\experts\indicators.

Разбираем каждую строчку

А теперь давайте посмотри, что для нас создал Meta Editor:

Как всегда, «шапка» из однострочных комментариев включает введенные ранее вами данные. Очень мило, смотрим дальше:

Эта директива указывает, как можно связаться с автором. Вы можете спросить: где же эти данные (имя автора, как связаться), они ведь нигде не отображаются? Да, не отображаются, но они «прошиваются» в исполняемый файл. Если просмотреть исполняемый файл как обычный текст, то вы сможете увидеть эти данные:

mql4 moving average код. screen008. mql4 moving average код фото. mql4 moving average код-screen008. картинка mql4 moving average код. картинка screen008. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Эта директива указывает, что индикатор должен рисоваться в отдельном подокне. Как видите, никаких дополнительных параметров не указывается, как, например, в предыдущей директиве.

Эта директива указывает, сколько буферов данных будет использовать индикатор. Как вы заметили, директивы чем-то похожи на обычные функции: Они тоже принимают какие-то параметры и что-то делают в ответ. Но есть важное отличие: директивы выполняются в первую очередь (еще до начала компиляции).

mql4 moving average код. screen009. mql4 moving average код фото. mql4 moving average код-screen009. картинка mql4 moving average код. картинка screen009. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Это обычный массив. Просто не указывается размерность и не выполняется инициализация. Этот массив в дальнейшем будет настроен как буфер данных.

Дальше у нас идет объявление и описание функций. В отличие от привычного для вас скрипта, в каждом индикаторе имеется 3, а не 1 функция:

Посмотрим, что происходит в каждой функции:

Здесь у нас вызываются 2 важные функции для настройки буфера данных:

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

Функция деинициализации по умолчанию пуста.

Вот мы и добрались до самой главной функции. Весь основной код размещается здесь. Обратите внимание, что заранее объявлена переменная counted_bars (посчитанные бары), которая инициализируется функцией IndicatorCounted(). Эта переменная обычно используется для оптимизации и ускорения работы индикатора, о чем мы поговорим позже. А сейчас давайте наконец-то что-то нарисуем в окне индикатора!

Дописываем индикатор

Определимся что выводить. Что вообще нам будет показывать индикатор? Что-нибудь простое. Для начала давайте рисовать случайные числа. А что?? Этот индикатор гарантирует вам 50% прибыльных сигналов. Решено.

Идем к нашей функции init() и дописываем код для инициализации генератора случайных чисел:

Инициализация готова, переходим к функции start():

mql4 moving average код. screen 1. mql4 moving average код фото. mql4 moving average код-screen 1. картинка mql4 moving average код. картинка screen 1. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Индикатор будет добавлен к активному графику:

mql4 moving average код. screen010. mql4 moving average код фото. mql4 moving average код-screen010. картинка mql4 moving average код. картинка screen010. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Как видите, все работает, теперь давайте хорошенько разберемся, что делает этот код:

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

Каждую итерацию счетчик увеличивается на единицу, и мы двигаемся от последнего до первого доступного бара и одновременно присваиваем каждому элементу буфера (который соответствует своему бару) случайное число от 0 до 1000. Если вам сложно понять, как каждому элементу буфера соответствует свой бар, то попробуйте изменить цикл следующим образом и посмотрите на результат в терминале:

Теперь индикатор будет показывать номер каждого бара, посмотрите:

mql4 moving average код. screen011. mql4 moving average код фото. mql4 moving average код-screen011. картинка mql4 moving average код. картинка screen011. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Как видите, номер бара постепенно увеличивается от последнего к первому (от 0 до Bars). Надеюсь теперь вы поняли, каким образом элементы буфера данных соответствуют барам на графике.

Разбираем каждую строку:

Объявляем переменную counted_bars, которая будет хранить количество посчитанных индикатором баров. На самом деле функция IndicatorCounted() возвращает количество неизмененных баров после прошлого вызова функции start(). Таким образом, если это первый вызов функции start(), то IndicatorBars() возвратит нам 0, так как все бары для нас новые. Если же, это не первый вызов, то очевидно, что изменился только последний бар, поэтому IndicatorBars() возвратит число равное Bars-1.

Еще одна переменная, которая будет использована как ограничитель, то есть позволит циклу завершиться раньше, пропуская уже пересчитанные свечи.

Как уже было сказано, если IndicatorCounted() возвращает 0, то это значит, что функция start() вызывается впервые и все бары для нас «новые» (еще не рассчитывался индикатор для них). Но если это не первый вызов start(), то нам будет возвращено значение равное Bars-1. Так вот, это условие отслеживает как раз такую ситуацию. После чего мы уменьшаем переменную counted_bars на 1. Зачем это делается, ведь измениться может лишь последний бар?? Оказывается, что бывают ситуации, при которых последний тик предыдущего бара оказывается необработанным из-за того, что в момент прихода этого последнего тика обрабатывался предпоследний тик. Поэтому пользовательский индикатор не был вызван и не был рассчитан. Именно поэтому мы уменьшаем на 1 переменную counted_bars, чтобы исключить эту ситуацию.

Здесь мы присваиваем переменной limit (ограничителю) количество последних баров, которые нужно пересчитать. Так как в переменной counted_bars хранится количество свечей, которые уже рассчитаны, то мы просто находим разницу между Bars (всего доступных баров) и counted_bars, чтобы определить, сколько свечей необходимо пересчитать.

Сам цикл почти не изменился. Мы всего лишь поменяли условие выполнения. Теперь цикл будет выполняться пока счетчик i меньше чем ограничитель limit.

Теперь оптимизация завершена. Если вы понаблюдаете за обновленной версией индикатора, то заметите, что при приходе нового тика изменяется показатели лишь для последних баров. Приучите себя всегда использовать такую оптимизацию, даже если ваш индикатор не вычисляет ничего сложного. Это просто хороший тон.

Вы еще не забыли про параметр индикатора (barsToProcess), который мы добавили в мастере. Сейчас самое время чтобы его задействовать. Нужно добавить всего пару строк перед циклом:

Как видите, все достаточно тривиально. Мы проверяем или больше limit чем barsToProcess и если да, то уменьшаем ограничитель через присваивание. В результате, если установить barsToProcess=100, то вы сможете наблюдать похожую картину:

mql4 moving average код. screen012. mql4 moving average код фото. mql4 moving average код-screen012. картинка mql4 moving average код. картинка screen012. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Как видите, рассчитывается только определенное нами количество баров.

Наш индикатор практически готов. Но у нас нет четких сигналов для входа в рынок. Поэтому нужно добавить определенности. Для этой цели нам подойдут уровни.

Разберемся в новых директивах:

Эта директива указывает, что уровень номер 1 следует разместить на отметке 800.0. Обратите внимание, что нумерация буферов начинается с единицы, подобно тому, как это сделано в директивах для настройки буферов. Чтобы настроить другой уровень, следует просто поменять номер уровня в конце директивы:

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

Эта директива устанавливает цвет, который будет использоваться для рисования всех уровней.

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

Эта директива задает стиль для рисования линии. Доступны такие предопределенные константы:

mql4 moving average код. screen 2. mql4 moving average код фото. mql4 moving average код-screen 2. картинка mql4 moving average код. картинка screen 2. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

mql4 moving average код. screen015 1. mql4 moving average код фото. mql4 moving average код-screen015 1. картинка mql4 moving average код. картинка screen015 1. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Функция iCustom

Прототип функции имеет следующий вид:

Сигнальный индикатор

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

Мы будем писать сигнальный индикатор на основе прошлого индикатора RandomIndicator. Сначала нужно точно определить условия для входа в рынок. Уровни мы ведь не просто так добавляли, поэтому условия будут следующие:

Теперь пришло самое подходящее время для написания нового индикатора. Воспользуйтесь мастером для создания нового пользовательского индикатора. Добавьте один дополнительный параметр, как в прошлый раз:

mql4 moving average код. screen016. mql4 moving average код фото. mql4 moving average код-screen016. картинка mql4 moving average код. картинка screen016. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

А последний шаг настройте следующим образом:

mql4 moving average код. screen017. mql4 moving average код фото. mql4 moving average код-screen017. картинка mql4 moving average код. картинка screen017. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Сначала нужно добавить 2 буфера данных, которые будут использоваться, чтобы рисовать сигналы на покупку и продажу в виде стрелочек. Измените тип буферов данных на Arrow. Поменяйте цвета и измените коды символов. Ниже представлены все доступные коды символов:

mql4 moving average код. screen 3. mql4 moving average код фото. mql4 moving average код-screen 3. картинка mql4 moving average код. картинка screen 3. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

Также не нужно рисовать индикатор в отдельном окне, так как мы собираемся рисовать сигналы прямо в окне графика цен.

Мы используем 2 буфера данных, потому что мы не можем рисовать разные стрелочки (символы) одним буфером. Каждый буфер данных, который выводится в виде символов, может рисоваться только одним символом. Теперь давайте внимательно посмотрим на код инициализации индикатора:

Остальной код инициализации настраивает буферы аналогично «случайному» индикатору, который мы рассмотрели выше. Теперь давайте допишем код в функцию start():

Весь код до цикла повторяется из «случайного» индикатора. Вообще этот код является стандартным в любом индикаторе и повторяется с небольшими изменениями. Давайте детально разберем цикл:

Сначала мы объявляем переменную randomValue (случайное значение), которой присваиваем значение нашего «случайного» индикатора на текущем баре. Для этого мы используем функцию iCustom:

Если значение «случайного» индикатора больше верхнего уровня (800), то это сигнал на покупку:

Иначе, если сигнала на покупку нет, то:

Если же значение «случайного» индикатора меньше нижнего уровня (200), то это сигнал на продажу:

Иначе, если сигнал на продажу отсутствует, то:

Вот и весь цикл. Откомпилируйте индикатор и запустите его в терминале:

mql4 moving average код. screen018. mql4 moving average код фото. mql4 moving average код-screen018. картинка mql4 moving average код. картинка screen018. У меня тут накопилось некоторое количество видеокастов, записывал для своей учебной группы по программированию на MQL4. Кто не в курсе, что это за язык — это для терминала Metatrader 4, который широко используется на форексе.

О стиле

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

Заключение

Сегодня вы кое-чему научились. Вы написали два простых индикатора. Да, они бесполезны, но я ведь не учу вас прибыльно торговать!! Вы получили представление о том, как работают индикаторы, какими параметрами и свойствами они обладают. Вы научились настраивать и работать с буферами. Вы узнали несколько новых функций. Функция iCustom очень важна и будет использоваться в дальнейшем даже в советниках. Если у вас возникают какие-то сложности, то медленно перечитывайте статью еще раз и если проблема осталась, то смело задавайте вопросы на форуме или в комментариях.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *