English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
Está chegando o novo MetaTrader 5 e MQL5

Está chegando o novo MetaTrader 5 e MQL5

MetaTrader 5Exemplos | 4 dezembro 2013, 12:31
5 529 2
Yuriy Zaytsev
Yuriy Zaytsev

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.

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!

Lembranças,
Yuriy Zaytsev

Skype: yurazyuraz
yzh@mail.ru

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/1

Últimos Comentários | Ir para discussão (2)
Rogerio Figurelli
Rogerio Figurelli | 19 dez 2013 em 01:03

Aviso aos navegantes: apesar do título aparentar a chegada do MT5 novo agora, pela data recente de publicação em português, a data do artigo original em inglês é de 17 de dezembro de 2009.

Desta forma, o conteúdo mostra o que era de mais avançado na época, antes da real entrada do MT5, e hoje, na verdade, ele está bem mais avançado que o apresentado naquela data.

Uma referência em português, bem mais recente (original de junho de 2012), está no artigo https://www.mql5.com/pt/articles/384 (MetaTrader 5 - Mais do que você imagina!). 

[Excluído] | 23 dez 2013 em 12:08
Attached source code insets in HTML code are now completely translated into Portuguese for your convenience.
Caminhe em novos trilhos: Personalize indicadores no MQL5 Caminhe em novos trilhos: Personalize indicadores no MQL5
Vou agora listar todas as possibilidades novas e recursos do novo terminal e linguagem. Elas são várias, e algumas novidades valem a discussão em um artigo separado. Além disso, não há códigos aqui escritos com programação orientada ao objeto, é um tópico muito importante para ser simplesmente mencionado em um contexto como vantagens adicionais para os desenvolvedores. Neste artigo vamos considerar os indicadores, sua estrutura, desenho, tipos e seus detalhes de programação em comparação com o MQL4. Espero que este artigo seja útil tanto para desenvolvedores iniciantes quanto para experientes, talvez alguns deles encontrem algo novo.
Padrões de projeto no MQL5 (Parte 2): Padrões estruturais Padrões de projeto no MQL5 (Parte 2): Padrões estruturais
Neste artigo, continuaremos a estudar os padrões de projeto que permitem aos desenvolvedores criar aplicativos expansíveis e confiáveis não apenas no MQL5, mas também em outras linguagens de programação. Desta vez, falaremos sobre outro tipo: modelos estruturais. Aprenderemos a projetar sistemas usando as classes disponíveis para formar estruturas maiores.
MQL5: Crie o seu próprio indicador MQL5: Crie o seu próprio indicador
O que é um indicador? É um conjunto de valores calculados que deseja-se que sejam exibidos em uma tela de forma conveniente. Os conjuntos de valores são representados em programas como arrays. Deste modo, a criação de um indicador significa escrever um algorítimo que manuseia algumas séries (séries de preço) e registra os resultados do manuseamento para outras séries (valores de indicador). Descrevendo a criação do Force Index, o autor mostra como escrever indicadores no MQL5.
Criação de um Expert Advisor simples em várias moedas usando MQL5 (Parte 4): Média móvel triangular — Sinais do indicador Criação de um Expert Advisor simples em várias moedas usando MQL5 (Parte 4): Média móvel triangular — Sinais do indicador
Neste artigo, por EA multimoeda, entendemos um robô investidor, ou um robô de negociação, que pode negociar (abrir/fechar ordens, gerenciar ordens, por exemplo, do tipo trailing stop-loss e trailing profit) mais de um par de moedas em um gráfico. Desta vez, usaremos apenas um indicador, em particular a média móvel triangular em um ou mais timeframes, ou escalas de tempo.