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


MQL4 УРОК 13 – Ваш первый советник

Ваш первый советникMQL4 УРОК 13 – Ваш первый советник

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

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

Если Вы вдруг устанете, решите выпить чашечку чая или взять небольшой отпуск, то Вам придётся рассмотреть одну из следующих опций:
Можно кого-нибудь нанять, чтобы он следил за терминалом и звонил Вам каждые 5 минут, чтобы рассказать, что происходит. Если этот человек профессионал, то Вы будете тратить на него всю свою прибыль. А если он новичок, то Вы потратите на него весь свой капитал.
Вторая опция – автоматизировать свою торговлю.
Именно для этого нужны советники - они же торговые эксперты - они же механические торговые системы (МТС).

Советник – это программа, написанная на MQL4 (ведь мы изучаем MQL4, верно?), которая использует Ваши любимые индикаторы и торговые методы для автоматизации Ваших торгов.
Он покупает, продаёт и модифицирует ордера за Вас.

Сегодня мы создадим нашего первого торгового советника.
Начнём!

Первые два шага:

Шаг 1:

Если Вы ещё не открыли свой MetaEditor, то пора бы это сделать. Затем выберите Файл->Создать (или просто нажмите CTRL+N).
Появится помощник (как при создании первого индикатора).
На этот раз надо выбрать пункт "Советник”.

MQL4 УРОК 13 – Ваш первый советник
Рис. 1 – Помощник. 1й шаг.
Шаг 2:

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

1 - Имя. Название Вашего советника. Мы назовём его My_first_EA.
2 - Автор. Имя автора. Введите своё имя.
3 - Ссылка. Ссылка на Ваш сайт или e-mail.
4 - Параметры:
Это список внешних (extern) параметров. Это те параметры, которые пользователь сможет менять из окошка настроек советника.
Для добавления нового параметра нажмите кнопку "Добавить”. Нажатие этой кнопки приведёт к появлению новой записи в списке внешних переменных. Каждая переменная имеет три поля:
Имя: двойной щелчок по этому полю позволит Вам задать имя (идентификатор) переменной.
Тип: двойной щелчок по этому полю позволит Вам задать тип переменной.
Начальное значение: двойной щелчок по этому полю позволит Вам задать начальное значение переменной.
Последнее поле является опциональным, что означает, что его можно оставить пустым.

В нашем случае, мы добавим три переменные:

MQL4 УРОК 13 – Ваш первый советник
Рис. 2 – Помощник. 2й шаг.

Теперь нажмите кнопку "Finish”. MetaEditor перенесёт Вас к коду, подготовленному помощником и сохранит его в файл My_first_EA.mq4 в папке MetaTrader4\experts.\

Замечание: торговых советников надо класть в папку MetaTrader4\experts, а индикаторы – в папку MetaTrader4\experts\indicators, иначе они не будут работать.

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

//+------------------------------------------------------------------+
//| My_First_EA.mq4 |
//| Kirill |
//| StockProgrammer@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Kirill"
#property link "StockProgrammer@mail.ru"

//---- input parameters
extern double TakeProfit=350.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
 {
//----

//----
 return(0);
 }
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
 {
//----

//----
 return(0);
 }
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
 {
//----

//----
 return(0);
 }
//+------------------------------------------------------------------+

Теперь добавим свой код:

//+------------------------------------------------------------------+
//| My_First_EA.mq4 |
//| Kirill |
//| StockProgrammer@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Kirill"
#property link "StockProgrammer@mail.ru"

//---- input parameters
extern double TakeProfit=350.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
 {
//----

//----
 return(0);
 }
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
 {
//----

//----
 return(0);
 }

int Crossed (double line1 , double line2)
{
 static int last_direction = 0;
 static int current_direction = 0;
 static bool initial=true;

 if(line1>line2)current_direction = 1; //up
 if(line1<line2)current_direction = 2; //down

 if(current_direction != last_direction) //changed
 {
 last_direction = current_direction;
 if(initial == false)
 return(current_direction);
 else
 initial = false;
 }

 else
 {
 return (0);
 }

}

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+

int start()
{
//----
 int cnt, ticket, total;
 double shortEma, longEma;

 if(Bars<100)
 {
 Print("bars less than 100");
 return(0);
 }

 if(TakeProfit<10)
 {
 Print("TakeProfit less than 10");
 return(0); // check TakeProfit
 }

 shortEma = iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
 longEma = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);

 int isCrossed = Crossed (shortEma,longEma);

 total = OrdersTotal();
 for(cnt=0;cnt<total;cnt++)
 {
 OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
 if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
 {
 if(OrderType()==OP_BUY) // long position is opened
 {
 // should it be closed?
 if(isCrossed == 2)
 {
 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
 }

 // check for trailing stop
 else if(TrailingStop>0)
 {
 if(Bid-OrderOpenPrice()>Point*TrailingStop)
 {
 if(OrderStopLoss()<Bid-Point*TrailingStop)
 {
 OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
 }
 }
 }
 }

 else // go to short position
 {
 // should it be closed?
 if(isCrossed == 1)
 {
 OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
 }

 // check for trailing stop
 else if(TrailingStop>0)
 {
 if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
 {
 if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
 {
 OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
 }
 }
 }
 }
 }
 }

 total = OrdersTotal();
 if(total < 1)
 {
 if(isCrossed == 1)
 {
 ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green);
 if(ticket>0)
 {
 if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
 Print("BUY order opened : ",OrderOpenPrice());
 }
 else Print("Error opening BUY order : ",GetLastError());
 return(0);
 }

 if(isCrossed == 2)
 {
 ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,
 Bid-TakeProfit*Point,"My EA",12345,0,Red);
 if(ticket>0)
 {
 if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
 Print("SELL order opened : ",OrderOpenPrice());
 }
 else Print("Error opening SELL order : ",GetLastError());
 return(0);

 }
 } 

 return(0);
}

//+------------------------------------------------------------------+

Можно скопировать код прямо отсюда.
Скомпилируйте эксперта, например, нажав F5.

Напуганы?

Не бойтесь этих 170 строчек кода, что Вы видите выше. Скоро мы их разберём строчка-за-строчкой. Это очень просто.

Протестируйте МТС:

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

Замечание: эта МТС предназначена для работы с EUR/USD на ТФ H4. 

Протестировать эксперта можно двумя способами:

1 – Online-торговля

При online-торговле результаты теста точнее, но надо потратить дни или даже месяцы, чтобы выяснить прибыльна или нет данная МТС.
Для начала, необходимо разрешить советнику автоматизировать Вашу торговлю.
В MetaTrader4 выберите Сервис -> Настройки (или просто нажмите CTRL+O).
Во вкладке Советники разрешите следующие опции:

Включить советники

Разрешить советнику торговать

И нажмите кнопку "OK”.

MQL4 УРОК 13 – Ваш первый советник
Рис.3 – Разрешаем автоторговлю.

Теперь найдите своего эксперта в Навигаторе в разделе Советники и перетащите его на график EUR/USD H4.

MQL4 УРОК 13 – Ваш первый советник
Рис.4 – Советник включён.

2 – тестер стратегий

Второй метод тестирования МТС – это тестер стратегий. Он менее аккуратен, но зато занимает намного меньше времени. Об этом методе мы подробно поговорим позже.
Сейчас просто вызовем его окошко, нажав F6.

Выберете параметры как на рисунке:

MQL4 УРОК 13 – Ваш первый советник
Рис.5 – Настройки тестера.

Нажмите кнопку Старт.
Далее Вас интересует вкладка отчёт.



Категория: Уроки по MQL4 | Добавил: Profit (14.03.2014)
Просмотров: 2794 | Теги: mql учебник, mql скачать, язык mql, индикатор mql, mql 5, советник mql, mql 4, программирование mql, mql уроки, mql | Рейтинг: 0.0/0

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

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

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

Торговые сессии
Котировки Sell/Buy
vps для форекс
Журнал
FOREX MAGAZINE
Форекс рассылки
FxMail.ru
Рекомендуемые Форекс рассылки
Форма входа
Статистика
vps для форекс сервер для форекс
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Торговля на финансовых рынках сопряжена с риском. Все материалы носят исключительно ознакомительный характер. Администрация сайта не несет ответственности за принимаемые Вами решения.
Copyright Profit © 2010 - 2018

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