Обсуждение статьи "Набор инструментов для ручной разметки графиков и торговли (Часть III). Оптимизация и новые инструменты"

 

Опубликована статья Набор инструментов для ручной разметки графиков и торговли (Часть III). Оптимизация и новые инструменты:

Развитие темы рисования графических объектов на графиках с помощью сочетаниях клавиш. В библиотеку добавлены новые инструменты, в частности, прямая, которая идёт по произвольным вершинам, и набор прямоугольников, позволяющих оценить как уровень, так и время разворота. Также показана возможность оптимизации кода для улучшения быстродействия. Пример реализации переписан в виде индикатора, что даёт возможность устанавливать Shortcuts рядом с другими программами для торговли. Уровень владения кодом — чуть выше начинающего.

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

Концы линий D1 Концы линий Н4

Видно, что левый край линии, точно совпадающий с экстремумом на периоде D1, на периоде 4 часа смещен влево и с экстремумом не совпадает. Это — вполне очевидный эффект, связанный с тем, что экстремум дня не обязан приходиться на его начало. И если хочется большей точности, то при рисовании вручную можно нарисовать линию приблизительно, затем "спуститься" на младшие таймы и подправить концы.

Вот только это хорошо для одного, ну, двух графиков... А если их 20? Или 100? Это раздражает...

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

Автор: Oleh Fedorov

 

При компиляции английской версии могут возникнуть некоторые проблемы. В файле "Utilites.mqh" переводчик меняет символ пробела на другой.

Поэтому, если при компиляции вы видите ошибку "Declaration without type", сделайте двойной щелчок на строке с этим сообщением - IDE откроет эту строку в редакторе. Затем нужно выделить ОДИН неправильный символ (как обычно, он будет находиться между основным кодом и комментариями) и нажать Ctrl+H или выбрать Search -> Replace в главном меню.

В верхней строке (Поиск) IDE вставит "неправильный" символ, а в нижней строке (Заменить) нужно будет вставить простой пробел. Затем нажмите кнопку "Заменить все"...

Ну и последней операцией будет Compile(Ctrl+F7).

Как исправить ошибки ""

И я постараюсь отправить правильный файл модератору как можно скорее.

 

Здравствуйте. Отличный инструмент Вы создали. Я тоже ручник и искал такой.

Но у меня обычно открыто несколько  окон (таймфреймов) одного инструмента на нескольких мониторах.

А есть ли возможность у MQL сделать, чтобы  на всех открытых окнах инструмента появлялись эти 
нарисованные объекты? Например, как это сделано платформе Tigertrade и других.

Например, нарисовал на 5 м, и этот же уровень появляется в окне с 1м. 

Удивительно, что нет таких инструментов в  MQL


Спасибо Вам огромное

 
okskreen61 #:

Здравствуйте. Отличный инструмент Вы создали. Я тоже ручник и искал такой.

Но у меня обычно открыто несколько  окон (таймфреймов) одного инструмента на нескольких мониторах.

А есть ли возможность у MQL сделать, чтобы  на всех открытых окнах инструмента появлялись эти 
нарисованные объекты? Например, как это сделано платформе Tigertrade и других.

Например, нарисовал на 5 м, и этот же уровень появляется в окне с 1м. 

Удивительно, что нет таких инструментов в  MQL


Спасибо Вам огромное

Простейший способ - сделать шаблон. Кроме того, где-то в кодобазе видел что-то подобное (то ли в виде индикатора, то ли скрипта)... 
 

Файл "Utilites.mqh" содержит 101 ошибку, из которых следующие:

'New_Bar_First_Start' - объявление без типа Utilites.mqh 80 5

'mode' - ожидается запятая Utilites.mqh 80 25

'New_Bar_First_Start' - объявление без типа Utilites.mqh 1491 26

'mode' - ожидается запятая Utilites.mqh 1491 46

'mode' - необъявленный идентификатор Utilites.mqh 1511 18

'Is_Select_On_Create' - незаявленный идентификатор Graphics.mqh 307 45

'Print_Warning_Messages' - незаявленный идентификатор Graphics.mqh 249 8

'Print_Warning_Messages' - незаявленный идентификатор Graphics.mqh 361 8

'CMouse' не является классом, структурой или объединением Graphics.mqh 940 26

'Bar' - необъявленный идентификатор Graphics.mqh 940 34

'Bar' - ожидается некоторый оператор Graphics.mqh 940 34

'(' - ожидается точка с запятой Graphics.mqh 940 37

')' - ожидается Graphics.mqh 940 38

'allPrefixes' - необъявленный идентификатор Graphics.mqh 944 37

'[' - требуется массив Graphics.mqh 944 48

'CMouse' не является классом, структурой или объединением Graphics.mqh 959 6

'Below' - необъявленный идентификатор Graphics.mqh 959 14

'Ниже' - ожидается некоторый оператор Graphics.mqh 959 14

'(' - несбалансированная левая скобка Graphics.mqh 959 5

')' - ожидается выражение Graphics.mqh 959 20

')' - неожиданная лексема Graphics.mqh 959 21

недопустимое 'else' без совпадающего 'if' Graphics.mqh 968 3

переменная 'tmp_price' не используется Graphics.mqh 950 3

переменная 'tmp_time' не используется Graphics.mqh 954 3

'Simple_Vertical_Style' - необъявленный идентификатор Graphics.mqh 420 26

'Simple_Vertical_Width' - необъявленный идентификатор Graphics.mqh 422 26

'Simple_Horizontal_Style' - незаявленный идентификатор Graphics.mqh 430 28

'Simple_Horizontal_Width' - необъявленный идентификатор Graphics.mqh 432 28

'CMouse' не является классом, структурой или объединением Graphics.mqh 434 14

'Window' - необъявленный идентификатор Graphics.mqh 434 22

'Window' - ожидается некоторый оператор Graphics.mqh 434 22

')' - неожиданная лексема Graphics.mqh 434 29

'Print_Warning_Messages' - необъявленный идентификатор Graphics.mqh 439 10

'DEBUG_MESSAGE_PREFIX' - необъявленный идентификатор Graphics.mqh 442 15

'allPrefixes' - необъявленный идентификатор Graphics.mqh 451 9

'[' - обязательный массив Graphics.mqh 451 20

'Print_Warning_Messages' - необъявленный идентификатор Graphics.mqh 462 10

'DEBUG_MESSAGE_PREFIX' - необъявленный идентификатор Graphics.mqh 464 15

'CMouse' не является классом, структурой или объединением Graphics.mqh 469 39

'Price' - необъявленный идентификатор Graphics.mqh 469 47

'Price' - ожидается некоторый оператор Graphics.mqh 469 47

'(' - ожидается знак двоеточия ':' Graphics.mqh 469 52

')' - ожидается выражение Graphics.mqh 469 53

':' - неожиданная лексема Graphics.mqh 469 55

'(' - ожидаемое выражение Graphics.mqh 469 52

'=' - ожидается операнд Graphics.mqh 469 24

выражение не имеет эффекта Graphics.mqh 469 57

'CMouse' не является классом, структурой или объединением Graphics.mqh 470 37

'Time' - необъявленный идентификатор Graphics.mqh 470 45

'Time' - ожидается какой-то оператор Graphics.mqh 470 45

'(' - ожидается знак двоеточия ':' Graphics.mqh 470 49

')' - ожидается выражение Graphics.mqh 470 50

':' - неожиданная лексема Graphics.mqh 470 52

'(' - ожидаемое выражение Graphics.mqh 470 49

'=' - ожидаемый операнд Graphics.mqh 470 23

выражение не имеет эффекта Graphics.mqh 470 54

возможно использование неинициализированной переменной 'Current_Object_Time' Graphics.mqh 478 5

возможно использование неинициализированной переменной 'Current_Object_Price' Graphics.mqh 479 5

'Print_Warning_Messages' - необъявленный идентификатор Graphics.mqh 516 8

'DEBUG_MESSAGE_PREFIX' - необъявленный идентификатор Graphics.mqh 518 13

'DEBUG_MESSAGE_PREFIX' - незаявленный идентификатор Graphics.mqh 573 11

'DEBUG_MESSAGE_PREFIX' - незаявленный идентификатор Graphics.mqh 610 11

'allPrefixes' - необъявленный идентификатор Graphics.mqh 672 37

'[' - обязательный массив Graphics.mqh 672 48

'allPrefixes' - необъявленный идентификатор Graphics.mqh 674 39

'[' - обязательный массив Graphics.mqh 674 50

неявное преобразование из 'unknown' в 'string' Graphics.mqh 674 39

'CMouse' не является классом, структурой или объединением Graphics.mqh 676 19

'Bar' - необъявленный идентификатор Graphics.mqh 676 27

'Bar' - ожидается некоторый оператор Graphics.mqh 676 27

'(' - ожидается точка с запятой Graphics.mqh 676 30

')' - ожидается выражение Graphics.mqh 676 31

'CMouse' не является классом, структурой или объединением Graphics.mqh 681 6

'Below' - необъявленный идентификатор Graphics.mqh 681 14

'Ниже' - ожидается некоторый оператор Graphics.mqh 681 14

'(' - несбалансированная левая скобка Graphics.mqh 681 5

')' - ожидается выражение Graphics.mqh 681 20

')' - неожиданная лексема Graphics.mqh 681 21

недопустимое 'else' без совпадающего 'if' Graphics.mqh 687 3

переменная 'levels_descriptions' не используется Graphics.mqh 666 10

переменная 'time1' не используется Graphics.mqh 675 12

переменная 'time2' не используется Graphics.mqh 675 19

'Pitchfork_Shiff_Colour' - необъявленный идентификатор Graphics.mqh 771 23

'Pitchfork_Shiff_Width' - незаявленный идентификатор Graphics.mqh 772 23

'Pitchfork_Shiff_Style' - незаявленный идентификатор Graphics.mqh 773 23

'Pitchfork_Reverce_Colour' - незаявленный идентификатор Graphics.mqh 779 25

'Pitchfork_Reverce_Width' - незаявленный идентификатор Graphics.mqh 780 25

'Pitchfork_Reverce_Style' - незаявленный идентификатор Graphics.mqh 781 25

'Pitchfork_Main_Colour' - незаявленный идентификатор Graphics.mqh 787 25

'Pitchfork_Main_Width' - незаявленный идентификатор Graphics.mqh 788 25

'Pitchfork_Main_Style' - незаявленный идентификатор Graphics.mqh 789 25

'CMouse' не является классом, структурой или объединением Graphics.mqh 824 26

'Price' - необъявленный идентификатор Graphics.mqh 824 34

'Price' - ожидается некоторый оператор Graphics.mqh 824 34

'(' - ожидается точка с запятой Graphics.mqh 824 39

')' - ожидается выражение Graphics.mqh 824 40

'CMouse' не является классом, структурой или объединением Graphics.mqh 825 21

'Bar' - необъявленный идентификатор Graphics.mqh 825 29

'Bar' - ожидается некоторый оператор Graphics.mqh 825 29

'(' - ожидается точка с запятой Graphics.mqh 825 32

')' - ожидается выражение Graphics.mqh 825 33

'CMouse' не является классом, структурой или объединением Graphics.mqh 829 6

'Below' - необъявленный идентификатор Graphics.mqh 829 14

'Ниже' - ожидается какой-то оператор Graphics.mqh 829 14

'(' - несбалансированная левая скобка Graphics.mqh 829 5

')' - ожидается выражение Graphics.mqh 829 20

')' - неожиданная лексема Graphics.mqh 829 21

недопустимое 'else' без совпадающего 'if' Graphics.mqh 833 3

переменная 'base' не используется Graphics.mqh 827 19

'Short_Level_Length_In_Pixels' - необъявленный идентификатор Graphics.mqh 1050 6

'Short_Level_Length_Pix' - незаявленный идентификатор Graphics.mqh 1053 20

101 ошибка, 11 предупреждений 101 12


 
К сожалению, этот код представляет собой единое целое, поэтому вы не сможете использовать файл Utilites.mqh, если предварительно не свяжете GlobalVariables.mqh и Mouse.mqh. Это можно сделать непосредственно в файле Utilites.mqh или в коде, который будет использовать необходимые классы. Имейте в виду, что входные переменные также включены в файл GlobalVariables.mqh. Если вы не хотите видеть эти параметры во время работы кода, вы можете убрать перед ними слово "input", но сами переменные должны остаться.