MQL ПРОГРАММИРОВАНИЕ. КАК САМОМУ НАПИСАТЬ ФОРЕКС СОВЕТНИК

Лучшие Форекс брокеры 2021 года:

Содержание страницы:

MQL ПРОГРАММИРОВАНИЕ. КАК САМОМУ НАПИСАТЬ ФОРЕКС СОВЕТНИК

0ll 1 140 постов

dermitay 140 постов

denis77515 148 постов

usver73 141 постов

Популярные посты

Смотрим видео-уроки, изучаем MQL: Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт» P.S. Тема про Обучение MQL5 => Обучение языку MQL5 под M

Надежные Форекс брокеры:

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

pavlus777

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол — в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

MikR0ReR

MikR0ReR

  • 166
  • 228

@diodio input поменяй на extern.

Ссылка на сообщение
Поделиться на другие сайты

Gamakiv

Gamakiv

  • 19
  • 33

Доброго времени суток, Господа!

Подскажите, каким образом и вообще возможно ли узнать, что ордер закрыл человек, а не советник?

Ссылка на сообщение
Поделиться на другие сайты

Владимир Стариков

Владимир Стариков

  • 0
  • 31

Кто-нибудь, подскажите пожалуйста, как можно узнать точное время (в формате ч:м:сек) пересечения цены и индикатора, например скользящей средней?

Лучшие Форекс площадки:
Ссылка на сообщение
Поделиться на другие сайты

Rever27

Rever27

  • 10 777
  • 2,5k

Кто-нибудь, подскажите пожалуйста, как можно узнать точное время (в формате ч:м:сек) пересечения цены и индикатора, например скользящей средней?

Что то типа того:

Суть в том, что ты узнаешь значение МА на текущем тике и уже сравниваешь его с ценой Bid, либо любой другой необходимой.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 weeks later.

ademen

ademen

  • 711
  • 621

Возможно ли в OBJ_TRENDBYANGLE получить значение цены третей точки?

ObjectGet(name,OBJPROP_PRICE3)) вернет 0, и ошибка тоже 0.

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

Ссылка на сообщение
Поделиться на другие сайты

Rever27

Rever27

  • 10 777
  • 2,5k

Возможно ли в OBJ_TRENDBYANGLE получить значение цены третей точки?

Можно через данную функцию

Смещение происходит от текущей цены, т.е. если поставить второй параметр отрицательным, то смещение будет вправо на графике.

Ссылка на сообщение
Поделиться на другие сайты

ademen

ademen

  • 711
  • 621

Можно через данную функцию

Смещение происходит от текущей цены, т.е. если поставить второй параметр отрицательным, то смещение будет вправо на графике.

Спасибо, то что нужно

Когда я пытаюсь получить первую точку — функция работает верно, но если я поставлю на 1 бар меньше функция выдает значения которое далекое от цены, и если уменьшать сдвиг — значения будет уменьшаться и так до нуля.

1 точка линии (8 бар), показатель верный:

1 бар вправо (7 бар)

2 бар (конец линии):

Проблема именно с OBJ_TRENDBYANGLE, обычная трендовая линия дает верные показатели на любом промежутке

@Rever27 сталкивались с таким? В чем может быть моя ошибка?

Ссылка на сообщение
Поделиться на другие сайты

Rever27

Rever27

  • 10 777
  • 2,5k

сталкивались с таким?

нет, не сталкивался, я трендовой линией не пользуюсь. Перед тем, как скинуть функцию сюда я попробовал сделать сдвиг +10/-10, все вроде работало.

Ссылка на сообщение
Поделиться на другие сайты

ademen

ademen

  • 711
  • 621

Перед тем, как скинуть функцию сюда я попробовал сделать сдвиг +10/-10, все вроде работало.

Обычная трендовая линия и у меня все правильно отображает., проблема именно с линией под наклоном @Rever27 вы проверяли трендовуи или трендовую с наклоном?

Ссылка на сообщение
Поделиться на другие сайты

Rever27

Rever27

  • 10 777
  • 2,5k

вы проверяли трендовуи или трендовую с наклоном?

Я нарисовал трендовую по градусам права налево, мне выдало ноль в результатах. Я нарисовал ее слева направо, запросил результаты 10 бара как влево, так и вправо и все выдало нормально. Больше я не экспериментировал

Ссылка на сообщение
Поделиться на другие сайты

hackas

hackas

  • 13
  • 25

Не могу придумать, как сделать чтобы проверка была на каждом баре на предмет круглой цены.

Допустим у меня индикатор показал пин бар на продажу, как мне проверить между хаем и опен свечи или между лоу и опеном на предмет круглой цены между ними?

Ссылка на сообщение
Поделиться на другие сайты

Rever27

Rever27

  • 10 777
  • 2,5k

Не могу придумать, как сделать чтобы проверка была на каждом баре на предмет круглой цены.

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

Ты определяешь для каждой свечи ее круглый уровень. Для этого находишь ровно середину свечи (High+Low)/2 и это значение округляешь за сотых (для пар без JPY). В итоге у тебя на каждой свече будет уровень 1.17, 1.18, 1.19 и т.д.

Далее узнается, что полученное значение находится внутри свечи.
После этого берется формула пин бара в интернете, правится по себя.

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

Ссылка на сообщение
Поделиться на другие сайты

hackas

hackas

  • 13
  • 25

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

Ты определяешь для каждой свечи ее круглый уровень. Для этого находишь ровно середину свечи (High+Low)/2 и это значение округляешь за сотых (для пар без JPY). В итоге у тебя на каждой свече будет уровень 1.17, 1.18, 1.19 и т.д.

Далее узнается, что полученное значение находится внутри свечи.
После этого берется формула пин бара в интернете, правится по себя.

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

RoundLevel PinBar.mq4 6 \u043a\u0411 · 1 загрузка

спасибо хоть кто то помог!Все заработало) а как полтиник добавить? и как можно сделать что можно было ставить на пары с JPY или такие как золото,нефть?

Traders //

Обсуждаем здесь вопросы разработки экспертов, делимся опытом, выкладываем уроки.

Внимание! Если Вы хотите заказать советник, то Вам в группу «Заказы на разработку советников»

Лучшее от AM2

Как написать простейший советник на MQL4?

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

Для начала сформулируем правила открытия и закрытия позиций.

Торговать будем по валютной паре евродоллар на пятиминутке используя сигналы индикаторов Moving Average и Stochastic. Покупаем, когда Moving Average растет и Stochastic снизился ниже уровня перепроданности. Продаем, когда Moving Average убывает и Stochastic вырос выше уровня перекупленности.

Чтобы облегчить задачу написания эксперта воспользуемся кодом советника Moving Average.mq4 из стандартной библиотеки MetaTrader 4.

Немного изменим шапку эксперта и укажем свои внешние переменные:

Так как советник у нас простейший убираем из кода функции LotsOptimized() для расчета лота и CheckForClose() предназначенную для закрытия позиций при определенном условии.

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

И в завершение нашего задания подкорректируем содержание функции start():

Инвестиции Советник форекс AlgoTradeSoft Innovative EA -грааль стоимостью 29999$

Советник форекс AlgoTradeSoft Innovative EA долгое время не давал покоя многим трейдерам форекс, ввиду недоступности по цене приобретения и сегодня мы исправляем эту несправедливость. В конце статьи вы можете скачать AlgoTradeSoft Innovative EA без привязок и каких либо ограничений. Советник работает со всеми версиями последних билдов терминала МТ4.

Лучший результат при тестировании на реальном счете получился у брокера EXNESS

Стратегия основана на пробое наиболее важных уровней сопротивления и поддержки. Используется адаптивный алгоритм сопровождения сделки.

Бэктестирование и оптимизация проводились на реальных тиках с качеством истории 99,9%. Советник успешно прошел стресс-тестирование с проскальзываниями и комиссией, приближенными к реальным рыночным условиям.

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

Описание далее:
Рабочая валютная пара/таймфрейм: EURUSD M30.

Параметры
Magic — идентификатор сделок;
EA comment — комментарий.
Настройки риска

Lot type — тип мани-менеджмента:
Fixed Lot — фиксированный лот;
Risk per trade — лот, основанный на размере Loss:
0.5% — консервативный;
1.0% — стандартный (рекомендуемый);
1.5% — агрессивный (кредитное плечо от 1:200);
2+% — супер агрессивный (кредитное плечо от 1:200).
Margin percent use — лот, основанный на марже;
Fixed lot size — фиксированный размер лота;
Risk % — размер риска для вычисления размера лота при Risk per trade и Margin percent use;
Max lot — максимальный размер лота (0 — off);
Personal balance % — собственный баланс советника, определяется как % от общего баланса счета (0 — отключен). Для корректной работы в истории счета должны быть все сделки, начиная с первого пополнения счета. Применяется при портфельной торговле на счету несколькими советниками;
Initial Loss — начальный Loss;
TakeProfit — TakeProfit;
BreakEven After — прибыль, при которой Loss переносится на BreakEven To;
BreakEven To — прибыль, которая будет защищена безбытком.
Трейлинг-стоп

Trailing stop — величина трейлинг-стопа:
-1 — off;
0 — трейлинг-стоп = Loss;
>0 — использовать указанное значение;
Trailing step — шаг трейлинга;
Risk protection on slippages — алгоритм защиты риска при проскальзываниях;
Adapt Trailing to slippages — алгоритм адаптации трейлинга при проскальзываниях;
Trailing Mode — режимы трейлинг-стопа:
Adaptive by Time — трейлинг адаптивный по времени (рекомендуем);
Adaptive by Volatility — трейлинг адаптивный по волатильности;
Adaptive by Volume — трейлинг адаптивный по объему.
Time Scale — временной диапазон для анализа цены (используется при Adaptive by Time);
Volatility Scale — диапазон волатильности для анализа цены (используется при Adaptive by Volatility);
Volume Scale — диапазон адаптированной волатильности для анализа объема (используется при Adaptive by Volume);
Change correction coefficient — коэффициент чувствительности трейлинга.
Время работы(GMT)

EveryDay Start Hour — час начала работы;
EveryDay Start Minute — минута начала работы;
EveryDay End Hour — час окончания работы;
EveryDay End Minute — минута окончания работы.
Friday Time — Время остановки в пятницу (чч:мм). Чтобы отключить, оставьте поле пустым;
GMT mode — режим определения смещения серверного времени брокера относительно GMT;
Auto GMT (not for tester!) — автоматический режим определения GMT (рекомендуем);
Manual GMT — ручной режим определения GMT, используется при бэктестировании.
Max average spread — максимальный средний спред(0 — off);
Fast BackTest — Ускоряет тестирование при фиксированном спреде, на реальную торговлю не влияет;
Broker quotes shift — смещение котировок у брокера(у большинства не используется).
Рекомендации
Перед использованием на реальном счете протестируйте советника с минимальным риском;
Обязательно используйте VPS или сервер с минимальными сетевыми задержками к серверу брокера;
Для максимального результата используйте кредитное плечо от 1:100;
При использовании советника у брокеров с FIFO, не запускайте больше одного советника на счет;
Низкие спреды + низкие комиссии + качественное исполнение — это главное при выборе брокера для торговли.

Язык MQL — Урок 13 «Работа с графическими объектами MT4»

Добрый день, Уважаемые подписчики!
Сегодня я публикую очередной урок по пришедшему мне вопросу:

Уважаемый Александр.
Имеется ли в MQL4 возможность работать с такими графическими объектами MetaTraderа, как трендовые, вертикальные и горизонтальные линии, каналы и т.д., имеющими в среде MetaTrader собственные имена и параметры? Если да — рассажите об этом в одном из своих уроков.

Давайте рассмотрим как работать с объектами MetaTraderа 4 на примере трендовой линии . Существует множество стратегий форекс, основаных на трендовых линиях. Например Стратегия форекс «3 касания» или Стратегия форекс «Trend Lines» и т.д. Обычно работают такие трговые стратегии на отскок цены от трендовой линии или на пробой трендовой линии . Рассмотрим как написать советника MT4 который будет отслеживать приближение цены к трендовой линии и открывать ордера с целью получить прибыль при ее отскоке. Конечно советник не будет полностью автоматическим. Трейдеру придется в ручную рисовать трендовую линию, но сидеть ждать подхода цены к трендовой линии будет не нужно.

Для начала определимся с параметрами, что нам нужно настраивать: — риск для расчета лота — тейкпрофит — стоплосс — расстояние от трендовой линии до установки ордера (цена может несколько пунктов не дойти до трендовой линии)

Проверим что есть трендовая линия и она в единственном экземпляре:
if ( ObjectsTotal ( OBJ_TREND )!=1)
< Comment ( »Нарисуйте 1 трендовую линию!" );
return (0);>

Получим ИМЯ трендовой линии:
for ( int i=0;i< ObjectsTotal ();i++)
< string name= ObjectName (i);
if ( ObjectType (name)== OBJ_TREND ) break ;>

Проверим что трендовая линия нарисована правильно (по движению цены):
datetime t1= ObjectGet (name, OBJPROP_TIME1 );
datetime t2= ObjectGet (name, OBJPROP_TIME2 );
if (t1>t2)
< Comment ( "Неправильно нарисована трендовая линия!" );
return (0);>

Продолжим линию (свойство луч):
ObjectSet (name, OBJPROP_RAY , true );

Определим тренд (вверх или вниз):
bool trend= false ;
double p1= ObjectGet (name, OBJPROP_PRICE1 );
double p2= ObjectGet (name, OBJPROP_PRICE2 );
if (p1<p2) trend= true ;

Определим текущее значение трендовой линии и сообщим ее параметры:
double pr= ObjectGetValueByShift (name,0);
Comment ( «Name color: #008000;»>» Trend color: #008000;»>» Value color: #0000ff;»>int oBuy=0,oSell=0;
for (i= OrdersTotal () −1;i>=0;i—)
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== Symbol ())
< if ( OrderType ()== OP_BUY ) oBuy++;
if ( OrderType ()== OP_SELL ) oSell++;>

Если нет ордеров и цена подошла к трендовой линии — откроем ордер:
double tp=0,sl=0;
double Lot=GetLot(MaxRisk);
if (Lot==0.0) < Alert ( "Недостаточно средств!" ); return (0);>
if (oBuy+oSell==0 && trend && Bid >=pr && Bid <=pr+Delta* Point )
< if (TakeProfit>0) tp= Ask +TakeProfit* Point ;
if (StopLoss>0) sl= Ask -StopLoss* Point ;
NewOrder( OP_BUY ,Lot, Ask ,tp,sl);>
if (oBuy+oSell==0 && !trend && Ask <=pr && Ask >=pr-Delta* Point )
< if (TakeProfit>0) tp= Bid -TakeProfit* Point ;
if (StopLoss>0) sl= Bid +StopLoss* Point ;
NewOrder( OP_SELL ,Lot, Bid ,tp,sl);>

Советник форекс готов! Осталось его протестировать. Советники форекс подобного типа, тестируют только в визуальном режиме как в Уроке 10 «Работа с внешними индикаторами». Запустим тестирование и нарисуем трендовую линию:

Наблюдаем как идет тестирование. Вот цена подошла к трендовой линии и открылся ордер:

Далее цена развернулась и подошла к нашему профиту:

В итоге ордер закрылся по тейкпрофиту и мы получили прибыль:

Как видно из тестов, созданный нами эксперт МТ4, работает. Его можно использовать как для торговли, так и для тренировки умения рисовать трендовые линии в тестере стратегий Metatrader 4.

Traders //

Обсуждаем здесь вопросы разработки экспертов, делимся опытом, выкладываем уроки.

Внимание! Если Вы хотите заказать советник, то Вам в группу «Заказы на разработку советников»

Лучшее от AM2

Как написать простейший советник, торгующий отложенными ордерами.

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

Перво наперво определимся со стратегией по которой наш эксперт будет торговать. За основу я взял первую пришедшую на ум стратегию. Составим небольшое техзадание для нашей импровизации.

Далее определимся с внешними входными переменными. Расположим их в самом начале нашего кода.

В функции Start() расположим переменные и функции, необходимые для торговли.
В переменной b запоминаем бай стоп отложенные ордера, в переменной s запоминаем отложенные ордера селл стоп.
Переменная expiration хранит время истечения ордера. BuyPrice — это расстояние от текущей цены плюс отступ на пробой,
SellPrice — соответственно отступ от цены вниз.

Добавим в советник функцию контроля торговли на новом баре.

Следующая функция будет подсчитывать количество позиций и установленных отложенных ордеров.

Собственно установка отложенников идет в следующем блоке, при выполнении условий указанных в нашем ТЗ.

После того как мы соберем все наши кирпичики воедино. мы получим следующий более менее работоспособный код.

После оптимизации стратегии на отрезке 2022.01.04 — 2022.11.30.
Ответить на вопрос была ли это подгонка или найдена некоторая устойчивая закономерность можно проведя форвард и бэк тесты. Т.е. протестируем наш эксперт на истории вне диапазона оптимизации.

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

Чтобы получить положительные результаты форвард и бэк тестов, оптимизируем стратегию на более длительном участке времени 2022.01.04 — 2022.11.30.

Рис.3. Тест на участке оптимизации 2022.11.30 — 2022.02.28.

Рис.2. Тест на истории 2022.07.01 — 2022.01.04

Рис.3. Тест на истории 2022.11.30 — 2022.02.28.

Ну а сейчас посмотрим а вдруг у нас в руках, то к чему стремятся миллионы людей торгующих на рынке FOREX. То в поисках чего не спят ночами начинающие и не очень трейдеры всего мира — торговая система Грааль.

Установим в эксперте лот 0.1 при депо 10000$ и протестируем наш эксперт с оптимизированными параметрами с начала 2000-го года. В результате получим вот такую картинку, которая уже с большей уверенностью позволяет нам сказать, что найдена определенная закономерность.

Рис.4. Тест на истории 2000.01.04 — 2022.02.28.

Тестирование и оптимизация эксперта проводились на котировках Альпари, H1, EURUSD.

В результате всего вышеизложенного можно сделать вывод что данная торговая система дает хороший доход на трендовых участках рынка и ведет себя нестабильно во флете.

Тема: MQL4: Бесплатное написание программ

Здравствуйте, помогите пожалуйста, нужен алерт к индикатору при смене направления.

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

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

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

  • Просмотр профиля
  • Сортировка сообщений
  • Найти все темы

В этой ветке рассматриваются заявки на бесплатное исполнение торговых роботов, скриптов и индикаторов. Реализация ваших идей возможна на основе следующих простых правил:
1) Все описания, коды, изображения и т.п. должны открыто размещаться в данной ветке.
2) Создание программ, за редчайшим исключением, осуществляется на основе идей, а не чужих кодов. Т.е. копаться в чужом коде в рамках этой ветки мы вряд ли станем.
3) Программисты имеют право отказать в исполнении той или иной идей без объяснения причин. Как правило это связано с бессмысленностью идеи, которая становится очевидной ещё на стадии чтения задания;
4) Все программы исполняются без всякой очереди, по желанию программиста.
5) Задание должно быть максимально точным и минимально абстрактным. В идеале в задании должны быть описаны конкретные правила «если X, то Y». Поясняющие изображения (в т.ч. и скриншоты) будут дополнительным плюсом — как правило они способствуют лучшему пониманию задания.
6) Сразу продумывайте все детали при составлении ТЗ. Последующее уточнение деталей в процессе написания советника занимает очень много времени программиста.

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

  • Просмотр профиля
  • Сортировка сообщений
  • Найти все темы

В этой ветке рассматриваются заявки на бесплатное исполнение торговых роботов, скриптов и индикаторов. Реализация ваших идей возможна на основе следующих простых правил:
1) Все описания, коды, изображения и т.п. должны открыто размещаться в данной ветке.
2) Создание программ, за редчайшим исключением, осуществляется на основе идей, а не чужих кодов. Т.е. копаться в чужом коде в рамках этой ветки мы вряд ли станем.
3) Программисты имеют право отказать в исполнении той или иной идей без объяснения причин. Как правило это связано с бессмысленностью идеи, которая становится очевидной ещё на стадии чтения задания;
4) Все программы исполняются без всякой очереди, по желанию программиста.
5) Задание должно быть максимально точным и минимально абстрактным. В идеале в задании должны быть описаны конкретные правила «если X, то Y». Поясняющие изображения (в т.ч. и скриншоты) будут дополнительным плюсом — как правило они способствуют лучшему пониманию задания.
6) Сразу продумывайте все детали при составлении ТЗ. Последующее уточнение деталей в процессе написания советника занимает очень много времени программиста.

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

Программирование форекс-роботов без знания языка MQL4

Эта статья будет интересна в основном трейдерам, а также форекс-инвесторам для расширения кругозора. Как известно, сколько трейдеров – столько и стратегий. Причем множество интересных стратегий не смогли стать достоянием широкого трейдерского сообщества лишь по той причине, что не были автоматизированы. А не были автоматизированы они в связи с тем, что разработчики стратегии не владели навыками пользования языком программирования – в бум автоматизации многие стратегии становятся известными в виде торговых роботов.

Конечно, знание языка программирования MQL версий 4 или 5 – это значительный шаг вперед для трейдера. Язык программирования позволяет создать собственный индикатор технического анализа, написать скрипт или торговый советник. А преимущества автоматической торговли общеизвестны – это и отсутствие влияния эмоций, и большее количество свободного времени. В этой статье мы рассмотрим вопросы и различные подходы к программированию торговых роботов:

  • Программирование роботов с помощью языка MQL;
  • Модификация кода существующей механической торговой системы;
  • Программирование советника с помощью специальных программ.

Создание программных кодов

Я веду этот блог уже более 6 лет. Все это время я регулярно публикую отчеты о результатах моих инвестиций. Сейчас публичный инвестпортфель составляет более 1 000 000 рублей.

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

Хорошую базу для познания MQL создает владение языком программирования «С++», но и без этих знаний язык MQL хорошо поддается изучению. Многие рядовые трейдеры, изучающие язык самостоятельно, считают, что для написания несложных скриптов и программ достаточно самостоятельного изучения языка программирования в течение недели.

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

Программирование роботов, в большинстве случаев, производится в специальном разделе торгового терминала MetaTrader4 – MetaEditor. Это многофункциональный и удобный специализированный редактор, с помощью которого можно самостоятельно создавать любые торговые алгоритмы.

Достоинством редактора является то, что созданные алгоритмы могут быть запущены сразу после создания, так как они автоматически появляются в торговой платформе. MetaEditor в МТ4 обладает такими характеристиками, как:

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

Помимо встроенного редактора МТ4 существует еще множество платформ для программирования советников с использованием языка С++. Например, платформы WealtLab, StockSharp и TSLab обеспечивают реализацию сразу всех этапов создания экспертов, включая их тестирование.

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

Сервис копирования сделок RAMM от AMarkets

Что такое сервис RAMM и как в нём копировать сделки

Платформа TSLab представляет собой визуальный редактор, собирающий торговый советник из функциональных блоков. Блоки написаны на языке С#, но их код в процессе программирования скрыт от пользователя. Существует и возможность использования языка C# и комбинирования программирования с визуальным редактором. Так можно дописывать отсутствующие в стандартном наборе элементы.

Промежуточной по функционалу, между платформами StockSharp и TSLab является платформа WealtLab. Она имеет визуальный редактор, правда, не очень хорошо развитый, и возможность использования языка программирования. Достоинством является отличный тестер стратегий.

Модификация советника

Более простым способом, но также требующим знания языка программирования, является модификация кода существующего советника под собственную стратегию. Для этого подбирается торговый робот, близкий по функционалу необходимому. При этом необходимо обеспечить соответствие по типу советника и используемым средствам технического анализа. С помощью модификации возможно добиться ускорения работы системы, произвести добавление алгоритмов управления, индикаторов, правил. Модификация так же осуществляется в интегрированном редакторе MetaEditor.

Программы для создания эксперта

Одним из способов программирования торгового советника является использование специализированных программ. Функционально они мало отличаются от описанной выше платформы TSLab и друг от друга и разработаны для снижения трудоемкости написания исходного кода. Создание самой торговой системы остается за трейдером.

Одной из таких программ является Forex EA Generator, реализующая блочную схему построения эксперта. Программа предполагает наличие минимальных знаний проектирования механических торговых систем.

Программа Gordago Forex Optimizer разработана с функционалом, приближенным к торговой платформе. Помимо создания советника она позволяет тестировать разработку на истории, а так же осуществлять с ее помощью торговлю, в случае наличия доступа к торговым серверам. Работа с программой интуитивно понятна – начало работы начинается с задания условий входа в рынок и выхода из него, задания инструментов анализа рынка. Функционал программы позволяет использовать разработанные эксперты в МТ4.

Сервис копирования сделок RAMM от AMarkets

Что такое сервис RAMM и как в нём копировать сделки

Полностью в автоматическом режиме эксперты создаются в программе Hlaiman EA Generator. Программа работает с торговой платформой МТ4. Для создания эксперта необходимо добавить на график желаемые инструменты технического анализа и нанести на график стрелки, указывающие места и направления входа в рынок, где осуществил бы вход сам трейдер. После этого программа самостоятельно просчитывает заданные условия входа и разрабатывает алгоритм робота. При этом качество отработки условий входа зависит от качества и количества заданных точек – они должны расставляться строго в соответствии с разработанной стратегией и таких точек должно быть нанесено максимальное количество. К сожалению, программа отсутствует в свободном доступе, что не позволяет провести тестирование созданных с ее помощью советников.

Заключение

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

Высокодоходные инвестиции, заработок на форекс, инвестирование в ПАММ, мониторинг проектов, обзоры, отзывы, форекс индикаторы и советники, MQL программирование

Как написать советник для MT4 по японским свечным моделям

Всем привет. Сегодняшнее мое “извержение” мысли будет повествовать о том, как написать советник для MT4 по японским свечным моделям. При этом я рассмотрю всего две разворотных модели: утреннюю звезду и вечернюю звезду.

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

Фактически, ранее, я уже несколько раз касался вопроса написания советника на MQL4, приводил примеры, подробно комментировал код, описывал параметры, что можно видеть, например, при разработке усредняющего советника. Сегодня же я приведу конкретный, более подробный пример построения целой торговой системы, в т.ч. включающей:

  • определение точек входа и выхода;
  • управление рисками;
  • управление деньгами.

Поскольку предложенная торговая система может быть полностью формализована (она будет иметь четкие параметры и правила), то это позволит мне написать автоматическую торговую систему – советник по японским свечным моделям, способную самостоятельно открывать и сопровождать сделки на рынке форекс.

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

А теперь давайте посмотрим на эти самые свечные модели – утреннюю и вечернюю звезду. Если вы до настоящего времени не прочли книгу Стива Нисона “За гранью японских свечей”, то рекомендую это сделать. Весьма полезно в образовательных целях. Итак, графически эти модели представляются так:

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

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

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

Тем не менее, Стив Нисон особо отмечает, что слом тренда на этих моделях наиболее вероятен в том случае, когда модели максимально соответствуют классическому описанию.

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

Думаю, теории вполне достаточно. Приступим к практической части, в которой и ответим на главный вопрос: “Как написать советник для MT4 по свечным моделям?”. Давайте, все-таки формализует нашу торговую систему. Для начала определимся с условиями открытия длинных (покупок) и коротких (продаж) позиций, т.е. опишем точки входа:

  • Мы будем покупать финансовый инструмент в том случае, когда на падающем рынке образуется свечная модель утренняя звезда.
  • Мы будем продавать финансовый инструмент в том случае, когда на растущем рынке образуется свечная модель вечерняя звезда.

Падающий и растущий рынки будем определять исходя из направления трендовой прямой, проходящей через ценовые бары с индексами от некоторой, заданной параметром depth глубины до текущего бара. Параметры этой трендовой прямой (коэффициент наклона – k и смещение – b) будем определять методом наименьших квадратов. Именно по знаку коэффициента k определяется вид тренда: при k>0 – тренд восходящий, k 0 (стремящемся к нулю) – флэт. По значению модуля коэффициента k будем судить о силе тренда, сравнивая его с определенным параметром angle . Таким образом, тренд будем считать восходящим и достаточной силы при условии, если k>=angle, нисходящим и достаточной силы, при условии, если k tp , которым будем задавать расстояние от уровня открытия позиции до уровня фиксации прибыли. Этот же параметр будет определять и режим фиксации прибыли профит-ордером:
— при tp, отличном от нуля, профит (в пунктах) будет величиной постоянной для каждой открываемой позиции и не будет зависеть от текущей ситуации на рынке;
— при tp=0 цель по прибыли будет величиной переменной для каждой открываемой позиции. Уровень профит-ордера в данном случае будет определятся с учетом предыдущего “размаха” ценового движения и исходя из предопределенного параметром fibo_level уровня Фибоначчи: считаем, что свечные модели утренняя и вечерняя звезда образуют новый локальный экстремум (т.е. в центральной точке этих моделей происходит излом предыдущего тренда), и строим уровни Фибоначчи для пары соседних экстремумов, одним из которых является предшествующий свечным моделям соответствующий локальный экстремум, а другим – вновь образованный данными свечными моделями.

Предыдущий локальный экстремум будем определять из ломаной, построенной индикатором ZigZag. Зная, что данный индикатор имеет 2 буфера ценовых экстремумов (вершин ломаной), значения предыдущего локального максимума будем получать из 1 буфера, а предыдущего локального минимума из 2. Если на соответствующем ценовом баре (свече) не образуется локального экстремума, то буфер для соответствующего ценового бара содержит пустое значение (0). Зная это, перемещаемся вглубь по соответствующему индикаторному буферу до тех пор, пока не встретим первое непустое значение. Именно это значение и будет предыдущим локальным экстремумом.

Это расстояние-фильтр будем определять в параметре sl_filter .

Определимся с правилами управления деньгами торгового счета:

  • Условимся, что мы можем изменять объем каждой вновь открываемой позиции по определенному правилу, в зависимости от наличия свободных средств торгового счета. Например, условимся, что в номинальном режиме объем сделки вычисляется исходя из того, что на каждую 1000 дол. свободных средств торгового счета приходится объем сделки равный 0.01 лот. Введя некий коэффициент, это соотношение можно изменять как в сторону увеличения, так и в сторону уменьшения. Назовем этот коэффициент параметром Risk .
  • Введем правило Мартингейл, при котором в случае закрытия позиции с убытком, следующая позиция будет открываться с увеличенным на заданный коэффициент объемом. Назовем этот коэффициент параметром KLot .

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

Определим параметры и переменные нашего будущего советника и опишем их, чтобы не забыть, как говорится:

Поскольку каждая японская свеча характеризуется целым набором параметров:

  • ценой открытия и закрытия;
  • максимальной и минимальной ценой;
  • видом свечи: бычья, медвежья либо доджи;
  • размером тела и теней,

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

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

И инициализируем эти переменные:

Вы обратили внимание, что первой свече соответствует 3 индекс таймсерии, а третьей свече соответствует 1 индекс таймсерии?

Вдумчиво прочтя описание свечных моделей утренняя звезда и вечерняя звезда, вы, наверняка, задались вопросом о том, как определить, что тело первой свечи модели достаточно большое, а тело второй свечи модели достаточно маленькое, чтобы признать модель именно той, за которую она “себя выдает”. Большая и маленькая, простите, это сколько в “граммах”?

Предлагаю следующий подход. Мы берем некую выборку последних свечей в количестве depth “штук”. Определяем “средний арифметический размер тела”. Так вот, большое тело – это то тело, отношение которого к среднему телу дает коэффициент, больший или равный некого заданного коэффициента k1 (при этом k1 должен быть заведомо больше 1). Соответственно, маленькое тело – это то тело, отношение которого к среднему телу дает коэффициент, меньший или равный некого заданного коэффициента k2 (при этом k2 должен быть заведомо меньше 1). Задав эти самые коэффициенты k1 и k2, реализуем только что сказанное в коде:

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

  • Проверка на “вечернюю звезду”
  • Проверка на “утреннюю звезду”

В условиях наличия свечных моделей утренней и вечерней звезды существует проверка на нисходящий и восходящий тренд (сравнение angle_k с заданным параметром angle). Выше было отмечено, падающий и растущий рынки мы будем определять исходя из направления трендовой прямой, проходящей через ценовые бары с индексами от некоторой, заданной параметром depth глубины до текущего бара. Параметры этой трендовой прямой мы условились определять методом наименьших квадратов. Напишем соответствующую процедуру:

Теперь получим параметры трендовой линии по методу наименьших квадратов. Параметры будем хранить в массиве k, размерность которого будет равна 2, при этом k[0] содержит угловой коэффициент прямой, а k[1] – действительное число, определяющее смещение прямой относительно оси y (в нашем случае в роли оси у-цена финансового инструмента)

В целях удобства (работа с большими числами) переменная angle_k связана с расчетным угловым коэффициентом трендовой линии k[0] посредством предопределенной переменной Point (pазмер пункта текущего инструмента в валюте котировки):

А ведь неплохо было бы сделать так, чтобы мы могли увидеть на ценовом графике эту саму трендовую линию, параметры которой вычислили методом наименьших квадратов. Здесь мы перейдем на ступень выше в освоении MQL4 и “победим” графические объекты для советника на МТ4. Давайте напишем процедуру, которая будет строить на графике произвольную прямую, проходящую через две заданные точки. Эта прямая может иметь произвольный цвет, стиль и толщину линии, т.е. эти, как и другие параметры процедуры, мы будем задавать:

Чтобы нарисовать трендовую линию, параметры которой мы получили, вызовем процедуру рисования трендовой линии, например, с такими параметрами:

где ticket – это тикет номер открытого ордера, а ink – цвет трендовой линии. При этом линия сплошная (STYLE_SOLID) и имеет удвоенную толщину (2).

Далее необходимо написать функцию, которая будет отыскивать на истории заданной глубины предыдущий локальный экстремум (минимум или максимум):

Как видите, для нахождения локальных минимумов и максимумов используется довольно популярный индикатор ZigZag, включенный в стандартный “комплект поставки” терминала MT4. Данный индикатор относится к категории индикаторов – “перерисовщиков”, но данное обстоятельство все равно не будет нам сильно мешать, если написать советник по японским свечным моделям утренняя и вечерняя звезда. Чтобы отыскать, например, предыдущий локальный минимум, следует обратиться к вышеуказанной функции local_extremum вот так:

где 200 предельная глубина поиска, а 2 определяет, что ищем именно локальный минимум.

Локальный максимум, соответственно, ищем вот таким вызовом функции:

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

Теперь давайте реализуем в коде введенное нами правило Мартингейл, кстати, оно также относится к правилам управления деньгами торгового счета:

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

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

  • Во-первых, это параметр tp. Выше мы определили, что уровень профита (в пунктах) можно задавать самостоятельно. Так, при tp больше 0 за профит в пунктах принимается значение tp, т.е. оптимизируем советник по параметру tp, например, в диапазоне от 100 до 1000 пунктов с шагом 10 пунктов (пятизначные котировки). Если же tp равно 0, то советник сам будет управлять уровнем тейк профита, рассчитывая его для каждой открываемой позиции по “хитрому алгоритму” с использованием уровней Фибоначчи, о чем я подробно написал выше.
  • Во-вторых, в случае с “автоматическим” уровнем тейк профита (tp=0) оптимизации подлежит параметр fibo_level, определяющий именно тот уровень Фибоначчи, который будем являться уровнем тейк профита. Т.е. у нас есть одномерный массив fibo[]= <0.236, 0.382, 0.5, 0.618, 1.0, 1.618, 2.618, 4.236>(кстати, этот массив вы можете расширить, включив в него и другие фибо уровни), а параметр fibo_level определяет индекс элемента массива fibo, который и применяется в расчете тейк профита:

Для длинных позиций (покупки по модели утренняя звезда) уровень тейк профита определяется из выражения: c2.low+(local_max-c2.low)*fibo[fibo_level].
Для коротких позиций (продажи по модели вечерняя звезда) уровень тейк профита определяется из выражения: c2.high-(c2.high-local_min)*fibo[fibo_level]

Очевидно, если советник будет работать на откатах, то уровень Фибоначчи следует “искать” где-то в пределах 0.236 – 0.618 (т.е. для нашего массива fibo оптимизация по fibo_level от 0 до 3 с шагом 1), если же будем “ловить” разворот, то, вероятно, уровень Фибоначчи следует “искать” за пределами 0.618 (т.е. для нашего массива fibo оптимизация по fibo_level от 3 до 7 с шагом 1).

Советник для МТ4 по свечным моделям написали, с параметрами определились. Осталось только оптимизировать параметры и тестировать на истории. А это будем делать в следующий раз.

И вы знаете, у меня, честно говоря, есть предчувствие, что ничего хорошего из этой затеи не выйдет.

Как написать советника форекс

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

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

Но перед тем как узнать, как написать советник форекс, вам нужно определиться и с не менее важными вопросами.

Стратегия

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

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

Определите валютные пары, на которые будет распространяться ваша стратегия, после этого проанализируйте все котировки по валюте за несколько лет. После этого подберите и настройте индикаторы.

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

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

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

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

Программирование и тестирование

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

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

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

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

Именно на этом этапе работы вы сможете определить все преимущества и недостатки проделанной работы, выбрать оптимальные валютные пары и увидите конкретные результаты.

После тестирования составьте список багов и устраните их, отправив на доработку к программисту.

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

После этого можете переходить на реальный счет и торговать малыми депозитами.

Писать советник самому или использовать готовые модели?

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

А вот стоит ли вообще иметь советник или нет, никто вам ответить не сможет, все зависит только от вас и ваших умений управлять роботом.

Ведь даже самый убыточный робот в умелых руках может приносить хорошую и стабильную прибыль.

Написать советник

Есть программы-конструкторы — не пользовался, но думаю — мусор. Даже в ME есть подобие конструктора.

Программировать учиться не просто, если даже в экселе формулы не используете.

Я вот более или менее разобрался с азами после работы с фрилансерами — приходилось вникать в ошибки в коде, особенно при арбитраже.

Главным толчком было то, что по моему большому ТЗ я не смог найти исполнителя на ТЗ (советник) — стал сам ковырять более глубоко программирование, чему очень рад.

Написать просто советник проще чем научиться программированию. Достаточно взять работающий более-менее подходящий под стратегию советник из статьи или CodeBase, разобраться как он работает и модифицировать под свою стратегию.

Научиться программированию сложно и долго — от полугода и более, в зависимости от способностей и начальной подготовки.

После этого написать реально работающий и зарабатывающий советник становится совсем сложно и оч долго. Сейчас как раз начинаю новый проект, где от старого кода практически вообще ничего не остается, да и от стратегии есть только тестовые наработки. Оценка сроков — где-то не менее полугода. Реально получится наверное дольше — по закону Мерфи: всякая работа занимает времени в 2-3 раза больше, чем изначально планировалось.)

Сначала ознакомься а построением блок схем алгоритмов на бейсике.

во вторых- надо изучить технические индикаторы в МТ4 — https://docs.mql4.com/ru/indicators/ima

как они пишутся, что там у них первым идем, вторым, — пример iMA ( NULL ,0,13,8, MODE_SMMA , PRICE_MEDIAN ,i)

какой параметр на что влияет и чем является в индикаторе.

в третьих- возьми советник MACDsample, он есть на МТ4.

и начинай изучать этот код. Где там вводная часть, где индикаторы , где условия получения сигналов,

где сделка открывается, где там тейк профит, где стоп лосс.

И как сделки закрываются.

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

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

Брокеры Форекса, дающие бонусы:
MQL ПРОГРАММИРОВАНИЕ. КАК САМОМУ НАПИСАТЬ ФОРЕКС СОВЕТНИК