Assista a como baixar robôs de negociação gratuitos

Roteiro interessante?
Então poste um link sobre isto -
deixe que outros avaliem

Você gostou do roteiro? Experimente no terminal MetaTrader 5

Bibliotecas

Painel modular simples e muito facil de usar. - biblioteca para MetaTrader 5

RAFAEL FLORIANI PINTO

Visualizações:
730
Classificação:
votos: 3
Publicado:
2020.01.27 17:16
\MQL5\Include\\MQL5\Include\Trade\

Introdução

Muitas pessoas precisam de diferentes paineis para cada tipo de EA, ou seja, pode se tornar cansativo fazer um novo para cada aplicação. Portanto decidi fazer um painel modular que se adapta ao tamanho do gráfico em uma proporção desejada pelo usuário.

O usário pode colocar quantos botões e texto quiser, com poucas linhas de código.

Junto com o arquivo do painel, irei deixar um exemplo de um painel de negociação sem verificações, portanto caso queira usa-lo em conta real, é necessario deixa-lo mais robusto.

O resultado do painel feito com essa classe de painel adaptável ficou assim:


Delaração do objeto da classe

  • Declarando o objeto:

#include<ClassControlPainel.mqh>
CControlPainel ObjName(0,0.2,0.30,5,5,CORNER_LEFT_LOWER)

Primeiro parâmetro: Numero do gráfico a ser colocado os objetos, "0" equivale ao grafico em que a EA,Script foi selecionada.

Segundo parâmetro: Proporção da largura do objeto em relação ao gráfico, se o grafico tem 800px de largura o objeto terá 160px (Para 0.2)

Terceiro parâmetro: Proporção da altura do objeto em relação ao gráfico, se o grafico tem 600px de altura o objeto terá 180px (Para 0.3)

Quarto, Quinto , Sexto e Setimo parâmetros são: Margem para x (em pixel), Margem para y (em pixel), o Canto do painel e o Nome do painel.

  • Criando o Painel

ObjName.CreatePanel()

Não contém parâmetros.

 FOTO DO PAINEL NO CANTO INFERIOR ESQUERDO AINDA SEM OBJETOS



Declaração dos objetos do painel

A função para criar um botão pode receber até 5 argumentos.

1° Texto exibido pelo botão

2° Cor da fonte

3° Cor do fundo

4° Cor da borda

5° Tipo da borda

O objeto também pode ser declarado sem os argumentos, ficando com as caracteristicas padrões.

ObjName.CreateButton("ButtonOne",clrWhite,clrRed,clrWhite,BORDER_RAISED);

FOTO DO PAINEL NO CANTO INFERIOR ESQUERDO COM UM BOTÃO

A função criar texto pode recebe até quatro argumentos:

1° Mensagem exibida.

2° Cor da fonte.

3° Tamanho da fonte.

4° Bloqueio de edição.

O objeto também pode ser declarado sem os argumentos, ficando com as caracteristicas padrões.

ObjName.CreateText("TextOne",clrWhite,10,true);

FOTO DO PAINEL NO CANTO INFERIOR ESQUERDO COM UM BOTÃO E UM TEXTO

Outro exemplos

CControlPainel ObjName(0,0.2,0.30,5,5,CORNER_LEFT_LOWER);
ObjName.CreatePanel();
ObjName.CreateButton("ButtonOne");
ObjName.CreateText("TextOne");
ObjName.CreateText("TextTwo");
ObjName.CreateButton("ButtonTwo");

Caso o painel tenha ficado pequeno ou grande, é so mudar a proproção no segundo e no terceiro parametro da declaração do objeto da classe.

CControlPainel ObjName(0,0.3,0.4,5,5,CORNER_LEFT_LOWER);
ObjName.CreatePanel();
ObjName.CreateButton("ButtonOne");
ObjName.CreateText("TextOne");
ObjName.CreateText("TextTwo");
ObjName.CreateButton("ButtonTwo");

CControlPainel ObjName(0,0.25,0.7,5,5,CORNER_RIGHT_LOWER);
ObjName.CreatePanel();
ObjName.CreateButton("ButtonOne");
ObjName.CreateText("TextOne");
ObjName.CreateText("TextTwo");
ObjName.CreateButton("ButtonTwo");



Modificação do painel

Para moficiar designer do painel é disponibilizado a função

ObjName.PanelModifyInteger(ENUM_PANEL_INTEGER,long Value)

A descrição do ENUM_PANEL_INTEGER estará no final do artigo.

CControlPainel ObjName(0,0.25,0.4,5,5,CORNER_LEFT_UPPER);
ObjName.CreatePanel();
ObjName.CreateButton("ButtonOne");
ObjName.CreateButton("ButtonTwo");

ObjName.PanelModifyInteger(PANEL_BGCOLOR,clrGray);
ObjName.PanelModifyInteger(PANEL_BORDERCOLOR,clrBlack);
ObjName.PanelModifyInteger(PANEL_BORDERTYPE,BORDER_SUNKEN);
ObjName.PanelModifyInteger(PANEL_CORNERPOSITION,CORNER_LEFT_UPPER);



Modificação dos objetos

Os botões alem de serem modificaveis na declação, também é possivel modificalos por meios dessas funções:

ObjName.ButtonModifyInteger(int ButtonNumber,ENUM_BUTTON_INTEGER,long Value);
ObjName.ButtonModifyString(int ButtonNumber,ENUM_BUTTON_STRING,string Value);

Primeiro parâmetro: Numero do botão, em ordem de declaração, 1 para o primeiro, 2 para o segundo e assim por diante.

Segundo parâmetro: Enum descrito no final do artigo.

Terceiro parâmetro: Valor a ser modificado.

CControlPainel ObjName(0,0.4,0.6,5,5,CORNER_RIGHT_UPPER);
ObjName.CreatePanel();
ObjName.CreateButton("Button (1)");
ObjName.CreateButton("Button (2) - KEEP DEFAULT VALUE");
ObjName.CreateButton("Button (3)");
//BUTTON ONE
ObjName.ButtonModifyInteger(1,BUTTON_BGCOLOR,clrGreen);
ObjName.ButtonModifyInteger(1,BUTTON_FONTCOLOR,clrRed);
ObjName.ButtonModifyInteger(1,BUTTON_FONTSIZE,10);
ObjName.ButtonModifyString(1,BUTTON_TEXTSHOW,"Button one after modify");
//BUTTON TRHEE
ObjName.ButtonModifyInteger(3,BUTTON_BORDERCOLOR,clrBlue);
ObjName.ButtonModifyInteger(3,BUTTON_BORDERTYPE,BORDER_SUNKEN);
ObjName.ButtonModifyInteger(3,BUTTON_FONTCOLOR,clrBlack);
ObjName.ButtonModifyInteger(3,BUTTON_FONTSIZE,15);
ObjName.ButtonModifyString(3,BUTTON_TEXTSHOW,"Button trhee after modify");

Os textos alem de serem modificaveis na declação, também é possivel modificalos por meios dessas funções:

ObjName.TextModifyInteger(int TextNumber,ENUM_TEXT_INTEGER,long Value);
ObjName.TextModifyString(int TextNumber,ENUM_TEXT_STRING,string Value);

Primeiro parâmetro: Numero do text, em ordem de declaração, 1 para o primeiro, 2 para o segundo e assim por diante.

Segundo parâmetro: Enum descrito no final do artigo.

Terceiro parâmetro: Valor a ser modificado.

CControlPainel ObjName(0,0.25,0.45,5,5,CORNER_LEFT_UPPER);
ObjName.CreatePanel();
ObjName.CreateButton("Button (1)");
ObjName.CreateText("Text (1) - KEEL DEFAULT VALUE");
ObjName.CreateText("Text (2)");

ObjName.TextModifyString(2,TEXT_TEXTSHOW,"Text (2) after modify");
ObjName.TextModifyInteger(2,TEXT_FONTSIZE,15);
ObjName.TextModifyInteger(2,TEXT_FONTCOLOR,clrGreen);

Funções para receber informações

bool ObjName.ButtonGetState(int Button Number);
string ObjName.TextGetString(int Text Number);

A primeira função retorna se o botão está ou não clicado.

A segunda função retorna o que está no text. (Usado para texts editáveis).


Outras funções

void ObjName.PanelSetFont(string FONTNAME);
void ObjName.ButtonSetState(int Button Number,bool Button State);
void ObjName.DeletePanel();

A primeira função muda a fonte do painel e recebe como argumento o nome da fonte.

A segunda função muda o estado do botão (true ou false) recebe como argumento o numero do botão e o estado a ser colocado.

A terceira função serve para deletar o painel e todos os seus objetos.


ENUM_PANEL_INTEGER Property Value 
PANEL_BGCOLOR Panel background color  Color
PANEL_BORDERCOLOR Panel border color  Color
PANEL_BORDERTYPE Panel border type  ENUM_BORDER_TYPE
PANEL_CORNERPOSITION Panel base corner  ENUM_BASE_CORNER
ENUM_BUTTON_INTEGER Property Value
BUTTON_BGCOLOR Button background color  Color
BUTTON_BORDERCOLOR Button border color  Color
BUTTON_BORDERTYPE Button border type  ENUM_BORDER_TYPE
BUTTON_FONTSIZE Button fontsize  int
BUTTON_FONTCOLOR Button fontcolor  Color
ENUM_BUTTON_STRING Property Value 
BUTTON_TEXTSHOW Button mensage  string


ENUM_TEXT_INTEGER Property Value
TEXT_FONT_SIZE Text font size int
TEXT_FONTCOLOR Text font color Color
TEXT_READONLY Text readonly bool
ENUM_TEXT_STRING Property Value 
TEXT_TEXTSHOW Text mensage  string


    Classe para ajuste de preço, para qualquer ativo, inclusive miniindice e minidolar. Classe para ajuste de preço, para qualquer ativo, inclusive miniindice e minidolar.

    Algumas de minhas EA's trabalham com proporção para determinar o preço, portanto muitas vezes, esse preço não está de acordo com o padão exigido pelo ativo. Além disso, para quem opera no mercado forex e B3 sofre problemas para criar uma EA que seja compatível com os dois mercados sem precisar fazer adptações.

    Regressão linear e ajuste polinomial de qualquer grau por mínimos quadrados. Regressão linear e ajuste polinomial de qualquer grau por mínimos quadrados.

    O ajuste polinomial por minimos quadrados tem como objetivo encontrar uma equação polinomial de grau N, que mais se aproxima de um conjunto de pontos tabelados. Caso o grau N seja igual a 1, esse polinomio será uma reta, podendo caracterizar esse ajuste como regressão linear.

    Accumulation/Distribution Accumulation/Distribution

    O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.

    Accelerator Oscillator (AC) Accelerator Oscillator (AC)

    O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.