Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

Библиотеки

CStroke - библиотека для MetaTrader 5

Dmitry Fedoseev

Просмотров:
485
Рейтинг:
голосов: 10
Опубликован:
2019.01.11 14:26
Обновлен:
2019.01.11 14:29
\MQL5\Include\\MQL5\Experts\

В файле CStroke.mqh находится класс CStroke. Файл Stroke.mq5 - это эксперт с примером применения класса CStroke.

Для работы класса требуется разрешить DLL.

Использование росчерков

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

Для подтверждения росчерка (выполнения связанной с ним команды) надо провести мышку вертикально вверх на 20 пикселей, после этого цвет надписи изменится на красный, затем мышку нужно провести вниз на 20 пикселей от начальной точки (то есть всего не менее 40 пикселей вниз), после этого выполнится команда и надпись станет зеленой, через пол секунды надпись исчезнет.

Для отмены росчерка нужно провести мышку горизонтально влево или вправо. 

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

Использование класса CStroke

1. Подключить файл с классом:

#include <CStroke.mqh>

2. Создать объект:

CStroke stroke;

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

CStroke stroke(clrYellow,clrRed,clrLime);

По умолчанию установлены цвет clrYellow,clrRed,clrLime. Первый цвет - цвет информационной надписи после завершения росчерка, второй цвет - цвет надписи после первого подтверждающего движения вверх, третий - цвет подтверждения выполнения команды.

3. В OnInit() активизировать таймер:

EventSetMillisecondTimer(1);

4. В OnTimer() вызвать метод Timer():

stroke.Timer(); 

5. В OnChartEvent() вызвать метод Event():

int strokeEvent=stroke.Event(id,lparam,dparam,sparam);  

Метод возвращает -1 или идентификатор росчерка.

6. В OnInit() добавить росчерки, для этого используется метод AddStroke(),  в него передается три параметра: код росчерка, его идентификатор (любое число кроме -1), текст сообщения. Пример:     

stroke.AddStroke("L",1,"Налево?");

Если при нажатой правой кнопке мыши провести ее вправо и отпустить кнопку, на экране появится надпись "Налево?". Если после этого провести мышкой горизонтально, команда будет отменена и метод Event(), вызываемый из OnChartEvent() вернет -1. Если провести мышкой вертикально вверх и вниз, произойдет подтверждение и метод Event() вернет идентификатор, который был указан вторым параметром при вызове метода AddStroke(). Разумеется, методом AddStroke() может быть установлено разное количество росчерков.

Росчерки

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

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

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

Наклонных линий не существует, то есть росчерк типа знака Z не может использоваться, но может использоваться росчерк из несколько движений туда-сюда, например, направо-налево, или три раза: направо-налево-направо и т.д. количество движений росчерка не ограничено.

Длинна отдельный линий не имеет значения. Важно именно чередование направлений. Таким образом такой росчерк:

росчерк-1

будет идентичен такому росчерку:

росчерк-2

Оба эти росчерка состоят из движений: вправо, вверх, влево, вниз. 

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

Кодирование росчерка (для передачи первым параметром в метод AddStroke()) выполняется  четырьмя буквами: R - движение вправо, L - влево, U - вверх, D - вниз. Росчерк показанный выше кодируется следующим образом: RULD.

Если вызвать метод ShowStroke(true), то в комментарии графика будет отображаться код выполненного росчерка. Это поможет для создания новых росчерков.

Примеры

Файл Stroke.mq5 - это эксперт с примером, может определять следующие росчерки:

  • L - налево;
  • R - направо;       
  • U - вверх;
  • D - вниз;   
  • LR - налево-направо;
  • RL - направо-налево;       
  • UD - вверх-вниз;
  • DU - вниз-вверх;     
  • LRL - налево-направо-налево;
  • RLR - направо-налево-направо;       
  • UDU - вверх-вниз-вверх;
  • DUD - вниз-вверх-вниз;
  • LU - налево-вверх;
  • LD - налево-вниз;       
  • RU - направо-вверх;
  • RD - направо-вниз;
  • UL - вверх-влево;
  • UR - вверх-вправо;       
  • DL - вниз-влево;
  • DR - вниз-вправо;
  • URD - арка слева-направо;
  • ULD - арка справа-налево;   
  • DRU - желоб слева-направо;
  • DLU - желоб справа-налево;    
  • RDL - парус вправо сверху-вниз;
  • RUL - парус вправо снизу-вверх;
  • LDR - парус влево сверху-вниз;
  • LUR - парус влево снизу-вверх;  
  • RULDR - слева-направо с петлей сверху;  
  • RDLUR - слева-направо с петлей внизу;  
  • RULD - слева-направо, петля и вниз;     
  • LDRDL - S сверху-вниз;       
  • RULUR - S снизу-вверх;  
  • RDLRDL - 3 сверху-вниз;       
  • RULRUL - 3 снизу-вверх;    
  • URDLU - круг по часовой стрелке, начало слева; 
  • URDLURDLU - круг по часовой стрелке, начало слева, два оборота;    
  • URDLURDLURDLU - круг по часовой стрелке, начало слева, три оборота;   
  • DRD - вниз-вправо-вниз;              
  • DLD - вниз-влево-вниз;     
  • RDR - вправо-вниз-вправо;              
  • RUR - вправо-вверх-вправо;    
  • LDL - влево-вниз-влево.
В примере, после определения росчерка, открывается окно с соответствующим текстом.

Martin increasing distance Martin increasing distance

Мартингейл: при убытке каждая последующая сделка в серии открывается с учётом уровня безубытка

iMA ZigZag iMA ZigZag

Торговая стратегий по индикатору iMA (Moving Average, MA) и пользовательскому ZigZag

iMA iBands iMA iBands

Торговая система по индикаторам iMA (Moving Average, MA), iBands (Bollinger Bands, Bands) и OHLC

VR Watch List and Linker Lite MT 5 VR Watch List and Linker Lite MT 5

Синхронное изменение торгового инструмента во всех графиках