Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
Painel modular simples e muito facil de usar. - biblioteca para MetaTrader 5
- Visualizações:
- 9849
- Avaliação:
- Publicado:
- 2020.01.27 17:16
- Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
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 |
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.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.
EA simples para a execução de martingale
Candle countdownUm relógio que mostra a contagem regressiva para o fechamento do candle vigente.