Автоматизация торгового процесса. MQL4 Создание, обсуждение и тестирование советников, форекс индикаторов, скриптов, взаимодействия между приложениями в терминале MetaTrader 4.

Ответить
14.03.2019, 16:29
Аватар для Vladimirjurav
Vladimirjurav Vladimirjurav на форуме Активный участник
Регистрация: 09.12.2016 / Сообщений: 176
Поблагодарили 58 раз(а) / Репутация: 59

По умолчанию Первый класс. Учимся писать и считать.

По просьбе товарищей с форума решил создать такую тему. Сразу говорю, я не программист. Здесь не будет нудных классических уроков, начиная с азов программирования. Прошу участвовать в обсуждении желающих разобраться в принципе работы индикаторов, скриптов, советников, на конкретных примерах.
По аналогии с автомобилем. Практически все мы водители. Но желание и возможность разобраться как работают все узлы автомобиля, есть далеко не у всех. Но элементарно, заменить колесо, аккумулятор, лампочку, фильтры и масло могут неверное многие.
Начну вот с чего.
Есть конкретная задача. Вставить в советник так приглянувшийся индикатор, ну почти Грааль. И потестить этот сов, посмотреть как он с маху заработает тебе лимоны и нарубит капусты..
Сразу говорю, я не претендую на истину в последней инстанции, тем более я повторяю, я не прогер.
Серьезных прогеров, если что, прошу сильно не пинать, а при желании и возможности поправить и подсказать.
У меня есть любимый советник, в который я вставляю, меняю индюки для тестирования. Хочу показать как я это делаю.. и что для этого надо знать.
Сразу надо условиться, лезть будем туда, где хоть что то понимаем.
Основное правило, не ломай работающий механизм. Если сломал, советник перестал работать.. Поставь деталь обратно.
И надо понимать, сама ложка в рот не полезет, надо думать и вникать ..

Пока вступление всё.. Далее будет все конкретно.

Последний раз редактировалось Vladimirjurav; 14.03.2019 в 16:52.
14.03.2019, 18:50
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 3,017
Поблагодарили 4,133 раз(а) / Репутация: 4121
Сидит программист, работает. Подходит сын и спрашивает:
- Пап, а почему солнце встаёт на востоке, а не на западе?
- Ну сколько раз тебе говорить, Не трогай отлаженную систему...


Похвально желание разобраться. Но если разбираться, то до самых косточек, а не просто куда какой кубик положить...
14.03.2019, 19:27
Аватар для Vladimirjurav
Vladimirjurav Vladimirjurav на форуме Активный участник
Регистрация: 09.12.2016 / Сообщений: 176
Поблагодарили 58 раз(а) / Репутация: 59
Сидит программист, работает. Подходит сын и спрашивает:
- Пап, а почему солнце встаёт на востоке, а не на западе?
- Ну сколько раз тебе говорить, Не трогай отлаженную систему...
...
14.03.2019, 19:34
Аватар для ВАСЯ................
ВАСЯ................ ВАСЯ................ на форуме Элитный участник
Регистрация: 09.05.2013 / Сообщений: 1,795
Поблагодарили 1,836 раз(а) / Репутация: 1841
если поможет
15.03.2019, 05:56
Аватар для Kos33
Kos33 Kos33 на форуме Интересующийся
Регистрация: 10.10.2016 / Сообщений: 33
Поблагодарили 1 раз в 1 сообщении / Репутация: 2
Сообщение от: ВАСЯ................
если поможет
мне полюбому поможет
17.03.2019, 13:58
Аватар для Vladimirjurav
Vladimirjurav Vladimirjurav на форуме Активный участник
Регистрация: 09.12.2016 / Сообщений: 176
Поблагодарили 58 раз(а) / Репутация: 59
Похвально желание разобраться. Но если разбираться, то до самых косточек, а не просто куда какой кубик положить...
Согласен. Если у серьезных прогеров будет желание и возможность, подсказать, поправить и дополнить, было бы здорово. Только без троля..
Разговаривал с некоторыми. Говорю как да что? Говорят также ковыряли программы и учились. Базовое образование на тему программирования мало у кого есть. На самом деле это видно и по форуму.
17.03.2019, 15:23
Аватар для Vladimirjurav
Vladimirjurav Vladimirjurav на форуме Активный участник
Регистрация: 09.12.2016 / Сообщений: 176
Поблагодарили 58 раз(а) / Репутация: 59
Продолжим.. или начнем. Язык программирования, на то он и язык, как иностранный. За границей мы ведь должны иметь, хоть какое-то представление о языке. Можем почерпнуть у других знания. Например- vodka tomato или - ту виски кола..
В языке программирования существуют обязательные вещи которые мы должны знать и внимательно за этим следить.
Итак азы.. Для начала это скобки, кавычки и другие знаки которыми так не любят пользоваться те кто пишет СМС.
Их целая таблица, например - }, ), ", ; в общем их куча. Основное правило не потерять их и не стереть, когда что то редактируем в коде программы. Каждая точка, запятая и кавычка имеют смысл, а не поставлены просто так. Почему это. Комп не человек, он не понимает что вы начинаете или уже закончили свою мысль, или действие. Для этого и ставится такая скобка. И если скобка или кавычка стоит перед действием. Она должна быть обязательна закрыта, стоять после действия. Иначе комп будет думать что вы дальше продолжаете действие, а он же еще первое не закончил и напишет вам в журнале ошибок красным просто дофига. А все из за одной потерянной скобки.
Еще программисты пользуются символами которые понимает комп.
Их тоже много. Пока два которые нам нужны, это как в русском языке, союз - И , и еще союз ИЛИ. Союз И, обозначится двумя закорючками &&. Союз ИЛИ двумя черточками l l. Что это значит.
Мы хотим что бы советник открывал сделку когда зеленая линия индикатора Грааль поползла вверх и в тоже время цена была над трендовой линией индикатора МА.
В коде это будет написано примерно так (iClose_Signal > iMA_Signal && iGraal_Signal > 0) т.е. сигнал закрытия бара выше сигнала индикатора МА и сигнал индикатора Грааль больше нуля. По аналогии прописывается условие ИЛИ.

Это пока основное что нам нужно что бы двигаться дальше. А дальше разберемся как же сделать так что бы советник увидел что индикатор "Graal" начал рисовать зеленую линию или нарисовал стрелку в верх и ему пора открывать сделку в buy на покупку.

Последний раз редактировалось Vladimirjurav; 17.03.2019 в 15:48.
17.03.2019, 15:33
Аватар для Юлия
Юлия Юлия на форуме Главный редактор
Регистрация: 16.08.2008 / Сообщений: 8,722
Поблагодарили 8,903 раз(а) / Репутация: 9210
Почитаю

_____________________________________
✔ Полезные ссылки: Портал трейдеров | Правила форума | Статусы форума | Telegram канал | Лента Facebook
♕ Автоматизируем стратегии: Жираф | АКА
♞ Конкурсы на форуме:
- Битва прогнозов (15$ ежедневно) - оставьте прогноз первым
17.03.2019, 15:59
Аватар для vladradon
vladradon vladradon на форуме Местный знаток
Регистрация: 12.02.2015 / Сообщений: 864
Поблагодарили 677 раз(а) / Репутация: 684
Когда будете работать с редактором, а учиться быстрее получится, если взять какую-то простенькую рабочую программку (сова или индикатор), алгоритм работы которой вы знаете, но не знаете как это работает в коде, удобно пользоваться встроенным справочником по языку. Для этого в коде просто нужно мышкой выделить то, что вас интересует (это может быть какая-то функция - они выделяются цветом, или просто выделить какой-то арифметический знак типа +) и нажать кнопку на клавиатуре F1. Справочник достаточно информативный, хоть и рассчитан больше на тех, кто знает уже основы программирования. Но для новичка во многих случаях может быть очень полезен - не нужно постоянно лезть в интернет за информацией.
Можно вечно смотреть на то, как горит огонь, как течет вода... и как работает трал...
17.03.2019, 16:50
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 3,017
Поблагодарили 4,133 раз(а) / Репутация: 4121
Сообщение от: Vladimirjurav
Комп не человек, он не понимает что вы начинаете или уже закончили свою мысль, или действие.
Когда-то М. Ботвинник сказал, что компьютер это идиот. Вот руководствуясь этим и надо подходить к программированию. Надо понимать, что как заложено в программу, так и будет выдаваться результат. И если результат отличается от ожидаемого, то значит вы что-то не так сделали. Никогда не ищите ошибки или баги языка программирования.
Вчера, 15:34
Аватар для Vladimirjurav
Vladimirjurav Vladimirjurav на форуме Активный участник
Регистрация: 09.12.2016 / Сообщений: 176
Поблагодарили 58 раз(а) / Репутация: 59
Будем разбираться, что нужно, что бы советник увидел индикатор. Смотрим что говорят по этому поводу уважаемые программисты:
"Доброго дня, а под этот индикатор реально сделать советник ?
Да, без проблем. В нем уже есть все сигналы - просто вытаскиваешь их обычным iCustom в любого сова (можно уже готовый взять индикаторный и вставить этот индюк туда)."
Так вот, вопрос, а где же эти сигналы в индикаторе?
Про iCustom чуть позже.
Ответ, в буферах. При чем, сигналы там могут быть совершенно разные, и 0 и 1, и -1, и меняющееся относительно нуля числовое значение, и в минус и в плюс. И число соответствующее котировки валютной пары. И очень смешное число, встречается довольно часто, меняться может на любое другое значение, вы это увидите. Выглядит оно в буфере вот так: 2147483647.00000000 и пишется в советнике вот так: EMPTY_VALUE и называется , как ни странно, "Пустое значение в индикаторном буфере". Где-то прочитал объяснение: т.к. любое другое может быть значением индикатора, ну и фиг с ним.. Вот это все вы и советник можете увидеть в буферах.
Как нам посмотреть все же, и точно знать, что в буферах индикатора, что бы потом написать советнику, мол так и так: число 1 - значит зеленая вверх, -1 значит красная в низ.. это как вариант.
Для этих целей я использую небольшой советник. В который вставляю название индикатора, включаю тест и он пишет, в левом верхнем углу экрана на графике, номере буферов и что там и как меняется в зависимости от показаний индикатора.
Вчера, 16:14
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 3,017
Поблагодарили 4,133 раз(а) / Репутация: 4121
Сообщение от: Vladimirjurav
Будем разбираться, что нужно, что бы советник увидел индикатор. Смотрим что говорят по этому поводу уважаемые программисты:
"Доброго дня, а под этот индикатор реально сделать советник ?
Да, без проблем. В нем уже есть все сигналы - просто вытаскиваешь их обычным iCustom в любого сова (можно уже готовый взять индикаторный и вставить этот индюк туда)."
Так вот, вопрос, а где же эти сигналы в индикаторе?
Про iCustom чуть позже.
Ответ, в буферах. При чем, сигналы там могут быть совершенно разные, и 0 и 1, и -1, и меняющееся относительно нуля числовое значение, и в минус и в плюс. И число соответствующее котировки валютной пары. И очень смешное число, встречается довольно часто, меняться может на любое другое значение, вы это увидите. Выглядит оно в буфере вот так: 2147483647.00000000 и пишется в советнике вот так: EMPTY_VALUE и называется , как ни странно, "Пустое значение в индикаторном буфере". Где-то прочитал объяснение: т.к. любое другое может быть значением индикатора, ну и фиг с ним.. Вот это все вы и советник можете увидеть в буферах.
Как нам посмотреть все же, и точно знать, что в буферах индикатора, что бы потом написать советнику, мол так и так: число 1 - значит зеленая вверх, -1 значит красная в низ.. это как вариант.
Для этих целей я использую небольшой советник. В который вставляю название индикатора, включаю тест и он пишет, в левом верхнем углу экрана на графике, номере буферов и что там и как меняется в зависимости от показаний индикатора.
Это называется "Метод научно-технического тыка...". Но для определения достаточно понимать что в индикаторе при запуске можно увидеть и даже изменить цвет отображения. Так вот номер слева это и есть номер буфера индикатора, который идет предпоследним параметром в функции iCustom. А в коде индикатора номера буферов определяются строкой

SetIndexBuffer(номер_буфера, имя_массива);
Вчера, 16:40
Аватар для Vladimirjurav
Vladimirjurav Vladimirjurav на форуме Активный участник
Регистрация: 09.12.2016 / Сообщений: 176
Поблагодарили 58 раз(а) / Репутация: 59
Советник конечно не сам придумал. Всё взял из интернета, спасибо автору.
Посмотрим для начала буферы известного индикатора: SuperTrend.
Где же они в индикаторе. Визуально вы можете посмотреть в свойствах индикатора. На вкладке Цвета. Видите? 0 - Lime. 1 - Red.
Это и есть буферы. Все очень просто. Кстати в буферах счет начинается с нуля. И как меня любезно поправил известный прогер, говорится - буферы а не буфера, ударение на У..
Т.к. он говорит, буфера бывают только у женщин а в программах буферы..
Можете, ведь, открыть и посмотреть код индикатора?.
Правой кнопкой мыши щелкаете по индюку. Нажимаете Изменить. Открывается программа MetaEditor. И вот весь код индикатора на ладони. Начало кода, написано:#property indicator_buffers 2. Значит в этом индикаторе 2 буфера. Может быть и 5 и 10.

/+------------------------------------------------------------------+
//| SuperTrend.mq4 v1.2 |
//| Copyright © 2008, Jason Robinson (jnrtrading). |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Jason Robinson."
#property link "http://www.spreadtrade2win.com"

#property indicator_chart_window
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_buffers 2
double TrendUp[], TrendDown[];
int changeOfTrend;
extern int Nbr_Periods = 10;
extern double Multiplier = 3.0;

Точно так, мы будем открывать и смотреть код советника и. т. д.
В верху, в левом углу на графике видите значения: iTrend0 = 1.14501100 , а iTrend1 = 2147483647.00000000. Это и есть значения которые запрятаны в эти буферы. Т.е. мы видим сейчас на графике зеленая линия - нулевой буфер имеет значение: 1.14501100, а первый буфер значение: 2147483647.00000000 т. е. EMPTY_VALUE. Когда цвета изменятся, изменятся и значения.
Вы сами можете посмотреть код советника, которым мы смотрели значения буферов. Он прилагается. Все это я почерпнул из ролика на YouTube:



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

Последний раз редактировалось NSerega; Сегодня в 00:11.
Сегодня, 00:18
Аватар для vladradon
vladradon vladradon на форуме Местный знаток
Регистрация: 12.02.2015 / Сообщений: 864
Поблагодарили 677 раз(а) / Репутация: 684
а такой сов реально создать?
Это обычный сеточник с усреднением и подгонкой времени торговли. Таких полно и ничего сложного они из себя не представляют.
Можно вечно смотреть на то, как горит огонь, как течет вода... и как работает трал...
Ответить


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 05:35. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.