В файле CStroke.mqh находится класс CStroke. Файл Stroke.mq5 - это эксперт с примером применения класса CStroke.
Для работы класса требуется разрешить DLL.
Росчерк выполняется при нажатой правой кнопке мыши, завершением росчерка является отпускание кнопки. При завершении росчерка на экране появляется надпись желтого цвета с информацией о выполненном росчерке (или ничего не появляется, если росчерк не определен).
Для подтверждения росчерка (выполнения связанной с ним команды) надо провести мышку вертикально вверх на 20 пикселей, после этого цвет надписи изменится на красный, затем мышку нужно провести вниз на 20 пикселей от начальной точки (то есть всего не менее 40 пикселей вниз), после этого выполнится команда и надпись станет зеленой, через пол секунды надпись исчезнет.
Для отмены росчерка нужно провести мышку горизонтально влево или вправо.
Если щелкнуть правой кнопкой мыши на графике (нажать и отпустить не перемещая мышку), то, как обычно, откроется контекстное меню. Иногда контекстное меню ошибочно открывается по завершению росчерка, в этом случае надо щелкнуть левой кнопкой мыши в любом месте графике, а потом выполнить завершающие движения мышки (горизонтальное для отмены или вертикальные для подтверждения).
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 не может использоваться, но может использоваться росчерк из несколько движений туда-сюда, например, направо-налево, или три раза: направо-налево-направо и т.д. количество движений росчерка не ограничено.
Длинна отдельный линий не имеет значения. Важно именно чередование направлений. Таким образом такой росчерк:

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

Оба эти росчерка состоят из движений: вправо, вверх, влево, вниз.
Так же они идентичны окружности, если начинать рисовать ее с левой нижней точки. При рисовании окружности важно рисовать ее не очень мелкого размера. Так и с любыми другими формами - нет необходимости выводить линии строго вертикально или горизонтально, достаточно увеличить размер фигуры и можно будет рисовать ее с естественными плавными формами, изгибы большого радиуса будут определяться как прямолинейное движение.
Кодирование росчерка (для передачи первым параметром в метод AddStroke()) выполняется четырьмя буквами: R - движение вправо, L - влево, U - вверх, D - вниз. Росчерк показанный выше кодируется следующим образом: RULD.
Если вызвать метод ShowStroke(true), то в комментарии графика будет отображаться код выполненного росчерка. Это поможет для создания новых росчерков.
Файл Stroke.mq5 - это эксперт с примером, может определять следующие росчерки:
Martin increasing distance
Мартингейл: при убытке каждая последующая сделка в серии открывается с учётом уровня безубытка
iMA ZigZag
Торговая стратегий по индикатору iMA (Moving Average, MA) и пользовательскому ZigZag
iMA iBands
Торговая система по индикаторам iMA (Moving Average, MA), iBands (Bollinger Bands, Bands) и OHLC
VR Watch List and Linker Lite MT 5
Синхронное изменение торгового инструмента во всех графиках