Discussão do artigo "Conjunto de ferramentas para marcação manual de gráficos e negociação (Parte III). Otimização e novas ferramentas"

 

Novo artigo Conjunto de ferramentas para marcação manual de gráficos e negociação (Parte III). Otimização e novas ferramentas foi publicado:

Desenvolveremos o tema do desenho de objetos gráficos em gráficos usando atalhos de teclado. Foram acrescentadas novas ferramentas à biblioteca, em particular uma linha reta, que atravessa máximos arbitrários, e um conjunto de retângulos que permitem estimar tanto o nível quanto o tempo de reversão. Também veremos a possibilidade de otimizar o código para melhorar o desempenho. O exemplo de implementação será reescrito como um indicador, o que tornará possível definir Shortcuts junto com outros programas de negociação. O nível de proficiência do código está um pouco acima do nível de iniciante.

A primeira característica está relacionada ao efeito de deslocamento das linhas nos tamframes inferiores. Se desenharmos linhas da maneira usual, quando alternarmos entre "janelas de tempo", será desenhado algo assim:

Extremidades da linha D1 Extremidades da linha H4

Pode-se ver que a borda esquerda da linha, que coincide exatamente com o extremo no período D1, é deslocada para a esquerda no período de 4 horas e não coincide com o extremo. Isto é um efeito bastante óbvio, porque o extremo do dia não precisa coincidir com seu início. Se quisermos mais precisão, ao desenhar à mão, podemos traçar uma linha aproximadamente, depois "descermos" para os timeframes inferiores e corrigir as extremidades.

Isso é bom para um, mas para dois gráficos... E se forem 20? Ou 100? Isso é irritante...

E, como a função de desenho automático já existe, por que não deixá-la fazer essa tarefa na hora de criar cada objeto?

Autor: Oleh Fedorov

 

O arquivo "Utilites.mqh" apresenta 101 erros, sendo os seguintes erros:

'New_Bar_First_Start' - declaration without type Utilites.mqh 80 5

'mode' - comma expected Utilites.mqh 80 25

'New_Bar_First_Start' - declaration without type Utilites.mqh 1491 26

'mode' - comma expected Utilites.mqh 1491 46

'mode' - undeclared identifier Utilites.mqh 1511 18

'Is_Select_On_Create' - undeclared identifier Graphics.mqh 307 45

'Print_Warning_Messages' - undeclared identifier Graphics.mqh 249 8

'Print_Warning_Messages' - undeclared identifier Graphics.mqh 361 8

'CMouse' is not a class, struct or union Graphics.mqh 940 26

'Bar' - undeclared identifier Graphics.mqh 940 34

'Bar' - some operator expected Graphics.mqh 940 34

'(' - semicolon expected Graphics.mqh 940 37

')' - expression expected Graphics.mqh 940 38

'allPrefixes' - undeclared identifier Graphics.mqh 944 37

'[' - array required Graphics.mqh 944 48

'CMouse' is not a class, struct or union Graphics.mqh 959 6

'Below' - undeclared identifier Graphics.mqh 959 14

'Below' - some operator expected Graphics.mqh 959 14

'(' - unbalanced left parenthesis Graphics.mqh 959 5

')' - expression expected Graphics.mqh 959 20

')' - unexpected token Graphics.mqh 959 21

illegal 'else' without matching 'if' Graphics.mqh 968 3

variable 'tmp_price' not used Graphics.mqh 950 3

variable 'tmp_time' not used Graphics.mqh 954 3

'Simple_Vertical_Style' - undeclared identifier Graphics.mqh 420 26

'Simple_Vertical_Width' - undeclared identifier Graphics.mqh 422 26

'Simple_Horizontal_Style' - undeclared identifier Graphics.mqh 430 28

'Simple_Horizontal_Width' - undeclared identifier Graphics.mqh 432 28

'CMouse' is not a class, struct or union Graphics.mqh 434 14

'Window' - undeclared identifier Graphics.mqh 434 22

'Window' - some operator expected Graphics.mqh 434 22

')' - unexpected token Graphics.mqh 434 29

'Print_Warning_Messages' - undeclared identifier Graphics.mqh 439 10

'DEBUG_MESSAGE_PREFIX' - undeclared identifier Graphics.mqh 442 15

'allPrefixes' - undeclared identifier Graphics.mqh 451 9

'[' - array required Graphics.mqh 451 20

'Print_Warning_Messages' - undeclared identifier Graphics.mqh 462 10

'DEBUG_MESSAGE_PREFIX' - undeclared identifier Graphics.mqh 464 15

'CMouse' is not a class, struct or union Graphics.mqh 469 39

'Price' - undeclared identifier Graphics.mqh 469 47

'Price' - some operator expected Graphics.mqh 469 47

'(' - ':' colon sign expected Graphics.mqh 469 52

')' - expression expected Graphics.mqh 469 53

':' - unexpected token Graphics.mqh 469 55

'(' - expression expected Graphics.mqh 469 52

'=' - operand expected Graphics.mqh 469 24

expression has no effect Graphics.mqh 469 57

'CMouse' is not a class, struct or union Graphics.mqh 470 37

'Time' - undeclared identifier Graphics.mqh 470 45

'Time' - some operator expected Graphics.mqh 470 45

'(' - ':' colon sign expected Graphics.mqh 470 49

')' - expression expected Graphics.mqh 470 50

':' - unexpected token Graphics.mqh 470 52

'(' - expression expected Graphics.mqh 470 49

'=' - operand expected Graphics.mqh 470 23

expression has no effect Graphics.mqh 470 54

possible use of uninitialized variable 'Current_Object_Time' Graphics.mqh 478 5

possible use of uninitialized variable 'Current_Object_Price' Graphics.mqh 479 5

'Print_Warning_Messages' - undeclared identifier Graphics.mqh 516 8

'DEBUG_MESSAGE_PREFIX' - undeclared identifier Graphics.mqh 518 13

'DEBUG_MESSAGE_PREFIX' - undeclared identifier Graphics.mqh 573 11

'DEBUG_MESSAGE_PREFIX' - undeclared identifier Graphics.mqh 610 11

'allPrefixes' - undeclared identifier Graphics.mqh 672 37

'[' - array required Graphics.mqh 672 48

'allPrefixes' - undeclared identifier Graphics.mqh 674 39

'[' - array required Graphics.mqh 674 50

implicit conversion from 'unknown' to 'string' Graphics.mqh 674 39

'CMouse' is not a class, struct or union Graphics.mqh 676 19

'Bar' - undeclared identifier Graphics.mqh 676 27

'Bar' - some operator expected Graphics.mqh 676 27

'(' - semicolon expected Graphics.mqh 676 30

')' - expression expected Graphics.mqh 676 31

'CMouse' is not a class, struct or union Graphics.mqh 681 6

'Below' - undeclared identifier Graphics.mqh 681 14

'Below' - some operator expected Graphics.mqh 681 14

'(' - unbalanced left parenthesis Graphics.mqh 681 5

')' - expression expected Graphics.mqh 681 20

')' - unexpected token Graphics.mqh 681 21

illegal 'else' without matching 'if' Graphics.mqh 687 3

variable 'levels_descriptions' not used Graphics.mqh 666 10

variable 'time1' not used Graphics.mqh 675 12

variable 'time2' not used Graphics.mqh 675 19

'Pitchfork_Shiff_Color' - undeclared identifier Graphics.mqh 771 23

'Pitchfork_Shiff_Width' - undeclared identifier Graphics.mqh 772 23

'Pitchfork_Shiff_Style' - undeclared identifier Graphics.mqh 773 23

'Pitchfork_Reverce_Color' - undeclared identifier Graphics.mqh 779 25

'Pitchfork_Reverce_Width' - undeclared identifier Graphics.mqh 780 25

'Pitchfork_Reverce_Style' - undeclared identifier Graphics.mqh 781 25

'Pitchfork_Main_Color' - undeclared identifier Graphics.mqh 787 25

'Pitchfork_Main_Width' - undeclared identifier Graphics.mqh 788 25

'Pitchfork_Main_Style' - undeclared identifier Graphics.mqh 789 25

'CMouse' is not a class, struct or union Graphics.mqh 824 26

'Price' - undeclared identifier Graphics.mqh 824 34

'Price' - some operator expected Graphics.mqh 824 34

'(' - semicolon expected Graphics.mqh 824 39

')' - expression expected Graphics.mqh 824 40

'CMouse' is not a class, struct or union Graphics.mqh 825 21

'Bar' - undeclared identifier Graphics.mqh 825 29

'Bar' - some operator expected Graphics.mqh 825 29

'(' - semicolon expected Graphics.mqh 825 32

')' - expression expected Graphics.mqh 825 33

'CMouse' is not a class, struct or union Graphics.mqh 829 6

'Below' - undeclared identifier Graphics.mqh 829 14

'Below' - some operator expected Graphics.mqh 829 14

'(' - unbalanced left parenthesis Graphics.mqh 829 5

')' - expression expected Graphics.mqh 829 20

')' - unexpected token Graphics.mqh 829 21

illegal 'else' without matching 'if' Graphics.mqh 833 3

variable 'base' not used Graphics.mqh 827 19

'Short_Level_Length_In_Pixels' - undeclared identifier Graphics.mqh 1050 6

'Short_Level_Length_Pix' - undeclared identifier Graphics.mqh 1053 20

101 errors, 11 warnings 101 12


 
Este código, infelizmente, é uma única unidade, por isso você não poderá usar o arquivo Utilites.mqh, a menos que você conecte previamente GlobalVariables.mqh e Mouse.mqh. Isso pode ser feito diretamente no arquivo Utilites.mqh ou no código que utilizará as classes necessárias. Tenha em mente que as variáveis de entrada (input) também estão incluídas no GlobalVariables.mqh. Se você não deseja ver esses parâmetros enquanto seu código está em execução, pode remover a palavra "input" antes deles, mas as próprias variáveis devem permanecer.