Você está na página 1de 5

Eu darei uma breve descrição de alguns momentos.

Fig. 1. Não é Photoshop - é o MQL5.

Quase tudo que interessou a mim e a outros no MQL5 e MT5 é


implementado em um nível muito alto.
A mudança básica no MQL5 é a aparência da programação orientada a objetos. Eu não me
aprofundarei sobre a POO - é somente que programadores experientes obtém mais
possibilidades. Para aqueles que gostaram do MQL4 e não sabem sobre a POO, os
desenvolvedores deixaram a possibilidade de escrever em MQL5 utilizando o estilo do
MQL4 sem POO. A diferença está na funcionalidade que deve ser aprendida novamente.
Vamos pegar um exemplo simples: as variáveis de preço de compra e de venda não
existem mais. A fim de obter os valores de venda, a função abaixo deve ser solicitada:

SymbolInfoDouble(Symbol(),SYMBOL_BID);

Não há Low[0] ou iLow ( Symbol(), PERIOD_D1, 0 ), frequentemente usados, mas você


pode reconstruí-los facilmente. As novas funções com os dados do histórico dão
possibilidades de leitura dentro do histórico, desde um ponto até o outro, de uma certa
barra até uma outra certa barra ou de um tempo selecionado até outro tempo
selecionado. A leitura prévia da série visível de dados foi carregada na memória. Você
precisando ou não, ela foi lida; e se você precisava ler M1, ele foi lido desde 1999 (caso
havia histórico disponível) até a data, hora e minuto atuais.

Agora apenas a faixa necessária pode ser lida, o que consideravelmente economiza
tempo e memória.
MqlRates rates_arrayG[];

Int Bar=30; // ler apenas 30 barras a partir de zero

iCopBar=CopyRates(Symbol(),PERIOD_M1,0,Bar,rates_arrayG);

Este recurso economiza tanto tempo tanto como memória.

Tal mudança na funcionalidade não assusta. Nós simplesmente precisamos de tempo para
aprender novas funções-analógicas.

Algumas inovações funcionais que eu esperei do MQL:

▪ OnTimer() - função para processar os eventos temporizadores (agora você não


precisa fazer loop do Expert Advisor para fazê-lo funcionar com uma certa
periodicidade independente do ponto de entrada);
▪ OnTrade() - função para processar eventos de negociação (trade) - abertura e
fechamento de posição de trade ou mudança de volume;
▪ OnChartEvent() - processamento de eventos pelo mouse ou teclado.

Vamos nos concentrar um pouco neles.

A função OnTimer() é solicitada se o temporizador é pré-inicializado na função de pré-


definição OnInit (processador de eventos de inicialização do EA).

Exemplo:

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int OnInit()

EventSetTimer(1); //cada segundo irá se referir ao OnTimer()

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void OnDeinit()

EventKillTimer(); // o cancelamento do evento timer deve ser feito


na saída

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

void OnTimer()
{

MqlDateTime str1;

TimeGMT(str1); // nova função para ver as horas

Comment(str1.hour

,str1.min

,str1.sec

,str1.day

,str1.mon

,str1.year

,str1.day_of_year

,OrdersTotal()

,PositionsTotal()

);

Portanto, o controle pode ser obtido não apenas no recibo de ponto como era antes, mas
também do temporizador, que permite escrever programas gerenciáveis em tempo real.
Com esta possibilidade, sistemas mais elaborados podem ser criados.

Eu gostei da função OnTrade(). Esta função é solicitada no momento em que qualquer um


dos seguintes eventos de trade é ativado: emissão de pedidos, ativação de StopLoss ou
TakeProfit, alteração dos níveis de StopLoss ou TakeProfit, emissão/exclusão de um
pedido pendente.

Agora é muito mais fácil monitorar eventos conectados com operações de trade. Agora
não há necessidade de ciclos para verificar o estado dos pedidos em pontos ou barras.
Tais ciclos são utilizados no MQL4, os quais consideravelmente reduzem o desempenho do
programa, que é tão importante na otimização.

Vamos nos concentrar na função OnChartEvent() . A solicitação da função é realizada


para vários eventos. Eu não cheguei a testar cada um deles, mas a lista é impressionante:

▪ CHARTEVENT_KEYDOWN — evento de pressionar botão;


▪ CHARTEVENT_OBJECT_CLICK — evento de um clique de mouse em um objeto
gráfico pertencente a um gráfico;
▪ CHARTEVENT_OBJECT_DRAG — evento de movimentação de um objeto gráfico,
realizada por um mouse;
▪ CHARTEVENT_OBJECT_ENDEDIT — evento de final de edição de texto;
▪ CHARTEVENT_CUSTOM+n — identificador de um evento personalizado;
▪ CHARTEVENT_CUSTOM_LAST — o último.

A possibilidade de gerenciar negociações e gráficos em um novo nível


funcional - isto é o que os desenvolvedores prometeram.
Novos objetos gráficos, botões e campos de entrada apareceram. O gerenciamento de
tabela ficou fantástico, é possível até inserir figuras de arquivos - esta opção oferece
muitas possibilidades para aqueles que gostam de um design especial. Isto não é
Photoshop, é o resultado das possibilidades do MQL5 e MetaTrader 5. Dentro dos novos
recursos, há um para que você possa criar seus próprios botões e campos de entrada,
adicionando, por exemplo, um botão para fechar todos os pedidos abertos, ou o botão de
compra e venda rápida com parâmetros de interrupção e tomada pré-definidos.

Fig. 2. Objetos gráficos permitem criar um painel informacional

Há um fator desagradável: os objetos não podem ser criados a partir de indicadores. Isto
foi feito intencionalmente para agilizar o desempenho dos indicadores. A boa notícia é
que eles entendem isso e, provavelmente, implementarão a possibilidade de iniciar
vários Expert Advisors em uma tabela. Assim, nós seremos capazes de criar indicadores-
EA com objetos e sem negociação. Tais indicadores podem ser criados agora - eles
funcionarão como indicadores. Agora, a tarefa é resolvida iniciando um EA de negociação
em uma tabela e os objetos de criação do EA em uma segunda tabela, e então
implementando a troca entre elas.

Por exemplo, eu consegui transformar meu indicador de progresso de MQL4 para MQL5
em poucas horas. A maioria do tempo foi gasta para aprender a função e depurar. No
MQL5, o código ficou menor.
E quanto ao terminal em si, eu fiquei impressionado pelo número de períodos de tempo.
Na minha opinião, há até o excesso. Porém, a abundância de períodos de tempo pode ser
útil para alguns traders. Bem, agora há apenas uma etapa para a criação de um período
de tempo definido livremente. Todos os dados são armazenados agora apenas como um
período de tempo em minutos, portanto não há problemas com a sincronização dos
diferentes períodos de tempo - esta é uma importante solução tecnológica.

Agora não há arquivos para diferentes períodos de tempo no catálogo


HISTÓRICO
Fig. 3. O histórico inteiro é armazenado como um arquivo único.

Outra agradável introdução é que agora podemos limpar registros.

Fig. 4. Usar um botão para limpar o diário do EA, de fato exclui todas as mensagens desnecessárias

Esta é apenas uma breve resenha do MetaTrader 5. Eu não posso descrever todos os novos
recursos do sistema por um período tão curto de tempo.os testes começaram em
09.09.2009. Esta é uma data simbólica, e tenho certeza que será um número de sorte.
Alguns dias passaram-se desde que eu obtive a versão beta do terminal MetaTrader 5 e
MQL5. Eu ainda não consegui testar todos os seus recursos, mas já estou impressionado.

Os mágicos da MetaQuotes criaram um produto incrível. Eu sou um desenvolvedor com 25


anos de experiência, vi o começo de muitos projetos e posso afirmar isso com segurança!

Você também pode gostar