O que há de novo no MetaTrader 5?

Histórico de atualizações das plataformas desktop, móvel e web

15 julho 2016
MetaTrader 5 build 1375: canal de negociações e acesso a ticks durante os testes

Terminal

  1. Foi adicionado um canal de negociações no livro de ofertas.




    O que é um canal de negociações
    No canal de negociações, é exibida em tempo real uma lista de todas as operações realizadas na bolsa de valores. Para cada transação são mostrados o momento da sua execução, a direção (comprar ou vender), o preço e o volume. Para facilitar a análise visual, cada direção de transação é exibida com uma cor diferente: azul - comprar, rosa - venda, verde - direção não definida. O volume das transações é, adicionalmente, apresentado como um histograma.

    Como o canal de negociações ajuda a entender o mercado
    O canal de negociações vai permitir analisar os mercados mais detalhadamente. No canal, a direção da operação indica ao trader quem foi o iniciador da sua execução: o comprador ou vendedor. O volume de negociações executadas irá permitir compreender o comportamento dos participantes no mercado, isto é, a sua atividade e competitividade. Enquanto, a velocidade de negociação e o seu volume em determinados níveis de preços permitirá tirar conclusões sobre a importância destes níveis.

    Como usar os dados
    Além da análise visual da tabela, você também pode fazer o upload dos dados das transações para um arquivo CSV. Eles podem ser estudados imediatamente em qualquer outro aplicativo, por exemplo, no MS Excel. No arquivo, todos os dados são separados por um ponto e vírgula:
    Time,Bid,Ask,Last,Volume,Type
    2016.07.06 16:05:04.305,89360,89370,89370,4,Buy
    2016.07.06 16:05:04.422,89360,89370,89370,2,Buy
    2016.07.06 16:05:04.422,89360,89370,89370,10,Buy
    2016.07.06 16:05:04.669,89360,89370,89370,1,Buy
    2016.07.06 16:05:05.968,89360,89370,89360,7,Sell
    Para salvar dados num arquivo, abra o menu de atalho:



    Para determinar com precisão a direção das operações, a plataforma de negociação da corretora deve ser atualizada para a versão 1375.
  2. Foi significativamente reduzido o tempo entre a chegada de um novo tick/alteração do livro de ofertas e a chamada do ponto de entrada OnTick e OnCalculate. Também foi reduzido entre a chegada do evento de alteração do estado de negociação e a chamada do ponte de entrada OnTrade e OnTradeTransaction. Assim, os programas MQL5 agora reagirão mais rapidamente aos eventos do mercado.
  3. As solicitações de negociação agora são enviadas mais rápido, ao usar a autenticação estendida com certificados SSL.
  4. Foi atualizada a tradução da interface do usuário em persa.
  5. Foi corrigida a exibição do comando de configuração SL/TP no menu de contexto do gráfico ao trabalhar no modo de cobertura.

Tester

  1. Foi adicionada a solicitação do histórico de ticks, durante o teste, usando a função CopyTicks. Anteriormente, essa função não estava funcionando no testador de estratégias.

    • No modo "Cada tick", a função retorna o histórico de ticks gerados. Você pode solicitar não mais de 128 000 dos últimos ticks.
    • No modo "Cada tick na base de ticks reais", a função devolve o histórico de ticks reais. A profundidade dos dados solicitados está restrita apenas pela disponibilidade desses dados. No entanto, tenha em mente que os últimos 128 000 ticks são armazenados na cache do testador de estratégias, adicionalmente, a solicitação destes dados será realizada com suficiente rapidez. Além disso, é possível solicitar um histórico mais profundo a partir do disco rígido, porém, a execução desse pedido levará muito mais tempo.
    • Nos modos "Apenas preços de abertura" e "OHLC em M1", a função ainda não vai funcionar, pois o histórico de ticks não se cria na realidade.

  2. Foi adicionado o suporte para tempo com exatidão de um milissegundo. Anteriormente, no testador de estratégias, um quantum era igual a um segundo.

    • Agora as funções EventSetMillisecondTimer e Sleep trabalham com mais precisão no testador de estratégias.
    • Além disso, melhorou a precisão de emissão de ticks durante o teste dos conselheiros multi-moedas. Anteriormente, ao pôr vários ticks num segundo (volume de ticks da barra minutos maior que 60), todos eles ficavam com o mesmo tempo. Ao testar os conselheiros mono-moeda, isto realmente não importa, porque os ticks são apenas transmitidos seqüencialmente para o conselheiro. No entanto, quando testamos em vários pares, é importante saber a partir de qual par o tick veio primeiro. Em versões anteriores, os ticks de cada símbolo eram passados para o conselheiro seqüencialmente: primeiro, todos os ticks por segundo para um símbolo e, em seguida, todos os ticks, de forma diferente. Agora, eles são enviados em milissegundos.

      Ao usar ticks reais para o teste, os milissegundos são tomados a partir dos dados fonte do tick. Quando os ticks são gerados, os milissegundos são definidos em conformidade com o volume de tics. Por exemplo, se 3 ticks cabem num segundo, o seu tempo em milissegundos será igual a 000, 333 e 666

  3. Nos modos "Abrir apenas preços" e "OHCL em 1M", a execução de ordens pendentes e de ordens SL/TP agora é realizada segundo os preços indicados nas ordens, e não pelo preço atual no momento da execução. O algoritmo de execução, segundo os preços de mercado, usado nos modos de precisão (cada tick e ticks reais), não é adequado para modos menos precisos. Em alguns modos, os ticks intermediários não são gerados, portanto, a diferença entre a ordem solicitada e o preço atual de mercado (Aberto ou OHLC) pode ser significativa. A execução de ordens, ao preço solicitado no modo, "Abrir apenas preços" e "OHLC em M1", fornece resultados de testes mais precisos.

  4. Foi adicionado o suporte para o teste em tempo real (avançado) no modo visual. Agora, para o bektest e o teste avançado, serão abertas duas janelas separadas para visualização do teste, o que permitirá que você compare comodamente os resultados do trabalho dos conselheiros em períodos diferentes.




    A janela de teste avançado só é aberta após a conclusão dos testes no período principal.

  5. Tester: No gráfico de teste, agora em vez do nível de margem, é exibida a carga do depósito, ela é calculada como a razão margem/capital (margin/equity).


  6. Foi corrigido o cálculo da comissão em porcentagens anuais.Ъ

  7. Foi corrigido o recálculo e a exibição do saldo no gráfico formado durante o teste.

MQL5

  1. Foi alterado o comportamento da função OrderSend, durante a colocação da ordem, modificação e cancelamento das ordens. As alterações apenas afetam as ordens enviadas para sistemas de negociação externos. Anteriormente, o controle da função OrderSend era devolvido após a colocação (processamento) bem sucedida da ordem no servidor da corretora. Agora o controle é retornado apenas depois que o servidor da corretora recebe uma notificação de um sistema de negociação externo dizendo que a ordem foi colocada com sucesso nesse sistema.

    Abaixo encontra-se uma representação esquemática do (seta vermelha) comportamento anterior e atual da função:




  2. Foi adicionado o campo retcode_external -código de erro no sistema de negociação exterior- para a estrutura do resultado de negociação MqlTradeResult. O uso e os tipos desses erros dependem da corretora e do sistema de negociação externo para o qual as operações são enviadas. Por exemplo, os valores de retcode_external preenchidos pela bosa de Moscou diferem dos retornado pela DGCX.

  3. Foram adicionadas as propriedades CHART_EXPERT_NAME e CHART_SCRIPT_NAME para a enumeração ENUM_CHART_PROPERTY_STRING. Agora, usando a função ChartGetString, é possível calcular os nomes do conselheiro e/ou script, anexados ao gráfico, definidos pelo parâmetro chart_id.

Signals

  1. Foi corrigido o erro, devido ao qual podia falhar a cópia da posição oposta (close by).
  2. Foi melhorada a comparação automática dos pares de moedas contendo RUB e RUR.

Mercado

  1. : Foi corrigida a classificação por categoria do produto.

MetaEditor

  1. Foi corrigida a configuração do foco, no campo do texto de substituição, ao abrir a caixa de diálogo de substituição.
  2. Foi corrigida substituição de texto em massa, ao pesquisar para cima, a partir da posição atual.


Documentação atualizada.


5 julho 2016
Plataforma web MetaTrader 5: lançamento oficial

Após 2 meses de testes públicos, anunciamos o lançamento oficial da versão web da plataforma multimercado MetaTrader 5. Ela permite negociar nos mercados financeiros através de qualquer navegador em qualquer sistema operacional. E, para isso, não é necessário instalar nenhum programa no computador, de fato, basta ter acesso à internet ou qualquer navegador web.

O aplicativo combina as vantagens chave da plataforma desktop (velocidade, faceta multimercado e características de negociação melhoradas) com a comodidade e o caráter multi-plataforma. A principal novidade da versão atualizada é o livro de ofertas para avaliar a profundidade do mercado, bem como a colocação num clique de ordens de mercado e pendentes.

A plataforma web permite realizar análise técnica e executar negociações da mesma forma como na versão desktop. No aplicativo, você tem à sua disposição:

  • sistemas de compensação e de cobertura de registro de posições,
  • 31 indicadores técnicos,
  • 24 objetos analíticos,
  • negociação em um clique e um conjunto completo de ordens de negociação,
  • uma interface em 41 idiomas.
13 maio 2016
MetaTrader 5 build 1340: transferência cômoda de certificados para terminais móveis e melhorias no testador

Terminal

  1. Agora os certificados, para se conectar no modo de alta segurança, podem ser comodamente transferidos a partir da versão desktop para os terminais móveis.

    A plataforma de negociação suporta uma autorização estendida, isto é, além de uma senha, a conta estará protegida por um certificado SSL especial. O certificado consta de um arquivo gerado para a conta no servidor de negociação. Este arquivo é único e na sua ausência é impossível ter acesso à conta.

    Anteriormente, quando você tinha de usar uma conta na MetaTrader 5 para iPhone/iPad ou Android, era solicitado e gerado, usando o terminal para PC, um certificado cujo arquivo era necessário transferir e instalar manualmente no seu dispositivo. Agora o certificado pode ser transferido comodamente.

    Como ele é transferido

    A transferência do certificado é realizada através do servidor de negociação:

    • Primeiro, o certificado é criptografado no terminal para PC, quer dizer, o titular da conta indica a senha com a qual o certificado será criptografado através do confiável algoritmo AES-256. Essa senha é conhecida apenas pelo usuário e não é enviada para o servidor.
    • Em seguida, o certificado criptografado é enviado para o servidor onde será armazenado, mas não por mais de uma hora, até ser recebido via terminal móvel.
    • Para obter um certificado, o usuário deve conectar-se à conta através de um terminal móvel. Depois de se conectar, é solicitada a importação do certificado. Para fazer isso, você deve especificar a senha com a qual foi criptografado no terminal desktop.

    O certificado é transferido de forma segura, mais concretamente, o servidor de negociação é usado apenas como um ponto de armazenamento intermediário, a criptografia ocorre no lado do cliente, a senha do certificado não é transmitida ou armazenada no servidor de negociação.

    Como transferir certificados
    Conecte-se à conta no terminal desktop e selecione "Transferir certificado" no seu menu de contexto:



    Indique a senha mestra para confirmar que ele pertence a você. Em seguida, defina uma senha com a qual o certificado será protegido antes de o enviar para o servidor. A senha deve ter não menos de 8 dígitos.

    Após o certificado ser enviado com sucesso para o servidor, abra o terminal móvel e conecte-se à conta. Ser-lhe-á solicitado que importe o certificado. Concorde e digite a senha indicada no terminal desktop.



    Você pode ver o certificado importado na seção "Sobre o programa — Certificados".
    Em breve serão lançados terminais móveis MetaTrader 5 atualizados para iPhone/iPad e Android com suporte para transferência de certificados.

Tester

  1. Foi alterado o algoritmo de funcionamento e execução das ordens pendentes e ordens SL/TP para testar de modo correto. Possibilidades estendidas para testar visualmente.

    O que mudou para os instrumentos financeiros
    No mercado real, no que se refere a instrumentos financeiros, tanto a construção de gráficos como o a ativação de ordens stop são realizadas segundo o último preço de transação (Last). A ativação de ordens limit é realizada segundo os preços Bid/Ask. Além disso, a execução de todos os tipos de ordens sempre é realizada segundo os preços atuais de mercado Bid/Ask. O testador de estratégias foi alterado para que esteja mais perto das condições reais:
      Foi Tornou-se
    Ativação Todos os tipos de ordens pendentes e ordens SL/TP segundo o Bid/Ask Ordens limit segundo o Bid/Ask
    Ordens stop-limit e SL/TP segundo o Last
    Execução Todos os tipos de ordens pendentes e ordens SL/TP segundo o preço na ordem anunciada Todos os tipos de ordens pendentes e ordens SL/TP segundo o Bid/Ask no momento de ativação

    Examinemos um exemplo no instrumento Si-6.16. Tendo os atuais preços Bid=72570, Ask=72572, Last=72552 colocamos a ordem Buy Stop com preço de ativação 72580. No fluxo de preços, obtemos uns novos preços:

    • Bid=72588
    • Ask=72590
    • Last=72580

    Nos instrumentos financeiros, o peço Last é o gatilho para a ativação de ordens stop. Por isso, a obtenção, no fluxo de preços, dum Last = 72 580 resultou na ativação das ordens Buy Stop. Anteriormente, o preço 72.580 era utilizado precisamente para a execução dessa ordem. Este comportamento era impróprio porque o preço Ask=72580, para a execução de operações de compra no mercado, não existia.


    No testador atualizado, usa-se o preço de compra atual Ask=72590, e a ordem Buy Stop executa-se exatamente por ele. Assim, no testador, um novo algoritmo de execução de transações reflete mais precisamente o mercado real. Ao usar o algoritmo antigo, a operação de negociação era realizada segundo um preço que não era de mercado, o que fazia com que os resultados do teste fossem imprecisos.

    O que mudou para instrumentos de mercado de balcão (OTC)
    Para os instrumentos OTC, o algoritmo de ativação continua a ser o mesmo: para todos os tipos de ordens pendentes e ordens SL/TP são utilizados os preços Bid e Ask. Foi alterado o modo de execução: anteriormente, realizava-se segundo o preço indicado na ordem, e agora usam-se os preços atuais do mercado Bid e Ask, no momento da ativação.

    O novo em testes visuais
    Agora, ao realizar o teste visual, são exibidas as linhas do preço máximo Ask e do preço mínimo Bid para cada barra. Neste gráfico é mais fácil testar conselheiros em instrumentos financeiros, adicionalmente, nele tanto a construção de barras como a ativação de ordens são realizadas segundo os preços Last, e a execução de ordens de mercado é feita segundo Bid e Ask.



    New option on the visual testing chart: navigation to a specified date. Double-click on the chart and enter the desired date and time. It is also possible to navigate to any order or trade: double-click on the appropriate trading operation on the Trade, History or Operations tab.
  2. Foi expandido o registro no diário do loading do histórico de preços e de ticks antes de iniciar o teste. Agora, no diário, ao finalizar o loading do histórico, será exibida uma janela com o volume de dados carregados e o tempo gasto durante o loading:
    2016.05.10 12:47:53    Core 1    5.10 Mb of history processed in 0:00.842
    2016.05.10 12:47:53    Core 1    GBPUSD: history synchronization completed [5225 Kb]

MQL5

  1. Foi corrigido o erro pelo qual, às vezes, a função CopyTicks retornava menos ticks do que era solicitado.
  2. Foi corrigido o erro ao gerar funções-modelo.
  3. Documentação atualizada.
  4. Correções de crash-logs.

A atualização estará disponível através do sistema LiveUpdate.

12 maio 2016
Plataforma web MetaTrader 5: a versão beta já está disponível para testes

Em resposta aos numerosos pedidos dos traders foi desenvolvida uma versão web da plataforma MetaTrader 5. O novo produto combina a comodidade e o caráter multi-plataforma com as vantagens da quinta versão para PC, isto é: velocidade, faceta multimercado e características de negociação melhoradas.

A plataforma web MetaTrader 5 agora está disponível no site da MQL5.community. Ela permite negociar nos mercados financeiros através de qualquer navegador em qualquer sistema operativo (Windows, Mac, Linux). E, para isso, não precisa de instalar nenhum programa adicional, de fato, basta ter acesso à internet.

Na versão beta, os traders têm imediatamente à sua disposição:

  • um sistema de cobertura de registro de posições
  • 30 indicadores técnicos,
  • 24 objetos analíticos,
  • um conjunto completo de ordens de negociação MetaTrader 5,
  • uma interface em 41 idiomas.
O lançamento da versão beta é destinado para fornecer testes públicos avançados e permitir os traders avaliarem os novos recursos.
22 abril 2016
MetaTrader 5 build 1325: negociação com cobertura e teste de ticks reais

Terminal

  1. Para ampliar as possibilidades dos retail traders que negociam no mercado Forex, à plataforma foi adicionada a cobertura, isto é, um segundo sistema de registro. Agora, segundo um instrumento, você pode ter várias posições, incluindo posições opostas. Isto permite implementar estratégias de negociação com o assim chamado “bloqueio”, dito de outro modo, se o preço estiver contra o trader, ele terá a possibilidade de abrir uma posição na direção oposta.

    O novo sistema de registro é análogo ao utilizado na MetaTrader 4, o que faz com que seja familiar para os traders. Além disso, eles poderão utilizar todas as vantagens da quinta versão da plataforma: execução de ordens usando várias transações (incluindo a parcial), o testador multi-moeda e multi-fio (multithread) com o apoio da rede de computação em nuvem MQL5 Cloud Network e muitas outras.

    Agora, você pode em uma conta negociar na bolsa, onde se utiliza a compensação, e pode ter apenas um instrumento segundo uma posição. Além disso, na mesma plataforma, mas em outra conta, você pode negociar no mercado Forex e utilizar a cobertura.

    Como abrir uma conta com cobertura e onde procurar o tipo registro de posições
    O tipo de registro de posições é definido no nível da conta, ele é exibido no cabeçalho da janela do terminal e, também, no diário:



    Para abrir uma conta demo com cobertura, habilite a opção correspondente:




    Sistema de compensação
    Este sistema de registro implica que num dado momento, possa haver apenas uma posição aberta, segundo um mesmo símbolo, na conta:

    • Se existir uma posição segundo um instrumento, ao realizar uma transação na mesma direção ocorrerá o aumento do volume dessa posição.
    • Ao realizar uma transação na direção oposta, ocorrerá a diminuição do volume da posição existente, quer o seu fechamento (ao realizar uma transação de volume idêntico ao da posição atual), quer a reversão (se o volume da transação oposta for superior ao da posição atual).

    Neste caso, não importa a ação pela qual é realizada a transação na direção oposta, por outras palavras, é indiferente se foi resultado da execução de uma ordem de mercado ou devido à ativação de uma ordem pendente.

    Abaixo mostramos um exemplo da execução de duas transações de compra de EURUSD com um volume de 0,5 lotes cada:


    Como resultado da execução destas transações, temos uma posição geral com um volume de 1 lote.

    Sistema de cobertura
    Este sistema de registro permite que você tenha múltiplas posições do mesmo instrumento, incluindo em direções opostas.

    Se, segundo um instrumento de negociação, existir uma posição aberta e o trader executar uma nova transação (ou se estiver ativa uma ordem pendente), ocorrerá a abertura de uma nova posição. A posição atual não será alterada.

    Abaixo mostramos um exemplo da execução de duas transações de compra de EURUSD com um volume de 0,5 lotes cada:


    Como resultado da execução destas transações, temos a abertura de duas posições distintas.

    Novo tipo de operação de negociação Close By
    Para contas com cobertura de registro de posições foi adicionado um novo tipo de operação de negociação, isto é, o fechamento de uma posição usando uma oposta. Esta operação permite fechar simultaneamente duas posições opostas de um mesmo instrumento. Se as posições opostas tiverem diferentes números de lotes, então, permanecerá aberta apenas uma das duas ordens. O seu volume será igual à diferença dos lotes de duas posições fechadas, e a direção da posição e o preço de abertura serão iguais à maior (em volume) das posições fechadas.

    Em comparação com o fechamento individual de duas posições, o fechamento da oposta permite ao trader poupar um spread:

    • Com o fechamento individual, o trader paga duas vezes pelo spread: fecha a compra ao menor preço (Bid), e a venda, ao maior (Ask).
    • Ao fechar a primeira posição utilizando uma oposta, usa-se o preço de abertura da segunda posição, e para fechar a segunda posição é utilizado o preço de abertura da primeira.


    Ao fechar uma posição usando uma oposta, você estará colocando uma ordem do tipo "close by". Nos comentários estão indicados os bilhetes das posições fechadas. Ao executar duas transações do tipo "out by", estará sendo fechado um par de posições opostas. O tamanho do lucro/perda brutos, resultante do fechamento de duas posições, é indicado apenas numa única transação.


  2. Para complementar a cobertura, na plataforma foi acrescentada a possibilidade de transferir contas a partir da MetaTrader 4. Agora as corretoras podem, no modo automático, migrar as contas para a MetaTrader 5, juntamente com todas as operações, nomeadamente, ordens abertas e pendentes, bem como todo o histórico de negociação.

    Ao conectar pela primeira vez a conta, transferida a partir da MetaTrader 4, aparecerá uma janela de boas-vindas. A transferência é realizada de forma segura. Para começar a trabalhar, indique a senha da conta usada anteriormente na MetaTrader 4 e, em seguida, defina uma nova senha.



    Uma vez conectado, você poderá trabalhar normalmente como se a conta tivesse sido originalmente aberta na MetaTrader 5, além disso, todo o histórico das transações da MetaTrader 4 será salvo automaticamente na nova conta.

    Quando fizer a importação, os bilhetes de ordens e posições (incluindo as ordens do histórico) não serão salvos, uma vez que uma entrada no histórico de negociação MetaTrader 4 pode corresponder até a 4 entradas no histórico da MetaTrader 5. São colocados novos bilhetes para todas as entradas de negociação.

    Os números das contas podem ser salvos ou substituídos por novos, dependendo de como a corretora faça a importação.

  3. Foi adicionado um bate-papo. Agora, diretamente na plataforma, você pode conversar com amigos e colegas na MQL5.community. No bate-papo são exibidas todas as mensagens pessoais da conta MQL5. Para começar a conversar, acesse a sua conta diretamente da caixa de bate-papo ou a partir das configurações da plataforma: Ferramentas -> Opções -> Comunidade.




  4. Foi simplificada a janela de abertura da conta demo e adicionada a possibilidade de abrir contas com cobertura. Agora você não precisa de preencher um formulário extenso, basta indicar as informações básicas e selecionar as opções de negociação: o tipo de conta, depósito, alavancagem e possibilidade de cobertura.



  5. Para começar a trabalhar rapidamente com a plataforma, foi adicionada a seleção automática da conta demo. Se, na plataforma, ainda não houver uma conta, então, ao iniciar o trabalho, será selecionada a conta demo. Após abrir a conta com sucesso, ela será imediatamente conectada.

  6. Agora todas as posições têm o seu próprio bilhete ou número único. Geralmente, ele corresponde ao bilhete da ordem, segundo o qual a posição foi aberta, exceto nos casos em que as operações de serviço no servidor tenham alterado o bilhete da ordem. Por exemplo, quando os swaps se acumulam com a reabertura de uma posição. O bilhete será atribuído automaticamente a todas as posições anteriormente abertas, após a atualização para uma nova versão do terminal.



  7. Foi corrigida a colocação de posições Stop Loss e Take Profit, ao estabelecer uma ordem de mercado que provoque a alteração da direção da posição. Os anteriores níveis correspondentes não foram colocados na nova posição.
  8. Foi corrigida a exibição dos preços com quatro ou mais dígitos após o ponto decimal nos controles do painel de negociação em um clique.
  9. Foi corrigido o erro de exibição de notícias na janela de visualização de impressão.
  10. Foram corrigidos os bugs de exibição do gráfico de ticks.
  11. Foi corrigida a abertura do livro de ofertas após um desligamento de emergência do terminal.
  12. Foi adicionada a possibilidade de verificar as ordens de mercado, ao exibir os elementos de gerenciamento do painel de negociação em um clique.
  13. Foi otimizado o cálculo de lucro e margem, quando existe um grande número de ordens e posições abertas.
  14. Foi adicionada a tradução da interface do usuário para malaio.
  15. Foi completamente atualizado o guia de usuário. Novo design, capturas de tela interativas e vídeos embutidos, tudo para fazer com que a aprendizagem, utilizando o MetaTrader 5, seja simples e cômoda.



  16. Foi corrigida a exibição de objetos gráficos no modo "Gráfico acima".

Tester

  1. Foi adicionada a possibilidade de testar robôs de negociação e indicadores técnicos de acordo com o histórico de ticks reais.

    O teste e a otimização de acordo com ticks reais são os que mais se aproximam das condições reais. Em vez de ticks gerados com base em dados de minutos, são usados ticks reais (segundo instrumentos financeiros) acumulados pela corretora. Esses são ticks provindos da bolsa e dos provedores de liquidez.

    Para começar a testar ou a otimizar, segundo ticks reais, selecione o respectivo modo de teste de estratégias:



    Os dados de ticks são significativamente maiores do que os dados de minutos. Ao executar pela primerira vez o teste, o seu download pode levar muito tempo. Os downloads dos dados de ticks são armazenados por meses em arquivos TKC no catálogo \bases\[nome do servidor de negociação]\ticks\[nome do símbolo]\.

    Particularidades ao testar ticks reais
    Ao testar com ticks reais, o spread nos limites da barra de minutos pode ser alterado, enquanto ao gerar ticks dentro nessa barra, é utilizado o spread fixado na barra correspondente.

    Se, segundo um instrumento, for transmitido o livro de ofertas, as barras serão construídas a partir dos preços de execução da última transação Last. Caso contrário, o testador tentará construir barras a partir dos preços Last. Caso esses preços não existam, então, serão feitas a partir dos preços Bid. O OnTick ativa-se em todos os ticks, independentemente de neles existir, ou não, preço Last.

    Por favor, note que as transações são sempre executadas segundo os preços Bid e Ask, mesmo se o gráfico for construído a partir dos preços Last. Por exemplo, se, para a negociação, o expert usar apenas o preço de abertura da barra (particularmente, o Moving Average embutido), então, você receberá um sinal de acordo com um preço (Last), mas a transação será executada de acordo com outro preço (Bid ou Ask, dependendo da direção). Ao usar o modo de geração "Todos os ticks", as barras serão construídas de acordo com os preços Bid, mas as transações serão executadas segundo os preços Bid e Ask. Com isso, o Ask é calculado como o Bid + o spread fixo correspondente à barra de minutos.

    Se no histórico do símbolo existir uma barra de minutos, mas, se, nesse minuto, não houver dados de ticks, o testador irá gerar ticks no modo "Todos os ticks". Isso permite que você teste o expert de acordo com o período previsto, no caso de os dados de ticks estarem incompletos na corretora. Se, no histórico do símbolo, não existir uma barra de minutos, mas, se, nesse minuto, houver dados de ticks, então, esses ticks serão ignorados. Os dados de minutos são considerados mais confiáveis.

    Teste usando ticks reais na rede de cálculo em nuvem MQL5 Cloud Network
    O teste, a partir dos ticks reais, está disponível não só em agentes locais e remotos, mas também na MQL5 Cloud Network. A otimização de estratégias, que poderia levar meses, é agora feita em poucas horas graças ao poder de processamento de milhares de computadores.

    Para testar usando a rede ative o uso de agentes de nuvem:



    O teste com ticks reais usando a MQL5 Cloud Network pode consumir uma grande quantidade de tráfego de Internet. Isto pode afectar significativamente o custo final pago pelo serviço de rede em nuvem. 
  2. Foi corrigido o erro onde a comissão não era calculada para alguns tipos de instrumentos de negociação.
  3. Foi corrigido o preenchimento do campo Expert nas ordens de negociação que apareciam como resultado da SL/TP, em conformidade com o valor do campo Expert na posição respectiva. Anteriormente não era preenchido.
  4. Foi corrigida a alternância para a guia de resultados da optimização normal e em tempo real.
  5. Foi corrigido o cálculo e exibição do indicador "Envelopes".
  6. Foi otimizada a execução do teste visual.
  7. Foi otimizado o cálculo de lucro e de margem quando haver um grande número de ordens e posições abertas.
  8. Foi otimizada a execução de operações ao negociar em alta-frequência.
  9. Agora a sincronização do histórico não ocorre devido às configurações de um símbolo fora de funcionamento e não requerido pelas cotações atuais. Por exemplo,  SYMBOL_SELECT, SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT, SYMBOL_TRADE_CALC_MODE, SYMBOL_TRADE_MODE, SYMBOL_TRADE_STOPS_LEVEL, SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_EXEMODE и т.п. Anteriormente, a configuração de um símbolo fora de funcionamento fazia com que o histórico deste símbolo se começasse a sincronizar.
  10. Foi corrigido o cálculo fixo em porcentagens anuais.

MQL5

  1. MQL5: Foi alterado o formato dos arquivos executáveis EX5, devido à adição de novos recursos na linguagem MQL5 e ao surgimento da cobertura na plataforma MetaTrader 5. Todos os antigos programas EX5, compilados no MetaEditor de builds anteriores, irão funcionar corretamente após a atualização, de modo que a compatibilidade de baixo para cima é totalmente mantida.

    Ao mesmo tempo, os programas EX5 compilados nos builds 1325 e superiores não irão funcionar nos terminais de builds antigos, devido à ausência de compatibilidade.

  2. Foi adicionado o suporte para classes abstratas e funções virtuais puras.

    As classes abstratas são projetadas para criar entidades generalizadas, em cujas bases se supõe que serão criadas classes derivadas mais específicas. Uma classe abstrata é uma classe que pode ser usada apenas como uma classe base para outra classe, por isso é impossível criar um objeto do tipo de classe abstrata.

    Uma classe, que contenha pelo menos uma função meramente virtual, é abstrata. Portanto, as classes derivadas a partir da classe abstrata devem implementar todas suas funções virtuais puras, caso contrário também serão classes abstratas.

    Uma função virtual é considerada "pura" usando a sintaxe de um especificador de pureza. Por exemplo, consideremos a classe CAnimal que é criada apenas para fornecer funções comuns, dito de outro modo, os próprios objetos do tipo CAnimal têm um caráter demasiado amplo para uma aplicação prática. Assim, a classe CAnimal é uma boa candidata para uma classe abstrata:
    class CAnimal
      {
    public:
                          CAnimal();     // construtor
       virtual void       Sound() = 0;   // função virtual pura
    private:
       double             m_legs_count;  // número de patas do animal
      };
    Aqui a função Sound() é virtual pura, porque está declarada pelo especificador da função virtual PURE (=0).

    São funções virtuais puras apenas as funções virtuais para as quais é indicado o especificador de pureza PURE, e precisamente: (=NULL) ou (=0). Exemplo de declaração e uso de uma classe abstrata:
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // PURE method, deve ser redefinido no descendente, a mesma classe tornou-se abstrata e não pode ser criada
      };
    //--- descendente da classe abstrata
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // PURE redefinido, a classe CCat não é abstrata e pode ser criada
     };
    
    //--- examples of wrong use
    new CAnimal;         // erro 'CAnimal' - o compilador emitirá o erro "cannot instantiate abstract class"
    CAnimal some_animal; // erro 'CAnimal' - o compilador emitirá o erro "cannot instantiate abstract class"
    
    //--- exemplos de uso correto
    new CCat;  // não há erro - a classe CCat não é abstrata
    CCat cat;  // não há erro - a classe CCat não é abstrata
    Restrições sobre o uso de classes abstratas
    Quando o construtor chamar uma classe abstrata da função virtual pura (direta ou indiretamente) o resultado será indefinido.
    //+------------------------------------------------------------------+
    //| Classe básica abstrata                                           |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- função virtual pura
       virtual void      Sound(void)=NULL;
       //--- função
       void              CallSound(void) { Sound(); }
       //--- construtor
       CAnimal()
        {
         //--- chamada direta do método virtual
         Sound();
         //--- chamada indireta (através de una terceira função)
         CallSound();
         //--- no construtor e/ou destrutor sempre são chamadas suas funções,
         //--- apesar do caráter virtual e da redefinição da função da chamada no descendente
         //--- se a função chamada for virtual pura, então,
         //--- a chamada provocará um erro crítico de execução: "pure virtual function call"
        }
      };
    No entanto, os construtores e destruidores de classes abstratas podem chamar outras funções membro.

  3. Para facilitar a organização de modelos de eventos, foi adicionado o suporte de indicadores para funções.

    Para declarar um indicador para uma função, defina o tipo "indicador para função", por exemplo:
    typedef int (*TFunc)(int,int);
    Agora TFunc é um tipo e é possível declarar o indicador mutável para a função:
    TFunc func_ptr;
    Na mutável func_ptr é possível armazenar o endereço da função para, no futuro, chamá-la:
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // error: neg is not of  int (int,int) type
    Print(func_ptr(10));    // error: there should be two parameters
    Indicadores para funções podem ser armazenados e transferidos como um parâmetro. É impossível obter um indicador para um método não estático de uma classe.

  4. Na estrutura da solicitação de negociação MqlTradeRequest foram adicionados dois novos tipos de campos:

    • position — bilhete de posição. Deve ser preenchido, ao negociar com cobertura ao alterar e fechar a posição para a sua identificação inequívoca. Ao negociar com sistema de cobertura de registro, o preenchimento deste campo não tem efeito, porque a identificação de posições ocorre segundo o nome do instrumento de negociação.
    • position_by — bilhete da posição oposta. Utiliza-se ao fechar uma posição usando outra oposta, se estiver aberta no mesmo instrumento, mas na direção oposta. É utilizado apenas na cobertura do registro de posições.

  5. Na enumeração dos tipos de operações ENUM_TRADE_REQUEST_ACTIONS foi adicionado o valor TRADE_ACTION_CLOSE_BY — fechamento da posição oposta. É utilizado apenas na cobertura do registro de posições.

  6. Na enumeração das propriedades das ordens, transações e posições, foram adicionados os bilhetes correspondentes às operações de negociação:

    • No ENUM_ORDER_PROPERTY_INTEGER foi adicionada a propriedade ORDER_TICKET — bilhete da ordem. Um número exclusivo atribuído a cada ordem.
    • No ENUM_DEAL_PROPERTY_INTEGER foi adicionada a propriedade DEAL_TICKET — bilhete da transação. Um número exclusivo atribuído a cada transação.
    • No ENUM_POSITION_PROPERTY_INTEGER foi adicionada a propriedade POSITION_TICKET — bilhete da posição. Um número exclusivo atribuído a cada posição. Geralmente, ele corresponde ao bilhete da ordem, segundo o qual a posição foi aberta, exceto nos casos em que as operações de serviço no servidor tenham alterado o bilhete da ordem. Por exemplo, quando os swaps se acumulam com a reabertura de uma posição. Para localizar a ordem, segundo a qual foi aberta a posição, você deve utilizar a propriedade POSITION_IDENTIFIER. Valor POSITION_TICKET corresponde a MqlTradeRequest::position.

  7. Na enumeração dos tipos de ordens ENUM_ORDER_TYPE foi adicionado o valor ORDER_TYPE_CLOSE_BY — ordem para fechamento da posição oposta.
  8. Na enumeração das propriedades das ordens ENUM_ORDER_PROPERTY_INTEGER foi adicionado o valor ORDER_POSITION_BY_ID — identificador da posição oposta para ordens do tipo ORDER_TYPE_CLOSE_BY.
  9. Na enumeração das direções da transação ENUM_DEAL_ENTRY foi adicionado o valor DEAL_ENTRY_OUT_BY — a transação foi efetuada como resultado do fechamento da posição oposta .
  10. À estrutura da transação financeira MqlTradeTransaction foram adicionados dois campos análogos:

    • position — bilhete da posição que foi afetado pela transação. Preenche-se para transações relacionadas com o processamentos das ordens de mercado (TRADE_TRANSACTION_ORDER_* exceto TRADE_TRANSACTION_ORDER_ADD, onde o bilhete da posição ainda não foi atribuído) e o histórico de ordens (TRADE_TRANSACTION_HISTORY_*).
    • position_by — bilhete da posição oposta. Utiliza-se ao fechar uma posição usando outra oposta, se estiver aberta no mesmo instrumento, mas na direção oposta. Preenche-se apenas para ordens de fechamento da posição oposta (close by) e transações de fechamento da oposta (out by).

  11. Adicionada a função PositionGetTicket — retorna o bilhete da posição segundo o índice na lista de posições abertas e seleciona automaticamente essa posição para trabalhar no futuro com ela usando a função PositionGetDouble, PositionGetInteger, PositionGetString.
    ulong  PositionGetTicket(
       int  index      // número na lista de posições
       );

  12. Adicionada a função PositionSelectByTicket — seleciona uma posição aberta para trabalhar no futuro com ela segundo o bilhete indicado.
    bool  PositionSelectByTicket(
       ulong   ticket     // bilhete da posição
       );

  13. Na numeração das propriedades de instrumentos financeiros ENUM_SYMBOL_INFO_DOUBLE foi adicionado o valor SYMBOL_MARGIN_HEDGED — tamanho do contrato ou margem para um lote de posições sobrepostas (posições com várias direções segundo um mesmo símbolo).

    • Se, para o instrumento, tiver sido estabelecida uma margem inicial (SYMBOL_MARGIN_INITIAL), então, a margem de cobertura é indicada como valor absoluto (em dinheiro).
    • Se não se tiver estabelecido uma margem inicial (igual a 0), então, no campo SYMBOL_MARGIN_HEDGED indica-se o tamanho do contrato que será usado no cálculo da margem segundo a fórmula correspondente ao tipo de instrumento de negociação (SYMBOL_TRADE_CALC_MODE).

    As particularidades do cálculo de margem no sistema de cobertura de registro de posições está descrito no guia do usuário da plataforma de negociação MetaTrader 5.

  14. Na enumeração das propriedades da conta ENUM_ACCOUNT_INFO_INTEGER foi adicionado o valor ACCOUNT_MARGIN_MODE — modo de cálculo de margem para a conta de negociação atual:

    • ACCOUNT_MARGIN_MODE_RETAIL_NETTING — Usa-se para o mercado de balcão ao registrar as posições no modo "compensação" (segundo um símbolo pode existir apenas uma posição). O cálculo da margem é realizado com base no tipo de instrumento (SYMBOL_TRADE_CALC_MODE).
    • ACCOUNT_MARGIN_MODE_EXCHANGE — usa-se para o mercado de bolsa. O cálculo da margem é realizado com base nos descontos indicados nas configurações dos instrumentos. Os descontos são determinados pelo corretor, no entanto, não podem ser inferiores aos valores definidos pela bolsa de valores.
    • ACCOUNT_MARGIN_MODE_RETAIL_HEDGING — usa-se para o mercado de balcão ao ser realizado o registro independente de posições ("cobertura", segundo um símbolo, podem existir várias posições). O cálculo da margem realiza-se com base no tipo de instrumento (SYMBOL_TRADE_CALC_MODE) e tendo em conta o tamanho da margem de cobertura (SYMBOL_MARGIN_HEDGED).

  15. Na numeração das propriedades do terminal de cliente ENUM_TERMINAL_INFO_INTEGER foi adicionado o valor TERMINAL_SCREEN_DPI — resolução da informação na tela que está definida pelo número de pontos por polegada linear na superfície (DPI). Ao conhecer esse parâmetro, você pode especificar as dimensões dos objetos gráficos para que eles que sejam iguais em monitores com resolução diferente.

  16. Na enumeração das propriedades ENUM_TERMINAL_INFO_INTEGER foi adicionado o valor TERMINAL_PING_LAST — último valor conhecido de um ping até ao servidor em microssegundos. Em um segundo há um milhão de microssegundos.

  17. Corrigido o retorno do resultado da chamada da função SendFTP. Anteriormente, após o envio bem-sucedido, retornava o valor FALSE em vez de TRUE.
  18. Corrigido o erro na função StringConcatenate, que, em alguns casos, causava o erro de execução "Access violation".
  19. Corrigidos vários bugs ao trabalhar com funções-modelos.
  20. Agora as funções Print, Alert e Comment podem exibir seqüências maiores que 4.000 caracteres.
  21. Corrigido o erro na função ArrayCompare que aparecia quando a matriz era comparada consigo mesma.
  22. À biblioteca padrão foi adicionado o suporte de negociação com cobertura:

    CPosition
    Foram adicionados os métodos:

    • SelectByMagic — seleciona a posição segundo um número mágico e um símbolo para trabalhos futuros.
    • SelectByTicket —seleciona a posição segundo um bilhete para trabalhos futuros.

    CTrade
    Foram adicionados os métodos:

    • RequestPosition — obtém os bilhetes de posição.
    • RequestPositionBy — obtém os bilhetes da posição oposta.
    • PositionCloseBy — fecha a posição com o bilhete indicado da posição com direção oposta.
    • SetMarginMode — define o modo de cálculo da margem de acordo com as configurações da conta atual.

    Foi adicionada a sobrecarga de métodos:

    • PositionClose — fecha a posição segundo o bilhete.
    • PositionModify — modifica a posição segundo o bilhete.

    CAccountInfo
    Foram alterados os métodos:

    • MarginMode — agora obtém o modo para o cálculo da margem. Anteriormente, trabalhava analogamente ao novo método StopoutMode.
    • MarginDescription — agora obtém o modo de cálculo para a margem como para a linha. Anteriormente, trabalhava analogamente ao novo método StopoutModeDescription.

    Foram adicionados os métodos:

    • StopoutMode — obtém o modo para definir o nível mínimo de garantia.
    • StopoutModeDescription — obtém o modo para definir o nível mínimo de garantia como para a linha.

    CExpert
    Foram adicionados os métodos:

    • SelectPosition — seleciona uma posição para o subseqüente trabalho com ela.

  23. Foram adicionadas várias correções à biblioteca padrão.
  24. Foi corrigido o erro de download das bibliotecas DLL.
  25. Foi adicionado o suporte para construtores de escalas de classes.

Sinais

  1. Foram corrigidos vários erros de exibição no mostruário de sinais de negociação.

MetaEditor

  1. Foi corrigida a pesquisa de palavra por arquivo no modo "Apenas palavra inteira".
  2. Foi adicionada a possibilidade de ir até ao arquivo através de um duplo clique nos resultados da compilação do arquivo respectivo.
  3. Foi corrigida a exibição de alguns elementos de gerenciamento no Windows XP.
Documentação atualizada.
1 abril 2016
MetaTrader 5 Platform Build 1295

Terminal

  1. Para ampliar as possibilidades dos retail traders que negociam no mercado Forex, à plataforma foi adicionada a cobertura (um segundo sistema de registro). Agora, segundo um instrumento, você pode ter várias posições, incluindo posições opostas. Isto permite implementar estratégias de negociação com o assim chamado “bloqueio”, dito de outro modo, se o preço estiver contra o trader, ele terá a possibilidade de abrir uma posição na direção oposta.

    O novo sistema de registro é análogo ao utilizado na MetaTrader 4, o que faz com que seja familiar para os traders. Além disso, eles poderão utilizar todas as vantagens da quinta versão da plataforma: execução de ordens usando várias transações (incluindo a parcial), o testador multi-moeda e multi-fio (multithread) com o apoio da rede de computação em nuvem MQL5 Cloud Network e muitas outras.

    Agora, você pode em uma conta negociar na bolsa de valores, onde se utiliza a compensação, e pode ter apenas um instrumento segundo uma posição. Além disso, na mesma plataforma, mas em outra conta, você pode negociar no Forex e utilizar a cobertura.

    Como abrir uma conta com cobertura e onde procurar o tipo registro de posições
    O tipo de registro de posições é definido no nível da conta, ele é exibido no cabeçalho da janela do terminal e, também, no diário:



    Para abrir uma conta demo com cobertura, habilite a opção correspondente:




    Sistema de compensação
    Este sistema de registro implica que num dado momento, possa haver apenas uma posição aberta, segundo um mesmo símbolo, na conta:

    • Se existir uma posição segundo um instrumento, ao realizar uma transação na mesma direção ocorrerá o aumento do volume dessa posição.
    • Ao realizar uma transação na direção oposta, ocorrerá a diminuição do volume da posição existente, quer o seu fechamento (ao realizar uma transação de volume idêntico ao da posição atual), quer a reversão (se o volume da transação oposta for superior ao da posição atual).


    Neste caso, não importa a ação pela qual é realizada a transação na direção oposta, por outras palavras, é indiferente se foi resultado da execução de uma ordem de mercado ou devido à ativação de uma ordem pendente.

    Abaixo mostramos um exemplo da execução de duas transações de compra de EURUSD com um volume de 0,5 lotes cada:


    Como resultado da execução destas transações, temos uma posição geral com um volume de 1 lote.

    Sistema de cobertura
    Este sistema de registro permite que você tenha múltiplas posições do mesmo instrumento, incluindo em direções opostas.

    Se, segundo um instrumento de negociação, existir uma posição aberta e o trader executar uma nova transação (ou se estiver ativa uma ordem pendente), ocorrerá a abertura de uma nova posição. A posição atual não será alterada.

    Abaixo mostramos um exemplo da execução de duas transações de compra de EURUSD com um volume de 0,5 lotes cada:


    Como resultado da execução destas transações, temos a abertura de duas posições distintas.

    Novo tipo de operação de negociação Close By
    Para contas com cobertura de registro de posições foi adicionado um novo tipo de operação de negociação, isto é, o fechamento de uma posição usando uma oposta. Esta operação permite fechar simultaneamente duas posições opostas de um mesmo instrumento. Se as posições opostas tiverem diferentes números de lotes, então, permanecerá aberta apenas uma das duas. O seu volume será igual à diferença dos lotes de duas posições fechadas, e a direção da posição e o preço de abertura serão iguais à maior (em volume) das posições fechadas.

    Em comparação com o fechamento individual de duas posições, o fechamento da oposta permite ao trader poupar um spread:

    • Com o fechamento individual, o trader paga duas vezes pelo spread: fecha a compra ao menor preço (Bid), e a venda, ao maior (Ask).
    • Com o fechamento oposto, para fechar a primeira posição, usa-se o preço de abertura da segunda posição, e para fechar a segunda posição é utilizado o preço de abertura da primeira.


    Ao fechar a posição usando outra oposta, estabelece-se uma ordem do tipo "close by". No seu comentário são indicados os bilhetes das posições fechadas. O fechamento de duas posições opostas ocorre usando duas transações do tipo "out by". O tamanho do lucro/perda total, obtido como resultado do fechamento de ambas as posições, é indicado apenas em uma transação.



  2. Foi adicionado o teste de robôs de negociação e indicadores técnicos segundo o histórico de ticks real.

    O teste e a otimização de acordo com ticks reais são os que mais se aproximam das condições reais. Em vez de ticks gerados com base em dados de minutos, são usados ticks reais (segundo instrumentos financeiros) acumulados pela corretora. Esses são ticks provindos da bolsa e dos provedores de liquidez.

    Para começar a testar ou a otimizar, segundo ticks reais, selecione o respectivo modo de teste de estratégias:



    Os dados de ticks são significativamente maiores do que os dados de minutos. Ao executar pela primeira vez o teste, o seu download pode levar muito tempo. Os downloads dos dados de ticks são armazenados por meses em arquivos TKC no catálogo \bases\[nome do servidor de negociação]\ticks\[nome do símbolo]\.

    Particularidades ao testar ticks reais
    Ao testar com ticks reais, o spread nos limites da barra de minutos pode ser alterado, enquanto ao gerar ticks dentro nessa barra, é utilizado o spread fixado na barra correspondente.

    Se, segundo um instrumento, for transmitido o livro de ofertas, as barras serão construídas a partir dos preços de execução da última transação Last. Caso contrário, o testador tentará construir barras a partir dos preços Last. Caso esses preços não existam, então, serão feitas a partir dos preços Bid. O OnTick ativa-se em todos os ticks, independentemente de neles existir, ou não, preço Last.

    Por favor, note que as transações são sempre executadas segundo os preços Bid e Ask, mesmo se o gráfico for construído a partir dos preços Last. Por exemplo, se, para a negociação, o expert usar apenas o preço de abertura da barra (particularmente, o Moving Average embutido), então, você receberá um sinal de acordo com um preço (Last), mas a transação será executada de acordo com outro preço (Bid ou Ask, dependendo da direção). Ao usar o modo de geração "Todos os ticks", as barras serão construídas de acordo com os preços Bid, mas as transações serão executadas segundo os preços Bid e Ask. Com isso, o Ask é calculado como o Bid + o spread fixo correspondente à barra de minutos.

    Se no histórico do símbolo existir uma barra de minutos, mas, se, nesse minuto, não houver dados de ticks, o testador irá gerar ticks no modo "Todos os ticks". Isso permite que você teste o expert de acordo com o período previsto, no caso de os dados de ticks estarem incompletos na corretora. Se, no histórico do símbolo, não existir uma barra de minutos, mas, se, nesse minuto, houver dados de ticks, então, esses ticks serão ignorados. Os dados de minutos são considerados mais confiáveis. 
    No momento, o teste e a otimização, a partir dos ticks reais, são possíveis apenas em agentes locais e remotos. O suporte para a rede em nuvem MQL5 Cloud Network será adicionado em breve.

  3. Foi adicionado um bate-papo. Agora, diretamente na plataforma, você pode conversar com amigos e colegas na MQL5.community. No bate-papo são exibidas todas as mensagens pessoais da conta MQL5. Para começar a conversar, acesse a sua conta diretamente da caixa de bate-papo ou a partir das configurações da plataforma: Ferramentas -> Opções -> Comunidade.




  4. Foi simplificada a janela de abertura da conta demo, adicionada a possibilidade de abrir contas com cobertura. Agora você não precisa de preencher um formulário extenso, basta indicar as informações básicas e selecionar as opções de negociação: o tipo de conta, depósito, alavancagem e possibilidade de cobertura.



  5. Para começar a trabalhar rapidamente com a plataforma, foi adicionada a seleção automática da conta demo. Se, na plataforma, ainda não houver uma conta, então, ao iniciar o trabalho, será selecionada a conta demo. Após abrir a conta com sucesso, ela será imediatamente conectada.

  6. Agora todas as posições têm o seu próprio bilhete ou número único. Geralmente, ele corresponde ao bilhete da ordem, segundo o qual a posição foi aberta, exceto nos casos em que as operações de serviço no servidor tenham alterado o bilhete da ordem. Por exemplo, quando os swaps se acumulam com a reabertura de uma posição. O bilhete será atribuído automaticamente a todas as posições anteriormente abertas, após a atualização para uma nova versão do terminal.




  7. Foi corrigida a colocação de posições Stop Loss e Take Profit, ao estabelecer uma ordem de mercado que provoque a alteração da direção da posição. Os anteriores níveis correspondentes não foram colocados na nova posição.
  8. Foi corrigida a exibição dos preços com quatro ou mais dígitos após o ponto decimal nos controles do painel de negociação em um clique.
  9. Foi corrigido o erro de exibição de notícias na janela de visualização de impressão.
  10. Foram corrigidos os bugs de exibição do gráfico de ticks.
  11. Foi corrigida a abertura do livro de preços após um desligamento de emergência do terminal.
  12. Foi adicionada a verificação das ordens de mercado, ao exibir os elementos de gerenciamento do painel de negociação em um clique.
  13. Foi otimizado o cálculo de lucro e margem, quando existe um grande número de ordens e posições abertas.
  14. Foi adicionada a tradução da interface do usuário para malaio.
  15. Foi atualizado completamente o guia de usuário. Novo design, capturas de tela interativas e vídeos embutidos, tudo para fazer com que a aprendizagem, utilizando o MetaTrader 5, seja simples e cômoda.




MQL5

  1. Foi adicionado o suporte para classes abstratas e funções virtuais puras.

    As classes abstratas são projetadas para criar entidades generalizadas, em cujas bases se supõe que serão criadas classes derivadas mais específicas. Uma classe abstrata é uma classe que pode ser usada apenas como uma classe base para outra classe, por isso é impossível criar um objeto do tipo de classe abstrata.

    Uma classe, que contenha pelo menos uma função meramente virtual, é abstrata. Portanto, as classes derivadas a partir da classe abstrata devem implementar todas suas funções virtuais puras, caso contrário também serão classes abstratas.

    Uma função virtual é considerada "pura" usando a sintaxe de um especificador de pureza. Por exemplo, consideremos a classe CAnimal que é criada apenas para fornecer funções comuns, dito de outro modo, os próprios objetos do tipo CAnimal têm um caráter demasiado amplo para uma aplicação prática. Assim, a classe CAnimal é uma boa candidata para uma classe abstrata:
    class CAnimal
      {
    public:
                          CAnimal();     // construtor
       virtual void       Sound() = 0;   // função virtual pura
    private:
       double             m_legs_count;  // número de patas do animal
    Aqui a função Sound() é virtual pura, porque está declarada pelo especificador da função virtual PURE (=0).

    São funções virtuais puras apenas as funções virtuais para as quais é indicado o especificador de pureza PURE, e precisamente: (=NULL) ou (=0). Exemplo de declaração e uso de uma classe abstrata:
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // PURE method, deve ser redefinido no descendente, a mesma classe tornou-se abstrata e não pode ser criada
      };
    //--- descendente da classe abstrata
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // PURE redefinido, a classe CCat não é abstrata e pode ser criada
     };
    
    //--- exemplos de uso correto
    new CAnimal;         // erro 'CAnimal' - o compilador emitirá o erro "cannot instantiate abstract class"
    CAnimal some_animal; // erro 'CAnimal' - o compilador emitirá o erro "cannot instantiate abstract class"
    
    //--- exemplos de uso correto
    new CCat;  // não há erro - a classe CCat não é abstrata
    CCat cat;  // não há erro - a classe CCat não é abstrata
    Restrições sobre o uso de classes abstratas
    Quando o construtor chamar uma classe abstrata da função virtual pura (direta ou indiretamente) o resultado será indefinido.
    //+------------------------------------------------------------------+
    //| Classe básica abstrata                                        |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- função virtual pura
       virtual void      Sound(void)=NULL;
       //--- função
       void              CallSound(void) { Sound(); }
       //--- construtor
       CAnimal()
        {
         //--- chamada direta do método virtual
         Sound();
         //--- chamada indireta (através de una terceira função)
         CallSound();
         //--- no construtor e/ou destrutor sempre são chamadas suas funções,
         //--- apesar do caráter virtual e da redefinição da função da chamada no descendente
         //--- se a função chamada for virtual pura, então,
         //--- a chamada provocará um erro crítico de execução: "pure virtual function call"
        }
      };
    No entanto, os construtores e destruidores de classes abstratas podem chamar outras funções membro.

  2. Para facilitar a organização de modelos de eventos, foi adicionado o suporte de indicadores para funções.

    Para declarar um indicador para uma função, defina o tipo "indicador para função", por exemplo:
    typedef int (*TFunc)(int,int);
    Agora TFunc é um tipo e é possível declarar o indicador mutável para a função:
    TFunc func_ptr;
    Na mutável func_ptr é possível armazenar o endereço da função para, no futuro, chamá-la:
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // erro: neg não tem tipo  int (int,int)
    Print(func_ptr(10));    // erro: deve ter dois parâmetros
    Indicadores para funções podem ser armazenados e transferidos como um parâmetro. É impossível obter um indicador para um método não estático de uma classe.

  3. Na estrutura da solicitação de negociação MqlTradeRequest foram adicionados dois novos tipos de campos:

    • position — bilhete de posição. Deve ser preenchido, ao negociar com cobertura ao alterar e fechar a posição para a sua identificação inequívoca. Ao negociar com sistema de cobertura de registro, o preenchimento deste campo não tem efeito, porque a identificação de posições ocorre segundo o nome do instrumento de negociação.
    • position_by — bilhete da posição oposta. Utiliza-se ao fechar uma posição usando outra oposta, se estiver aberta no mesmo instrumento, mas na direção oposta. É utilizado apenas na cobertura do registro de posições.

  4. Na enumeração dos tipos de operações ENUM_TRADE_REQUEST_ACTIONS foi adicionado o valor TRADE_ACTION_CLOSE_BY — fechamento da posição oposta. É utilizado apenas na cobertura do registro de posições.

  5. Na enumeração das propriedades das ordens, transações e posições, foram adicionados os bilhetes correspondentes às operações de negociação:

    • No ENUM_ORDER_PROPERTY_INTEGER foi adicionada a propriedade ORDER_TICKET — bilhete da ordem. Um número exclusivo atribuído a cada ordem.
    • No ENUM_DEAL_PROPERTY_INTEGER foi adicionada a propriedade DEAL_TICKET — bilhete da transação. Um número exclusivo atribuído a cada transação.
    • No ENUM_POSITION_PROPERTY_INTEGER foi adicionada a propriedade POSITION_TICKET — bilhete da posição. Um número exclusivo atribuído a cada posição. Geralmente, ele corresponde ao bilhete da ordem, segundo o qual a posição foi aberta, exceto nos casos em que as operações de serviço no servidor tenham alterado o bilhete da ordem. Por exemplo, quando os swaps se acumulam com a reabertura de uma posição. Para localizar a ordem, segundo a qual foi aberta a posição, você deve utilizar a propriedade POSITION_IDENTIFIER. Valor POSITION_TICKET corresponde a MqlTradeRequest::position.

  6. Na enumeração dos tipos de ordens ENUM_ORDER_TYPE foi adicionado o valor ORDER_TYPE_CLOSE_BY — ordem para fechamento da posição oposta.
  7. Na enumeração das propriedades das ordens ENUM_ORDER_PROPERTY_INTEGER foi adicionado o valor ORDER_POSITION_BY_ID — identificador da posição oposta para ordens do tipo ORDER_TYPE_CLOSE_BY.
  8. Na enumeração das direções da transação ENUM_DEAL_ENTRY foi adicionado o valor DEAL_ENTRY_OUT_BY — a transação foi efetuada como resultado do fechamento da posição oposta .
  9. À estrutura da transação financeira MqlTradeTransaction foram adicionados dois campos análogos:

    • position — bilhete da posição que foi afetado pela transação. Preenche-se para transações relacionadas com o processamentos das ordens de mercado (TRADE_TRANSACTION_ORDER_* exceto TRADE_TRANSACTION_ORDER_ADD, onde o bilhete da posição ainda não foi atribuído) e o histórico de ordens (TRADE_TRANSACTION_HISTORY_*).
    • position_by — bilhete da posição oposta. Utiliza-se ao fechar uma posição usando outra oposta, se estiver aberta no mesmo instrumento, mas na direção oposta. Preenche-se apenas para ordens de fechamento da posição oposta (close by) e transações de fechamento da oposta (out by).

  10. Foi adicionada a função PositionGetTicket — retorna o bilhete da posição segundo o índice na lista de posições abertas e seleciona automaticamente essa posição para trabalhar no futuro com ela usando a função PositionGetDouble, PositionGetInteger, PositionGetString.
    ulong  PositionGetTicket(
       int  index      // número na lista de posições
       );

  11. Foi adicionada a função PositionSelectByTicket — seleciona uma posição aberta para trabalhar no futuro com ela segundo o bilherte indicado.
    bool  PositionSelectByTicket(
       ulong   ticket     // bilhete da posição
       );

  12. Na numeração das propriedades de instrumentos financeiros ENUM_SYMBOL_INFO_DOUBLE foi adicionado o valor SYMBOL_MARGIN_HEDGED — tamanho do contrato ou margem para um lote de posições sobrepostas (posições com várias direções segundo um mesmo símbolo).

    • Se, para o instrumento, tiver sido estabelecida uma margem inicial (SYMBOL_MARGIN_INITIAL), então, a margem de cobertura é indicada como valor absoluto (em dinheiro).
    • Se não se tiver estabelecido uma margem inicial (igual a 0), então, no campo SYMBOL_MARGIN_HEDGED indica-se o tamanho do contrato que será usado no cálculo da margem segundo a fórmula correspondente ao tipo de instrumento de negociação (SYMBOL_TRADE_CALC_MODE).
    As particularidades do cálculo de margem no sistema de cobertura de registro de posições está descrito no guia do usuário da plataforma de negociação MetaTrader 5.

  13. Na enumeração das propriedades da conta ENUM_ACCOUNT_INFO_INTEGER foi adicionado o valor ACCOUNT_MARGIN_MODE — modo de cálculo de margem para a conta de negociação atual:

    • ACCOUNT_MARGIN_MODE_RETAIL_NETTING — Usa-se para o mercado de balcão ao registrar as posições no modo "compensação" (segundo um símbolo pode existir apenas uma posição). O cálculo da margem é realizado com base no tipo de instrumento (SYMBOL_TRADE_CALC_MODE).
    • ACCOUNT_MARGIN_MODE_EXCHANGE — usa-se para o mercado de bolsa. O cálculo da margem é realizado com base nos descontos indicados nas configuraçãoes dos instrumentos. Os descontos são estabelecidos pela corretora, no entanto não podem ser inferiores aos valores determinados pela bolsa.
    • ACCOUNT_MARGIN_MODE_RETAIL_HEDGING — usa-se para o mercado de balcão ao ser realizado o registro independente de posições ("cobertura", segundo um símbolo, podem existir várias posições). O cálculo da margem realiza-se com base no tipo de instrumento (SYMBOL_TRADE_CALC_MODE) e tendo em conta o tamanho da margem de cobertura (SYMBOL_MARGIN_HEDGED).

  14. Na numeração das propriedades do terminal de cliente ENUM_TERMINAL_INFO_INTEGER foi adicionado o valor TERMINAL_SCREEN_DPI — resolução da informação na tela que está definida pelo número de pontos por polegada linear na superfície (DPI). Ao conhecer esse parâmetro, você pode especificar as dimensões dos objetos gráficos para que eles que sejam iguais em monitores com resolução diferente.

  15. Na enumeração das propriedades ENUM_TERMINAL_INFO_INTEGER foi adicionado o valor TERMINAL_PING_LAST — último valor conhecido de um ping até ao servidor em microssegundos. Em um segundo há um milhão de microssegundos.

  16. Foi corrigido o retorno do resultado da chamada da função SendFTP. Anteriormente, após o envio bem-sucedido, retornava o valor FALSE em vez de TRUE.
  17. Foi corrigido o erro na função StringConcatenate, que, em alguns casos, causava o erro de execução "Access violation".
  18. Foram corrigidos vários bugs ao trabalhar com funções-modelos.
  19. Agora as funções Print, Alert e Comment podem exibir seqüências maiores que 4.000 caracteres.
  20. Foi corrigido o erro na função ArrayCompare que aparecia quando a matriz era comparada consigo mesma.
  21. À biblioteca padrão foi adicionado o suporte de negociação com cobertura:

    CPosition
    Foram adicionados os métodos:

    • SelectByMagic — seleciona a posição segundo um número mágico e um símbolo para trabalhos futuros.
    • SelectByTicket —seleciona a posição segundo um bilhete para trabalhos futuros.

    CTrade
    Foram adicionados os métodos:

    • RequestPosition — obtém os bilhetes de posição.
    • RequestPositionBy — obtém os bilhetes da posição oposta.
    • PositionCloseBy — fecha a posição com o bilhete indicado da posição com direção oposta.
    • SetMarginMode — define o modo de cálculo da margem de acordo com as configurações da conta atual.

    Foi adicionada a sobrecarga de métodos:

    • PositionClose — fecha a posição segundo o bilhete.
    • PositionModify — modifica a posição segundo o bilhete.

    CAccountInfo
    Foram alterados os métodos:

    • MarginMode — agora obtém o modo para o cálculo da margem. Anteriormente, trabalhava analogamente ao novo método StopoutMode.
    • MarginDescription — agora obtém o modo de cálculo para a margem como para a linha. Anteriormente, trabalhava analogamente ao novo método StopoutModeDescription.

    Foram adicionados os métodos:

    • StopoutMode — obtém o modo para definir o nível mínimo de garantia.
    • StopoutModeDescription — obtém o modo para definir o nível mínimo de garantia como para a linha.

    CExpert
    Foram adicionados os métodos:

    • SelectPosition — seleciona posições para o subseqüente trabalho com ela.

  22. Foram adicionadas várias correções à biblioteca padrão.

Sinais

  1. Foram corrigidos vários erros de exibição no mostruário de sinais de negociação.

Tester

  1. Foi corrigido o erro onde a comissão não era calculada para alguns tipos de instrumentos de negociação.
  2. Foi corrigido o preenchimento do campo Expert nas ordens de negociação que apareciam como resultado da SL/TP, em conformidade com o valor do campo Expert na posição correta. Anteriormente não era preenchido.
  3. Foi corrigida a alternação para a guia de resultados da optimização normal e em tempo real.
  4. Foi corrigido o cálculo e exibição de indicadores "Envelopes".
  5. Foi otimizada a execução do teste visual.
  6. Foi otimizado o cálculo de lucro e margem, quando existe um grande número de ordens e posições abertas.
  7. Foi otimizada a execução de operações de negociação de alta freqüência.
  8. Agora a sincronização do histórico não é realizada ao consultar as propriedades de um símbolo sem fundamento e que não exige as cotações atuais. Por exemplo,  SYMBOL_SELECT, SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT, SYMBOL_TRADE_CALC_MODE, SYMBOL_TRADE_MODE, SYMBOL_TRADE_STOPS_LEVEL, SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_EXEMODE и т.п. Anteriormente, a configuração de um símbolo fora de funcionamento fazia com que o histórico deste símbolo se começasse a sincronizar.

MetaEditor

  1. Foi corrigida a pesquisa por arquivos no modo "Apenas a palavra inteira".
  2. Foi adicionada a transição para o arquivo clicando duas vezes na linha de resultados da compilação do arquivo correspondente.
  3. Foi corrigida a exibição de alguns elementos de gerenciamento no Windows XP.


Documentação atualizada
17 dezembro 2015
MetaTrader 5 build 1240: aceleramento do trabalho e vídeos incorporados

Hosting

  1. Uma ligação que conduz ao vídeo tutorial "Como arrendar uma plataforma virtual" foi adicionada à caixa de diálogo do servidor virtual. Assista a este vídeo de dois minutos e descubra como é simples pôr o robô comercial a funcionar ou a copiar sinais 24 horas por dia, 7 dias por semana.


    Este e muitos outros vídeos estão disponíveis no canal oficial do YouTube da MetaQuotes Software Corp..
  2. Foi corrigido o erro de migração para o hosting, quando é chamado um indicador personalizado, ou quando a biblioteca EX5 dentro de um indicator personalizado é chamada desde o Expert Advisor.

Terminal

  1. Atualização acelerada da lista de ordens e posições abertas ao realizar operações comerciais de alta frequência (50 operações por segundo ou mais).
  2. A sincronização inicial do terminal com o servidor comercial foi otimizada e significativamente acelerada em presença de uma grande quantidade de instrumentos financeiros (dezenas de milhares). Agora, depois de se conectar, pode começar a trabalhar mais rápido.
  3. O consumo da memória usada pelo terminal foi otimizado e significativamente reduzido.
  4. A configuração da profundidade de mercado "DOM" foi adicionada ao fechamento/abertura do terminal.
  5. Os erros, na forma de artefatos, que ocorriam no Windows 10 ao arrastar as janelas do terminal, foram corrigidos.
  6. O trabalho do menu de contexto para ajuda foi corrigido. Para ativar a ajuda de um elemento do menu de contexto, coloque o cursor em cima dele e clique F1.
  7. Os trabalhos para a adaptação da interface em ecrãs de alta resolução (4K) encontram-se em desenvolvimento.

MQL5

  1. Para a obtenção de informação sobre as ordens e negociações OrderGetString, HistoryOrderGetString e HistoryDealGetString foram adicionadas novas propriedades:

    • ORDER_EXTERNAL_ID - a ID de ordem no sistema externo de comércio (na bolsa).
    • DEAL_EXTERNAL_ID - a ID de negociação no sistema externo de comércio.

  2. O erro da função ZeroMemory ao trabalhar com estruturas e classes foi corrigido. Em alguns casos, a limpeza da memória não foi realizada.
  3. Foram adicionados códigos de erro ao trabalhar com a função SendFTP. A função envia o ficheiro para o endereço indicado na janela de configuração "FTP".

    • ERR_FTP_NOSERVER - o servidor FTP não está especificado nos atributos de configuração
    • ERR_FTP_NOLOGIN - o login FTP não está especificado nos atributos de configuração
    • ERR_FTP_FILE_ERROR - o ficheiro não existe
    • ERR_FTP_CONNECT_FAILED - a ligação ao servidor FTP falhou
    • ERR_FTP_CHANGEDIR - não foi encontrado o diretório no servidor FTP para o upload do ficheiro
    • ERR_FTP_CLOSED - a ligação ao servidor FTP foi fechada

  4. Foi corrigida a verificação do acesso para colocar objetos segundo hierarquia de descendentes a antepassados.
  5. Foi corrigida uma série de erros nas classes de escalas.
  6. Foi corrigido o erro ao pedido da função CopyTicks. Ao especificar o parâmetro COPY_TICKS_TRADE (copiar apenas trade ticks) para ticks de negociação consecutivos e idênticos (de igual volume e last price), só o primeiro tick passou.
  7. Foi corrigido o erro ao usar ZLib na função CryptDecode que levava a um ciclo infinito de descompressão.
  8. Foi corrigido o erro de sincronização para um instrumento comercial diferente do instrumento básico de teste, no historial de preços.

Tester

  1. Foi corrigido o erro de sincronização para um instrumento comercial diferente do instrumento básico de teste, no historial de preços.
  2. Foi corrigida a duplicação da transação comercial TRADE_TRANSACTION_DEAL_ADD (a adição da negociação ao historial) no criador de eventos OnTradeTransaction.
  3. Foi alterado o comportamento dos forward testes durante a otimização genética. Agora, todos os resultados obtidos depois da otimização genética participam nas forward passes. Anteriormente, só 1/4 dos resultados eram usados.

MetaEditor

  1. Foi adicionado o link do vídeo tutorial video "Como criar um robô comercial no Master MQL5". Assista a este vídeo de três minutos e crie um robô comercial, sem escrever uma única linha de código.


    Este e muitos outros vídeos estão disponíveis no canal oficial da MetaQuotes Software Corp. no YouTube.
  2. Foi corrigido o comando para organizar janelas abertas, no caso de uma delas estar completamente expandida. Através do menu "Janela" é possível empilhar os ficheiros em forma de mosaico, na vertical, na horizontal e em cascata.
  3. Os trabalhos para a adaptação da interface em ecrãs de alta resolução (4K) encontram-se em desenvolvimento.
Updated documentation.
30 outubro 2015
MetaTrader 5 Versão 1210: Melhoria no Book de Ofertas e Melhorias no Geral

Terminal

  1. Implementado a colocação de ordens limitadas a um preço pior do que o mercado no Book de Ofertas (Profundidade de Mercado). Permitindo a garantia da execução de ordens num determinado preço no mercado.

    Se arrastar uma ordem limitada nos níveis Ask/Bid, então vai alterar uma ordem stop (uma ordem Limitada de Compra será substituído por uma Stop de Compra, enquanto que uma Limitada de Venda - por uma Stop de Venda). Segure a tecla Ctrl enquanto arrasta uma ordem limitada e ela não seja substituída por uma stop.




  2. Adicionado a opção "Mostrar botões de negociação rápida" nas configurações do gráfico, isto permitirá ocultar o painel de Negociação a Um Clique, habilitando os botões e o Book de Ofertas a partir do gráfico.




  3. Corrigido conflitos ocasionais entre as caixas de dicas e outros aplicativos.

MQL5

  1. Corrigido o funcionamento das funções Copy* para copiar dados do histórico com arrays dinâmicos tendo a flag AS_SERIES. A flag é definida pela função ArraySetAsSeries e indica que a indexação dos elementos do array é realizado igual as timeseries.
  2. Alterado o gerenciamento da propriedade CHART_SHOW_ONE_CLICK via ChartSetInteger e ChartGetInteger. Anteriormente a propriedade permitia mostrar/ocultar o painel de Negociação a Um Click no gráfico. Agora além de configurar o painel de Negociação a Um Clique, permite também mostrar/ocultar os botões e o Book de Ofertas no gráfico (similar ao "Mostrar botões de negociação rápida" nas configurações do gráfico).
  3. Corrigido operações de templates.

A atualização estará disponível através do sistema LiveUpdate.

23 outubro 2015
MetaTrader 5 Build 1200: Recebendo o Histórico de Tick e Pagamento Direto pelos Serviços

Terminal

  1. Implantado a condição de trabalhar com o histórico de tick na Observação do Mercado. Anteriormente um gráfico de tick mostrava apenas o histórico coletado no terminal durante o seu funcionamento. Agora você poderá acessar todo o histórico de tick no servidor de negociação. Desative a rolagem automática e inicie a rolagem do gráfico de tick voltando no tempo, usando o mouse para fazer o download do histórico anterior a partir do servidor de negociação, da mesma forma como é feito nos gráficos de preços comuns. O novo recurso será útil para os traders que desejam obter os gráficos mais detalhados dos preços.



    A função CopyTicks() é usada para receber um histórico de tick mais detalhado, ela foi modificada para chamar o histórico anterior e baixando-o se estiver presente no servidor de negociação.

  2. Implementado um ícone para rápida abertura/fechamento do Livro de Ofertas (Profundidade do Mercado). O ícone está localizado perto do painel de Negociação a Um Clique no gráfico. Você também pode usar a nova tecla de atalho Alt+B. A tecla de atalho também funciona na Janela da Observação do Mercado para abertura do Livro de Ofertas (Profundidade do Mercado) mediante qualquer símbolo (ativo) selecionado.




  3. informações sobre as características de hardware do PC e do sistema operacional estão agora disponíveis no ínicio do Diário do terminal do cliente. Exemplo:
    2015.10.14 14:48:18.486 Data Folder: C:\Program Files\MetaTrader 5
    2015.10.14 14:48:18.486 Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7  920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00
    2015.10.14 14:48:18.486 MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)

  4. Foi aprimorada a execução com os símbolos (ativos) na janela da Observação do Mercado:

    • Implementada a exibição da quantidade de símbolos (ativos) na janela da Observação do Mercado e a quantidade total de símbolos (ativos) disponíveis no servidor de negociação.
    • Implementado uma linha para adicionar um novo símbolo com a lista de seleção inteligente.
    • A busca da nova linha do símbolo (ativo), além do próprio nome, é também realizada pela sua descrição e nome internacional.




  5. Implementado o suporte do calendário econômico em diferentes idiomas.
  6. Adicionado ícones dos países que estão faltando no calendário econômico.
  7. Adicionado a tecla de atalho para abrir a janela de gerenciamento dos símbolos (ativos) na Observação do Mercado - Ctrl+U.
  8. Corrigido a organização das janelas abertas no gráfico de acordo com os comandos de menu Janela.
  9. Corrigido um erro que ocasionalmente prejudicava a capacidade do terminal em encontrar um arquivo certificado ao usar a autenticação avançada.
  10. Corrigido um erro em relação a sincronização do histórico que eventualmente poderia levar a repetição da mesma dentro do programa (looping).
  11. Corrigido a situação onde os níveis de StopLoss/TakeProfit eram anulados de uma posição aberta previamente após o volume dela ser aumentado, quando um símbolo (ativo) era negociado no modo Solicitação de Execução.
  12. Corrigido a colocação de uma posição vendida quando o modo de negociação dos símbolos (ativos) no Livro de Ofertas (Profundidade do Mercado) era "Apenas Comprar."
  13. Corrigido a função de operação do Trailing Stop. Em alguns casos raros, um Stop Loss era movido incorretamente para uma posição aberta.
  14. A interface do terminal foi adaptado para telas de alta resolução (4K).
  15. Corrigido o descarregamento dos dados históricos com sendo excessivos, a pesar das solicitações regulares dos mesmos nos programas MQL5.
  16. Corrigida a exibição de alguns elementos da interface do usuário ao trabalhar com Windows 10.
  17. Atualizado as traduções da interface do usuário.

Mercado

  1. A operação com o banco de dados do produto no mercado MQL5 foi revista e otimizada.
  2. Compras sem uma conta na Comunidade MQL5 foram desativadas nos terminais instalados em VPS. Para comprar agora é exigido a especificação de uma conta na Comunidade MQL5 configurada no terminal: Ferramentas - Opções - Comunidade.
  3. Adicionado compra de produtos usando o sistema UnionPay.
  4. Registro avançado ao comprar produtos no Mercado MQL5.


Hospedagem e sinais

  1. Pagamentos pela Hospedagem Virtual e assinaturas de Sinais poderão ser transferidos diretamente dos sistemas de pagamento.

    Para pagamento dos serviços de hospedagem, os usuários não precisam acessar a conta da Comunidade MQL5 e creditar dinheiro nela. O pagamento de um serviço poderá ser transferido diretamente da plataforma usando um dos sistemas de pagamento disponíveis.



    Escolha um dos sistemas disponíveis para fazer uma transferência de dinheiro online:




    Da mesma forma, o pagamento de uma assinatura de sinal de negociação poderá ser realizado diretamente do terminal através de um sistema de pagamento.




    Primeiramente o montante necessário será transferido para sua conta na Comunidade MQL5, a partir de então, um pagamento do serviço será realizado. Assim, você mantém uma histórico claro e unificado das locações das plataformas de hospedagem virtuais e assinaturas de sinais, podendo facilmente acessar e revisar todos os seus pagamentos aos serviços na Comunidade MQL5.
  2. Corrigida a migração das configurações de exportação FTP na hospedagem virtual, independentemente da permissão para publicar relatórios via FTP.
  3. Implentado um gerenciameno da hospedagem virtual (exceto para a migração) ao trabalhar na versão do terminal do cliente de 32 bits.

MQL5

  1. Desenvolvido um novo compilador de otimização. A execução de programas foi acelerado em até 5 vezes com uma plataforma de 64 bits. Os Programas MQL5 devem ser recompilados na última versão do MetaEditor.
  2. Formato extendido da estrutura MqlTick. Agora, a transmissão do tempo de chegada de um tick é em milissegundos, bem como as flags para determinar qual parâmetro de tick foi alterado.
    struct MqlTick
      {
       datetime     time;          // Tempo da última atualização do preço
       double       bid;           // Preço Bid em tempo real (atual)
       double       ask;           // Preço Ask em tempo real (atual)
       double       last;          // "Last" Preço em tempo real (último preço atual)
       ulong        volume;        // Volume do "Last" preço em tempo real (atual)
       long         time_msc;      // Tempo do "Last" preço atualizado em  milissegundos
       uint         flags;         // Flags de tick 
      };
    Os parâmetros de cada tick são preenchidos independentemente se existem alterações comparadas com o tick anterior. Assim, é possível descobrir o preço correto para qualquer momento no passado, sem a necessidade de procurar os valores anteriores do histórico do tick. Por exemplo, mesmo que apenas altere o preço Bid durante a chegada do tick, a estrutura ainda contém outros parâmetros, bem como incluindo o preço Ask anterior, volume, etc. Você pode analisar as flags dos ticks para descobrir quais dados foram alterados exatamente:

    • TICK_FLAG_BID - tick alterou o preço Bid
    • TICK_FLAG_ASK  - tick alterou o preço Ask
    • TICK_FLAG_LAST - tick alterou o último preço da oferta
    • TICK_FLAG_VOLUME - tick alterou o volume
    • TICK_FLAG_BUY - tick é resultado de uma compra
    • TICK_FLAG_SELL - tick é resultado de uma venda
    A estrutura MqlTick é usada através de dois métodos:

    • CopyTicks - este método não suporta o formato da antiga estrutura. Quando chamar a função CopyTicks usando a compilação EX5 no formato anterior de tick, irá retornar o erro 4006 (ERR_MQL_INVALID_ARRAY).
    • SymbolInfoTick - este método suporta tanto o formato novo como o da antiga estrutura.

  3. Implementado modelos de classe que permitem criar classes parametrizadas como no C++. Isso permite uma maior capacidade de abstração e uso do mesmo código para trabalhar com objetos de diferentes classes de uma maneira uniforme. Exemplo de uso:
    //+------------------------------------------------------------------+
    //|                                                    TemplTest.mq5 |
    //|                        Copyright 2015, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2015, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //| Declara uma classe template                                      |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArray
      {
    protected:
       T                 m_data[];
    
    public:
    
       bool              Append(T item)
         {
          int new_size=ArraySize(m_data)+1;
          int reserve =(new_size/2+15)&~15;
          //---
          if(ArrayResize(m_data,new_size,reserve)!=new_size)
             return(false);
          //---
          m_data[new_size-1]=item;
          return(true);
         }
       T                 operator[](int index)
         {
          static T invalid_index;
          //---
          if(index<0 || index>=ArraySize(m_data))
             return(invalid_index);
          //---
          return(m_data[index]);
         }   
      };
    //+------------------------------------------------------------------+
    //| Classe template do array de ponteiro. No processo de destruição, |
    //| exclui os objetos que são os ponteiros armazenados no array.     |
    //|                                                                  |
    //| Por favor, note a herança do array da classe template            |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArrayPtr : public TArray<T *>
      {
    public:
       void             ~TArrayPtr()
         {
          for(int n=0,count=ArraySize(m_data);n<count;n++)
             if(CheckPointer(m_data[n])==POINTER_DYNAMIC)
                delete m_data[n];
         }
      };
    //+------------------------------------------------------------------------------+
    //| Declarar a classe. Ponteiros aos respectivos objetos são armazenados no array|
    //+------------------------------------------------------------------------------+
    class CFoo
      {
       int               m_x;
    public:
                         CFoo(int x):m_x(x) { }
       int               X(void) const { return(m_x); }
      };
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    TArray<int>     ExtIntArray;   // criar instância TArray (TArray especializada pelo tipo int)
    TArray<double>  ExtDblArray;   // criar instância TArray (TArray especializada pelo tipo double)
    TArrayPtr<CFoo> ExtPtrArray;   // criar instância TArrayPtr (TArrayPtr especializada pelo tipo CFoo)
    //+------------------------------------------------------------------+
    //| Função "Start" de Programa Script                                |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- preencher o array com dados
       for(int i=0;i<10;i++)
         {
          int integer=i+10;
          ExtIntArray.Append(integer);
          
          double dbl=i+20.0;
          ExtDblArray.Append(dbl);
          
          CFoo *ptr=new CFoo(i+30);
          ExtPtrArray.Append(ptr);
         }
    //--- Saída do conteúdo do array
       string str="Int:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtIntArray[i];      
       Print(str);   
       str="Dbl:";
       for(int i=0;i<10;i++)
          str+=" "+DoubleToString(ExtDblArray[i],1);
       Print(str);   
       str="Ptr:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtPtrArray[i].X();      
       Print(str);
    //--- Objetos CFoo criados via nova versão não deve ser suprimidos, uma vez que eles são excluídos no objeto destructor TArrayPtr <CFoo>}
    Resultado da execução:
    TemplTest (EURUSD,H1)    Int: 10 11 12 13 14 15 16 17 18 19
    TemplTest (EURUSD,H1)    Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
    TemplTest (EURUSD,H1)    Ptr: 30 31 32 33 34 35 36 37 38 39

  4. Novos operadores * e & para receber uma variável pela referência e receber uma referência à variável.
  5. Implementado a forma sobrecarregada da função ObjectsDeleteAll - exclui todos os objetos de um tipo específico por um prefixo de nome numa sub-janela do gráfico.
    int  ObjectsDeleteAll(
       long           chart_id,   // ID de gráfico
       const string     prefix,   // prefixo do nome do objeto
       int       sub_window=-1,   // índice da janela
       int      object_type=-1    // tipo de objeto para deletar
       );
  6. Corrigido o funcionamento da função ObjectGetValueByTime. Anteriormente um valor de preço incorreto por um tempo gráfico poderia algumas vezes ser devolvido (por exemplo, por uma linha de tendência horizontal).
  7. Corrigido a operação das funções Copy* na ausência de dados históricos no servidor. Anteriormente esses casos causavam atrasos de 30 a 50 segundos antes de retornar o controle.
  8. Adicionado algumas melhorias na biblioteca padrão MQL5.
  9. Documentação da Biblioteca Padrão traduzida ao Alemão, Francês, Chinês, Turco, Espanhol e Português.
  10. Adicionada a Documentação MQL5 em japonês.

Tester

  1. O processo da seleção de programas a serem executados no Testador de Estratégia tornou-se muito mais fácil. A lista é exibida agora como uma árvore, em conformidade com os diretórios onde os Expert Advisors e indicadores estão armazenados.




  2. Carregado a exibição de alguns indicadores durante a visualização de teste alinhados com o terminal do cliente.
  3. Corrigido a configuração da alavancagem e timeframe do gráfico durante a depuração de programas MQL5 via o Testador de Estratégia.
  4. Corrigida a depuração de inidicadores quando testados no histórico.
Corrigidos erros relatados nos registros (logs) quebrados.

Documentação atualizada.

A atualização estará disponível através do sistema LiveUpdate.

3 junho 2015
MetaTrader 5 build 622: Comprar robôs no Mercado tornou-se mais fácil e rápido!

Agora, no Mercado, você pode comprar qualquer aplicativo num único passo, sem registro e diretamente a partir da plataforma MetaTrader 4/5. Para fazer isso, basta pressionar o botão "Comprar" e selecionar o sistema de pagamento adequado.


Em seguida, você será redirecionado para a página do sistema de pagamento, onde você poderá concluir a sua compra. Utilize PayPal, WebMoney, Neteller ou cartão de banco, pague de uma maneira familiar pelas suas compras na loja de robôs e indicadores prontos.


Após a compra, recomendamos registrar uma conta na MQL5.community, desse modo a sua compra ficará automaticamente ligada a ela. Assim, você poderá atualizar o produto e instalá-lo em outros computadores. Além disso, a conta MQL5.community dará acesso a uma variedade de outros serviços para plataformas MetaTrader, a saber: sinais de negociação para copiar transações de traders bem sucedidos, hospedagem virtual para funcionamento ininterrupto dos seus aplicativos e o serviço freelance para encomendar robôs exclusivos aos desenvolvedores.

Agora você sabe qual é a maneira mais fácil e mais rápida para obter um robô de negociação. Mais de 5 000 aplicativos diferentes para MetaTrader já estão à sua espera no Mercado, escolha e compre!


22 maio 2015
MetaTrader 5 Build 1150: Compra Fácil no Mercado, Depuração no Histórico, Times & Sales das Negociações

Market

  1. Estamos lançando um novo mecanismo de compra "direta". Agora está ainda mais fácil realizar a compra de um robô de negociação ou um indicador no Mercado, e você não precisa nem de uma conta MQL5.community.

    Compra em Um Passo
    O usuário não precisa fazer login para uma conta MQL5.community e adicionar dinheiro nela. O pagamento para um produto agora pode ser feito diretamente na plataforma usando um dos sistemas de pagamento disponíveis. Para manter uma histórico claro e unificado das compras do Mercado, a quantidade necessária será transferida primeiro para a sua conta MQL5.community, a partir do qual será feito o pagamento pelo produto.

    Você pode facilmente acessar e revisar todos os seus pagamentos a partir do seu perfil MQL5.community.




    Compra sem registro
    Um produto do mercado pode ser comprado sem uma conta MQL5.community. Clique em "Comprar" e pague o produto usando um dos sistemas de pagamentos disponíveis.



    Em seguida, você será redirecionado para a página web do sistema de pagamento para concluir a compra.



    Depois disso, nós recomendamos fortemente que você registre uma conta na MQL5.community, para que sua compra seja automaticamente vinculada a ela. Isso permite que você atualize o produto e instale-o em vários computadores.

MetaEditor

  1. Novos recursos permitem a depuraração de Expert Advisors e indicadores sobre o histórico de preços. Nas versões anteriores, a depuração precisava de gráficos ao vivo em tempo real.

    Agora, qualquer programa poderá ser testado no histórico de dados requerido. A depuração é executada no modo de teste visual do Strategy Tester. Um aplicativo é executado em um gráfico com uma sequência emulada de ticks no testador.

    Defina os parâmetros de depuração nas configurações do MetaEditor: símbolo, período, intervalo, modo de execução, modo de geração do tick, depósito inicial e alavancagem. Esses parâmetros serão aplicados para o teste visual.



    Defina os pontos de interrupção no código e, em seguida, inicie a depuração usando o histórico de preços.



    Isto irá iniciar o teste visual e o processo de depuração.



Virtual Hosting

  1. Várias melhorias e correções foram implementadas no serviço de hospedagem virtual.

    As principais alterações aplicam-se a operação no Wine em computadores rodando Linux e Mac OS. Todas as funções estão disponíveis nos servidores virtuais alocados no Wine, incluindo a migração, monitoramento de desempenho e logs.



    A operação do Log também mudou. Se um usuário solicitar muitos registros, em seguida, apenas uma parte dos primeiros registros para o período especificado serão baixados. Isso evita a degradação do desempenho, resultante de logs grandes. Se você deseja baixar mais logs, você não precisa mais alterar o período de solicitação. Basta selecionar a última linha na janela do visualizador de log e pressionar PgDn.




Terminal

  1. Adicionado o suporte para um tipo especial de bens não transacionáveis, que podem ser utilizados como patrimônio dos clientes para fornecer a margem necessária para posições abertas em outros instrumentos. Por exemplo, uma certa quantidade de ouro em forma física poderá estar disponível na conta de um trader para que possa ser utilizado como margem (colateral) para posições abertas.

    Tais recursos são exibidos como posições em aberto. Seu valor é calculado pela fórmula: Tamanho do contrato * Lotes * Preço a Mercado * Taxa de Liquidez.

    A Taxa de Liquidez aqui, significa a parcela do ativo que uma corretora permite usar para a margem.


    Os ativos são adicionados ao Patrimônio do cliente para aumentar a Margem Livre, aumentando assim, o volume das operações de negociação permitidos na conta.

    Desta maneira, agora é possível abrir contas com vários tipos de margem.


    No exemplo acima, um trader tem 1 onça de ouro com o valor atual de mercado de 1210,56 USD. Este valor é adicionado ao patrimônio e a margem livre permitindo que o trader continue a negociação, mesmo no caso de um saldo zerado.
  2. Uma nova Profundidade do Mercado com um gráfico de tick e os dados de Times & Sales das negociações.

    O gráfico de tick dos instrumentos de negociação com os preços reais da operação são exibidos agora na Profundidade do Mercado. Todas as transações realizadas na Bolsa são plotadas neste gráfico:

    • Círculos em vermelho - operações de Venda
    • Círculos em azul - operações de Compra
    • Círculos em verde - a direção da operação é indefinida. Ela é usada quando a negociação não transmite a direção de uma operação. Neste caso, a direção é determinada pelo preço da operação, em comparação com os preços de compra e venda. Uma operação de Compra é executada ao preço das ofertas de venda (Ask) ou acima, uma operação de Venda é executada pelo preço das ofertas de compra (Bid) ou inferior. A direção é indefinida, caso o preço da operação está entre a oferta de compra e a oferta de venda.

    Quanto maior for o círculo, maior será o volume da operação O volume das operações também são mostrados como um histograma abaixo do gráfico de tick.



    Na parte superior e inferior do histograma, é exibido o volume total da oferta atual de compra e venda.

  3. A caixa de diálogo de seleção do símbolo agora contém uma coluna que mostra a data de expiração do símbolo. Além disso, os instrumentos expirados podem ser escondidos da lista. Contratos vencidos são automaticamente substituídos por outros ativos.



    Todos os símbolos vencidos são escondidos para manter uma exibição mais compacta. Isto é particularmente útil quando se trabalha no mercado de futuros. Um símbolo irrelevante é um expirado, que é definido pelo parâmetro "Última negociação". Esta data é especificada na coluna "Vencimento". Para ver todos os símbolos, clique em "Exibir contratos vencidos".
    A lista de símbolos é ordenada automaticamente para uma exibição mais conveniente:

    • os primeiros listados são os símbolos sem a data de validade
    • eles são seguidos pelos símbolos com uma data de validade a partir da data mais próxima
    • em seguida, os símbolos vencidos são mostrados começando pelo último que expirou
    • outros símbolos são classificados em ordem alfabética

    A opção "Auto remover vencido" no menu de contexto permite substituir os símbolos expirados pelos que estão ativos na janela "Market Watch".



    Após o reinício do terminal, os símbolos expirados são escondidos, e os vigentes são adicionados em seu lugar. Por exemplo, o contrato de futuros expirado LKOH 3.15 será substituído pelo próximo contrato do mesmo ativo subjacente LKOH 6.15.

    Os símbolos adequados nos gráficos abertos também são substituídos, desde que não haja a execução de Expert Advisors sobre eles.

  4. Corrigido a atualização dos estados do botão de negociação na janela da Profundidade do Mercado dependendo se há uma posição, e se há permissão para abrir apenas posições compradas. Se não houver posições, o botão Fechar estará inativo. Se a abertura de posições vendidas não é permitida, o botão de venda estrá inativo.
  5. A interface do terminal foi adaptada para telas de alta resolução (4K).
  6. Corrigido um erro que poderia, eventualmente, levar ao lançamento de várias instâncias do terminal a partir de um diretório.
  7. Fixed an error that could occasionally lead to launch of multiple terminal instances from one directory.
  8. Adicionado suporte e a filtragem automática do calendário econômico em diferentes idiomas. A filtragem é realizada de acordo com o idioma da interface do terminal.
  9. O Visualizador de Log agora apresenta uma busca através dos registros exibidos atualmente.



    Ele procura por uma palavra/frase na lista exibida de logs.
  10. Adicionado a tradução do terminal do cliente em tailandês.
  11. Atualizado a tradução do terminal do cliente em Hindi.

MQL5

  1. A nova função GetMicrosecondCount retorna o número de microssegundos que se passaram desde o início do programa MQL5:
    ulong  GetMicrosecondCount();
    Esta função pode ser usada para perfilar a execução de um programa e identificar "entraves".

  2. Nova propriedade do gráfico CL_BUFFER_SIZE na enumeração ENUM_OPENCL_PROPERTY_INTEGER - ele retorna o tamanho real do buffer OpenCL em bytes. A propriedade pode ser recebida através da função CLGetInfoInteger.
  3. Uma notificação de erro na função WebRequest foi modificada. Se ocorrer um erro, o array "resultado" conterá a descrição do erro.
  4. As funções de ordenação e busca ArraySort, ArrayBsearch, ArrayMinimum e ArrayMaximum agora são capazes de trabalhar com arrays multidimensionais. A ordenação e busca são realizadas apenas pelo primeiro índice (zero) do array. Anteriormente, estas funções funcionavam apenas com arrays unidimensionais.
  5. Corrigido alguns erros na compilação de macros.

Tester

  1. Algumas melhorias e correções de bugs no funcionamento do teste visual. O testador agora fornece um controle mais suave da velocidade do teste usando a barra de ferramentas.

Corrigido os erros relatados nos registros de falhas.

Documentação atualizada.

A atualização estará disponível através do sistema LiveUpdate.

20 março 2015
MetaTrader 5 Build 1100: Mais Rapidez nos Testes e Otimizações dos Expert Advisors

Tester

  1. O status de conexão com a MQL5 Cloud Network agora é exibido no Gerenciador de Agentes. Isso permite aos usuários verificar facilmente se eles podem receber tarefas a partir da rede de computação em nuvem após a instalação dos agentes.


    A status of connection to MQL5 Cloud Network


  2. Foram feitas algumas melhorias e correções de bugs na operação do Strategy Tester. O tempo gasto em operações de preparação intermediárias e de latência da rede foi reduzido significativamente. Testes e otimizações agora estão mais rápidos em todos os modos de operação: trabalhar com agentes locais de teste, com vários agentes de uma rede local e utilizando a MQL5 Cloud Network.

Trading Terminal

  1. Adicionado a exibição do número de e-mails não lidos na aba "Correio" da janela da Caixa de Ferramentas.


    Added display of the number of unread emails


  2. A janela Navegador contém agora a lista dos Expert Advisors que estão em execução na conta de negociação ativa. Além do nome do Expert Advisor, é especificado na lista o gráfico em que o EA está em execução. Um ícone indica se o EA está autorizado a negociar.


    The Navigator window now contains the list of Expert Advisors running on the active trading account


    O menu de contexto contém comandos para habilitar ou desabilitar a negociação automática para qualquer um dos Expert Advisors, bem como para a visualização de suas propriedades ou para removê-lo do gráfico.
  3. Melhorado a precisão do algoritmo para determinar os pontos de acesso disponíveis para conexão com o servidor de negociação.
  4. Corrigido um erro que poderia ocasionalmente limpar o banco de dados das contas dos clientes quando um terminal for reinstalado em cima de um já existente.
  5. A interface do terminal foi adaptada para telas de alta resolução (4K).

Market

  1. Corrigido a atualização do saldo da conta MQL5 após a compra ou aluguel de um produto.

Virtual Hosting

  1. Corrigido a migração dos indicadores personalizados para o ambiente de hospedagem virtual.
  2. Corrigido a atualização do estado da hospedagem virtual na janela do Navegador.

MQL5

  1. Corrigido os erros que poderiam, eventualmente, interferir com a otimização dos Expert Advisors na MQL5 Cloud Network.
  2. Corrigido a chamada do OnDeinit ao excluir um Expert Advisor usando a função ExpertRemove durante os testes. Anteriormente, sob as condições descritas, o evento OnDeinit era chamado.
  3. Corrigido os erros na utilização dos recursos das bibliotecas EX5.
  4. Corrigido os erros na análise de macros.

Corrigido os erros relatados nos registros de falhas.

Documentação atualizada.

A atualização estará disponível através do sistema LiveUpdate.

16 fevereiro 2015
MetaTrader 5 Client Terminal build 1085
  1. Terminal: tornou-se disponível o serviço de Hospedagem Virtual (Virtual Hosting). Agora diretamente a partir do terminal de cliente, você pode alugar um servidor virtual para sua conta de negociação. É mais fácil fornecer uma conexão permanente com o servidor de negociação e proporcionar alimentação contínua do computador para os EAs e os sinais.

    A hospedagem de servidores virtuais é realizada pelas empresas parceiras da MetaQuotes Software Corp.

    Seleção do servidor virtual
    Para receber um terminal funcional no servidor virtual, conecte-se à conta de negociação necessária e execute no menu contextual o comando "Registrar um Servidor Virtual".



    Surgirá a caixa de diálogo "Assistente da Hospedagem Virtual" que mostrará como trabalha uma rede de hospedagem virtual. O processo de obtenção do servidor virtual consiste de três etapas, que mostrarão com se preparar para a migração, e sugerirão selecionar o servidor virtual mais próximo com um atraso mínimo até ao servidor virtual de sua corretora.


    Você pode usar uma dia de hospedagem gratuita, fornecido a cada usuário da MQL5.community registrado, ou escolher um dos planos tarifários. Na última etapa, você precisa selecionar o modo de migração de dados, que depende da finalidade:

    • a opção completa de migração será exigida no caso de você querer executar, simultaneamente, no terminal os experts/indicadores e a cópia de transações segundo a assinatura;
    • apenas experts e indicadores, se a assinatura de sinais não for exigida;
    • no caso de copiar transações segundo a assinatura, são transferidas somente as configurações da cópia de Sinais, porém, nenhum gráfico ou programa.

    Após selecionar o modo de migração, você pode executar o servidor virtual assim que pressionado o botão "Migrar Agora Mesmo" ou fazê-lo mais tarde em qualquer momento conveniente para você.

    Preparativos para a migração
    Antes de executar o terminal virtual, você deve preparar um ambiente ativo para ele, isto é, gráficos, indicadores e experts executados, parâmetros de cópia de transações segundo a assinatura, e configurações do terminal.

    • Gráficos e Observação do mercado - na Observação do mercado, oculte todos as as ferramentas de negociação desnecessárias a fim de reduzir o tráfego. Feche quaisquer gráficos desnecessários. Nas configurações do terminal, defina o valor "Máx. de barras no gráfico", depois disso, é necessário reiniciar o terminal.
    • Indicadores e Experts - adicione ao gráfico todos os experts e indicadores necessários. Os produtos comprados no Mercado, executados no gráfico, também são transferidos durante a migração. Além disso, operam em modo completo e as licenças para a ativação não são desperdiçadas. Todos os parâmetros externos dos indicadores e experts devem ser definidos corretamente.
    • Se o expert tiver que enviar um e-mail, publicar dados via FTP ou copiar negociações segundo a assinatura, é necessário definir todas as configurações necessárias. Não se esqueça de especificar seu nome de usuário e a senha de sua conta na MQL5.Community na aba Comunidade. Isso é necessário para copiar os sinais.
    • Permissão para negociar e copiar sinais - no terminal virtual, sempre há permissão para negociação automática. Para trabalhar com sinais, devem ser definidos parâmetros de cópia na seção Sinais.
    • Solicitações WebRequest - se o programa, projetado para trabalhar no terminal virtual, usa a função WebRequest para o envio de solicitações HTTP, na seção Experts marque solicitação e enumere todas as URL confiáveis.


    Migração
    A migração é o processo de transferência do ambiente atual do terminal de cliente para o virtual.

    A migração é realizada a cada sincronização do terminal de cliente, no entanto, a sincronização trabalha sempre numa direção, em outras palavras, o ambiente do terminal de cliente é transferido para o virtual, mas o contrário não acontece nunca. O estado do terminal virtual pode ser controlado através da consulta de logs do terminal e experts, bem como de dados de monitoring do servidor virtual.
    Para inicializar a sincronização, abra o menu contextual e selecione o tipo de migração.



    Assim, você pode, a qualquer momento, alterar o número de gráficos e listas de símbolos, o conjunto de programas executados e seus parâmetros de entrada, as configurações do terminal e assinaturas de Sinais.
    Ao executar a migração, todas as informações são registradas no log - diário - do terminal.

    Depois de executar a sincronização, abra o diário do terminal virtual para visualizar as ações nele concluídas.


    Trabalho com o terminal virtual
    É fácil controlar o estado do servidor virtual alugado também a partir do terminal de cliente. No menu contextual, é necessário chamar o comando "Detalhes".

    A informação é apresentada em quatro abas.

    • Details - dados sobre o servidor virtual e o ambiente ativo do terminal.
    • CPU Usage - gráfico de carga do processador central em %.
    • Memory Usage - gráfico de uso de memória operativa em MB.
    • Hard Disk Usage - gráfico de uso de unidade de disco rígido dm MB.
    Encontre mais informações sobre o serviço nos artigos "Preparação da conta de negociação para a migrar para a hospedagem virtual", Regras de utilização do serviço de "Hospedagem Virtual MetaTrader".

  2. Market: agora no Mercado MetaTrader já é possível alugar produtos por um período de 1, 3, 6 ou 12 meses. Isso dá vantagens inegáveis tanto a desenvolvedores quanto a compradores. Autores poderão aumentar significativamente a confiança dos usuários em seus produtos, dando-lhes a oportunidade de verificar completamente seu trabalho, por um preço razoável. Para os compradores, o aluguel é mais uma oportunidade para verificar se o programa é a escolha certa. Ao contrário da versão demo, produtos alugados não têm quaisquer restrições para além do prazo de validade.

    Qualquer desenvolvedor no Mercado pode escolher se seu produto estará disponível para alugar, e qual será o custo desse aluguel.



    Se desejar, o desenvolvedor pode não expor produtos para alugar, vendendo apenas licenças completas, sem restrição de data de vencimento.

    Se o produto tiver permissão de aluguel, em sua página serão apresentados seu tempo de concessão e custo. Clique em "Alugar" e selecione o tempo de concessão.

    Quando termine o período de validade, você pode renovar o aluguel ou comprar uma versão ilimitada do produto.

  3. Terminal: agora, ao salvar uma captura de tela, desde o terminal, através da função "Salvar como...", bem como através da função MQL5 Screenshot(), na imagem não se sobrepõem os direitos autorais "MetaTrader 5, @ 2001-2015 MetaQuotes-Software Corp." Isso facilitará a divulgação de imagens.

  4. Terminal: corrigidos erros no cálculo e controle das configurações do indicador embutido Gator Oscillator.
  5. Terminal: melhorado o rastreamento de pontos de conexão ao servidor de negociação.
  6. Terminal: corrigidos erros durante o trabalho do LiveUpdate.
  7. MQL5: na enumeração ENUM_SIGNAL_BASE_STRING adicionada a propriedade do sinal SIGNAL_BASE_CURRENCY, isto é, moeda de depósito do fornecedor do sinal. A propriedade pode ser obtida usando a função SignalBaseGetString.
  8. MQL5: corrigidos erros de compilação ao definir as permissões de acesso aos membros de classe pai no âmbito da herança.
  9. MQL5: corrigido o erro de compilação durante a sobrecarga de métodos de classe sobre parâmetros constantes.
  10. Tester: otimizado o trabalho dos agentes de rede para computação em nuvem MQL5 Cloud Network. Agora, os agentes não gastam tempo com o chamado "pre-aquecimento" - conexão aos servidores de rede em nuvem, que distribuem tarefas. Agora agentes estão constantemente num estado de prontidão para receber e realizar a tarefas. Isso permite acelerar a otimização através da MQL5 Cloud Network.
  11. Tester: melhorada a visualização de agentes locais, remotos e de nuvem, no testador de estratégias.
  12. Correções de crash-logs.
  13. Documentação atualizada.

MetaTrader 5 Android build 1052

No Google Play já está disponível a nova versão do terminal móvel MetaTrader 5 para Android. Nela foram corrigidos alguns bugs e foi melhorada a estabilidade do trabalho. Nas próximas versões, está prevista a adição de objetos de análise e sistema de intercâmbio de mensagens.

Baixe o aplicativo no link: https://download.mql5.com/cdn/mobile/mt5/android?hl=ru&utm_source=www.metatrader5.com


A atualização estará disponível através do sistema LiveUpdate.

16 janeiro 2015
MetaTrader 5 Platform Update Build 1045: Novo formulário de função WebRequest
  1. Trabalhos preparatórios para suporte da hospedagem virtual, no terminal MetaTrader 5. A hospedagem virtual é um serviço que lhe permite alugar um terminal que funciona 24 horas por dia e sem interrupção, sem sair do MetaTrader 5. Uma das principais características é a seleção do servidor mais próximo ao servidor da corretora, o que ajuda a minimizar a latência de rede.




  2. Agentes de teste transferidos para trabalhar apenas em sistemas de 64 bits. Esta decisão é causada pela necessidade de acompanhar o desenvolvimento da indústria IT. Abandono de tecnologias mais antigas em favor de novas aumentará a capacidade de computação e permitirá maior desenvolvimento da rede de computação em nuvem MQL5 Cloud Network.


    Mudanças nos componentes da plataforma:

    • Em versões de 32 bits dos terminais, não estará disponível o uso de agentes remotos e agentes de rede MQL5 Cloud Network. Em vez da lista destes agentes, será exibida a mensagem "Apenas disponível na versão de 64 bits".
    • O gerente de agentes MetaTester 5 Agents Manager estará disponível apenas nas versões de 64 bits. Consequentemente, a instalação de agentes poderá ser realizada apenas em sistemas de 64 bits.


  3. Corrigida a filtragem de notícias ao especificar manualmente uma lista de idiomas nas configurações do terminal.
  4. Otimizado o trabalho trabalhar com um grande número de ordens abertas.
  5. Acelerado o envio de ordens de negociação.
  6. Adaptada a interface para telas de alta resolução, Full HD e superior.

Linguagem MQL5

  1. Adicionado um novo formulário de função WebRequest:
    int WebRequest (string method, string url,string headers,int timeout, const char &data[], int data_size,char &result[], string &result_headers)

    Esta função permite gerar explicitamente o conteúdo do cabeçalho da solicitação HTTP, fornecendo um mecanismo mais flexível de interação com vários de serviços da Web. Exemplo - Publicação automática com WebRequest()

  2. Adicionadas novas propriedades de conta de negociação. Propriedades disponíveis através da função AccountInfoDouble.

    • ACCOUNT_MARGIN_INITIAL - margem inicial atual da conta.
    • ACCOUNT_MARGIN_MAINTENANCE - margem de manutenção atual da conta.
    • ACCOUNT_ASSETS - ativos atuais na conta.
    • ACCOUNT_LIABILITIES - passivos atuais na conta.
    • ACCOUNT_COMMISSION_BLOCKED - comissão bloqueada da conta.

  3. Adicionadas novas propriedades de instrumento de negociação:

    • SYMBOL_OPTION_STRIKE - preço de strike de contrato de opção. A propriedade é obtida através da função SymbolInfoDouble.
    • SYMBOL_BASIS - nombre do ativo subjacente do instrumento de negociação. A propriedade é obtida através da função SymbolInfoString.
    • SYMBOL_OPTION_MODE - tipo de opção, o valor é especificado usando a enumeração ENUM_SYMBOL_OPTION_MODE. 
    • SYMBOL_OPTION_RIGHT - tipo de opção, o valor é especificado usando a enumeração ENUM_SYMBOL_OPTION_RIGHT. A propriedade é obtida através da função SymbolInfoInteger.

  4. Adicionada a função SymbolInfoMarginRate - obtenção do valor do fator de cobrança das margens inicial e de manutenção dependendo do tipo e direção da ordem de negociação.
  5. Corrigido o trabalho da função ChartIndicatorName no testador de estratégias.
  6. Corrigido o erro de compilação de macros contendo a substituição de nome através de ##.
  7. Corrigido o erro que redefinia o atributo final do arquivo ao abrir um novo arquivo.

Correções de crash-logs.

Documentação atualizada.

12 dezembro 2014
MetaTrader 5 Platform Update Build 1035: Option Strategy Builder and Access to Ticks

Trading Terminal

  1. Implementation of functions for trading options is currently underway. The Option Strategy Builder has been added. It helps users combine different options in one investment portfolio, and to assess the possibilities and potential risks.



    The Builder is easy to use: a trader chooses the option based on the expiration date and the underlying asset, and then selects one of the more than 30 available strategies. The Builder displays the appropriate combination of options and calculates evaluation parameters - the so-called Greeks. The profit/loss chart and the Greeks based chart appear at the bottom of the window.

    In addition to a large number of built-in strategies, traders can create and save their own strategies for later use.

  2. Added display of the number of newsletters received in the last 24 hours.




  3. Optimized and accelerated synchronization of large history of trading orders and deals.
  4. Fixed launch of several custom indicators in one chart subwindow.
  5. Fixed recalculation of Bill Williams Market Facilitation Index for a changed chart period.
  6. Fixed minimization of the "Toolbox window".
  7. Fixed generation of the account state report published over FTP.
  8. Updated translation of user interface into German.
  9. Added translation of user interface into Greek and Uzbek.

MQL5 Language

  1. New function for working with the tick history CopyTicks. The function is used for receiving an array of ticks accumulated by the terminal for the current session. The depth is limited to the last 2000 ticks.

    The new function expands the possibilities for developing scalping trading robots. The OnTick function does not handle every tick, it notifies the Expert Advisor of market changes. It can be a batch of changes: the terminal can simultaneously make a few ticks, but OnTick will be called only once to notify the EA of the latest market state. The CopyTicks function allows you to receive and analyze all the ticks.
    int  CopyTicks(
       const string      symbol_name,           // Symbol name
       MqlTick           &ticks_array[],        // the array where ticks will be placed
       uint              flags=COPY_TICKS_ALL,  // the flag that defines the type of received ticks
       ulong             from=0,                // the date starting from which ticks will be received, specified in milliseconds since 01.01.1970
       uint              count=0                // the number of latest ticks that should be received
       );
    Ticks can be requested by the date if the 'from' value is specified, or based on their number using the 'count' value. If none of the parameters are specified, all available ticks are received, but not more than 2000. Ticks can also be requested based on their type using the 'flags' parameter. Available values:

    • COPY_TICKS_ALL - all ticks.
    • COPY_TICKS_INFO - only information ticks (Bid and Ask).
    • COPY_TICKS_TRADE - only trade ticks (Last and Volume).

  2. Added an option for overloading template functions using array parameters.
  3. Added an option for overloading a method based on its constancy.
  4. Added generation of the CHARTEVENT_MOUSE_MOVE event (in the OnChartEvent entry point) at the right mouse button click on the chart.
  5. Fixed the functioning of the Switch operator if the case condition contains a negative value.
  6. Improved calculation accuracy in functions ObjectGetValueByTime() and ObjectGetTimeByValue(), used for receiving the price value for the specified object time and vice versa - time value for a price.

Strategy Tester

  1. MQL5 programs purchased in MetaTrader AppStore can now be tested and optimized on the MQL5 Cloud Network agents and on remote agents.
  2. Fixed calculation of swaps in points for positions with less than 1 lot.
  3. Fixed check and normalization of Stop Loss and Take Profit levels when opening a position for the trading instrument with "Market Execution" type.
  4. Fixed behavior of the ObjectGetValueByTime function. In some cases, the behavior of the function in the tester could be different from its behavior in the terminal.

MetaEditor

  1. Fixed MetaEditor crash when debugging and profiling looped programs.
  2. Added translation of user interface into Greek and Uzbek.

Fixed errors reported in crash logs.

Documentation has been updated.

The update is available through the LiveUpdate system.

31 outubro 2014
MetaTrader 5 Trading Terminal build 1010: New Signals, Market and Options
Trading Signals
  1. The showcase of signals has been completely redesigned. New features have been added, the Signals service design and usability have been improved.



    The new features in the list of signals:

    • The list of signals now contains growth charts similar to those displayed on the MQL5.community site. A green icon in the lower left corner of the chart indicates that this is a real account based signal.
    • Now subscription to a signal is available directly from the list. To subscribe, press the button with the price indication (or the word 'Free', if the signal is free). This will open a subscription confirmation dialog.
    • Now signals can be added to Favorites. Click the star icon at the end of the signal line. After that, the signal can be easily found in the "Favorites" tab.
    • The context menu has been removed. Now to find a signal to which you have subscribed, go to any signal. The top panel shows the signal you are subscribed to and a link to it.

    A signal view page has been updated. A new option allows to add signals to Favorites. The status of the signal account is displayed when hovering the mouse pointer at "Growth".

    Signals statistics have expanded:

    • The total amount of subscribers' funds.
    • Trading account lifetime since its first trading operation.
    • The average position holding time.



    New tabs:

    • Risks - information about the best and worst trading operations and series of operations, and information on drawdowns.
    • Reviews - reviews of signal subscribers.
    • News - through this tab the signal provider can inform subscribers of any change in the signal and post other useful information.

Market

  1. Revised display of products in MetaTrader AppStore. Applications, magazines and books feature the new design. A new option allows to add products to Favorites. Click the star icon in the product view mode. After that, the product can be easily found in the "Favorites" tab.




Trading terminal

  1. The terminal now features an options board and a volatility chart. Implementation of tools for trading options is currently underway. Tools for analyzing option strategies will be added in the next version.




    Options Board
    The options board displays a series of options based on the expiration date for an underlying asset (a class of options) selected in the "Underlying" field. The following parameters are displayed for the options:

    • Bid CALL - the bid price of a call option.
    • Ask CALL - the ask price of a call option.
    • Theo CALL - the theoretical (fair) price of a call option calculated for the specified strike based on historical data.
    • Strike - an option execution price.
    • Volatility - an implied volatility. It is specified as a percentage, and characterizes the expectations of market participants about the value of the underlying asset of the option.
    • Theo PUT - the theoretical price of a put option calculated for the specified strike based on historical data.
    • Bid PUT - the bid price of a put option.
    • Ask PUT - the ask price of a put option.

    Volatility Chart
    Option strikes are shown along the horizontal axis of the chart, and the implied volatility is shown along its vertical axis.




  2. Added display of ping values ​​in the list of access points.




  3. The terminal interface has been adapted for high resolution screens - Full HD and higher. Menus, toolbars, window titles and the status bar are now large enough for easy viewing and working on touch screen of Windows-tablets.

  4. Added a command for managing trading symbols in the "View" menu and on the toolbar. Accessing symbol settings is now as easy as never before:



MQL5 Language

  1. Added conversion of a macro parameter to a string and concatenation of the macro parameter. Below is an example, in which the concatenation of macros allows to organize the automatic removal of the class instances.
    //+------------------------------------------------------------------+
    //|                                                     MacroExample |
    //|                        Copyright 2014, MetaQuotes Software Corp. |
    //|                                       https://www.metaquotes.net  |
    //+------------------------------------------------------------------+
    #property script_show_inputs
    input bool InpSecond=true;
    
    #define DEFCLASS(class_name) class class_name:public CBase{public:class_name(string name):CBase(name){}};
    #define TOSTR(x) #x
    #define AUTODEL(obj) CAutoDelete auto_##obj(obj)
    #define NEWOBJ(type,ptr) do { ptr=new type(TOSTR(ptr)); \
                             Print("Create object '",TOSTR(type)," ",TOSTR(ptr),"' by macro NEWOBJ"); } \
                             while(0)
    //+------------------------------------------------------------------+
    //| The basic class required for automatic deletion of objects       |
    //+------------------------------------------------------------------+
    class CBase
      {
    protected:
       string            m_name;
    
    public:
                         CBase(string name):m_name(name) { }
       string            Name(void) const{ return(m_name); }
    
      };
    //+------------------------------------------------------------------+
    //| The object auto-delete class makes watching of created           |
    //| objects unnecessary. It deletes them in its destructor           |
    //+------------------------------------------------------------------+
    class CAutoDelete
      {
       CBase            *m_obj;
    
    public:
                         CAutoDelete(CBase *obj):m_obj(obj) { }
                        ~CAutoDelete()
         {
          if(CheckPointer(m_obj)==POINTER_DYNAMIC)
            {
             Print("Delete object '",m_obj.Name(),"' by CAutoDelete class");
             delete m_obj;
            }
         }
      };
    //+------------------------------------------------------------------+
    //| Declaring two new classes CFoo and CBar                          |
    //+------------------------------------------------------------------+
    DEFCLASS(CFoo);
    DEFCLASS(CBar);
    //+------------------------------------------------------------------+
    //| The main script function                                         |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       CFoo *foo;
    //--- Creating an object of the CFoo class
       NEWOBJ(CFoo,foo);
    //--- Creating an instance of the CFoo foo object auto-deletion class
       AUTODEL(foo);
    //---
       if(InpSecond)
         {
          CBar *bar;
          //---
          NEWOBJ(CBar,bar);
          AUTODEL(bar);
         }
    //--- No need to delete foo, it will be deleted automatically
      }
    //+------------------------------------------------------------------+
    
  2. Added the OBJPROP_ANCHOR property for the "Bitmap" and "Bitmap Label" objects. The property defines the anchor point of the graphical object on the chart: the upper left corner, center left, lower left corner, bottom center, etc.
  3. Added reading of the CHART_BRING_TO_TOP chart property (the chart is on top of all the others) in the ChartGetInteger function.
  4. Fixed the compilation and generation of the ternary operator "?".
  5. Fixed passing of a class member static array.
  6. Fixed applying of a template to the list of initialization of the template constructor class members.

Trading signals

  1. Restrictions on signal subscriptions became milder:

    If the trading history of the signal contains symbols that are not available in the subscriber's terminal, the subscription is now allowed (was prohibited in previous versions). The actions with the positions for which the subscriber does not have symbols are ignored. The following log appears in the Journal:
    2014.08.26 16:44:29.036    '2620818': Signal - symbol GBPNZD not found
    If the subscriber has positions and/or pending orders, a warning dialog suggesting to close/delete them appears (as before). Now, however, it is not an obligatory condition to continue working with signals.



    Synchronization with the signal provider will be performed. Positions and orders that were opened not based on the subscription signal are left unchanged. The user can perform any operations with them.

    Users can now perform trade operations manually (or using an Expert Advisor), being signed to a signal. The Signals service will ignore the positions and orders opened by the trader.
    Keep in mind that placing orders manually affects the amount of available margin on the trading account. Opening positions manually increases the overall load on the account as compared with the signal provider's account.
  2. Added support for a copied percent for the volumes with a floating point. The minimum percentage of copied volumes for signals has been reduced from 1% to 0.001%.

Strategy tester

  1. Fixed freezing of testing agents when working with the MQL5 Cloud Network.
  2. Fixed calculation of swaps in points for the minimal volumes of trading positions.

MetaEditor

  1. Fixed hotkeys for commands "Navigate Forward" and "Navigate Backward".

MetaViewer

  1. Fixed page navigation on the toolbar.
  2. Fixed text search based on the current interface language.

Fixed errors reported in crash logs.

Documentation has been updated.

The update is available through the LiveUpdate system.
1 agosto 2014
MetaTrader 5 Trading Terminal build 975: Displaying Expert ID

Trading Terminal

  1. Added display of a trade ID (magic number) set by an Expert Advisor. The ID is displayed as a tooltip in the list of open positions and orders, as well as in the trading history.


    Displaying Expert ID


  2. Optimized work with a large number of trading symbols (thousands and tens of thousands).
  3. Fixed display of alerts on the price chart. The alert's price level was sometimes displayed in the indicator's subwindow.
  4. Updated interface translations into Chinese, Turkish and Japanese.
  5. Fixed displaying the list of chart templates in the application's main menu.
  6. Fixed displaying the list of trade symbol sets in the context menu of Market Watch window.

MQL5 Language

  1. Fixed errors in working with built-in structures that could occasionally disrupt the operation of IndicatorParameters and MarketBookGet methods.
  2. Fixed type conversion from bool to string.
  3. Fixed working with virtual functions.
  4. Fixed an error in the operation of FileReadStruct and FileWriteStruct functions within EX5 libraries.
  5. Fixed a compiler error that occurred in case a key word was present in a comment.

Strategy Tester

  1. Fixed calculation of swaps in points when testing.
  2. Fixed passing the file defined in #property tester_file. An error occurred if the file was in the common folder of the client terminals.
  3. Greatly improved selection of the nearest cloud server by the tester agents working within MQL5 Cloud Network of distributed computing. Thus, their operation speed is increased significantly.

MetaEditor

  1. Fixed text replacement when the list of MetaAssist tips is collapsed.

Fixed errors reported in crash logs.

Updated documentation.

The update is available through the LiveUpdate system.

27 junho 2014
MetaTrader 5 trading terminal build 965: Smart Search, OTP and Money Transfer between Accounts

Trading terminal

  1. Completely revised built-in search. The new search is a smart and powerful system. Search results are now conveniently arranged by categories.

    As you type in search query, the system instantly offers possible options:



    In order to search by one of the previous queries, place the cursor to the box and click Down Arrow key to open the query history. Selection of a search area is not available in the search bar any more, as the system automatically selects the most relevant results arranging them by categories conveniently:



    For better representation, search results now contain not only texts but also avatars of articles, books and applications. Use the top panel to view the search results by MetaTrader Appstore Products, Code Base, Signals, MQL5.community Forum and Documentation. If a category has no results, it is highlighted in gray.

  2. Added the OTP authentication feature. Use of OTP (one-time password) provides an additional level of security when working with trading accounts. The user is required to enter a unique one-time password every time to connect to an account.

    One-time passwords are generated in the MetaTrader 5 mobile terminal for iPhone . The same one-time password generation option will be added in the mobile terminal for Android soon.

    How to enable OTP
    To start using one-time passwords, a trading account should be bound to a password generator, which is the MetaTrader mobile terminal 5 for iPhone.
    The use of the OTP option should be enabled on a trade server.
    Go to the Settings of the mobile terminal and select OTP. For security reasons, when the section is opened for the first time, a four-digit password should be set. The password must be entered every time to access the password generator.



    In the window that opens, select "Bind to account".



    Next, specify the name of the server on which the trading account was opened, the account number and the master password to it. The "Bind" should be kept enabled. It must be disabled, if the specified account should be unbound from the generator and one-time passwords should no longer be used.

    After the "Bind" button located in the upper part of the window is tapped, a trading will be bound to the generator, and an appropriate message will appear.



    Likewise, an unlimited number of accounts can be bound to the generator.

    The one-time password is displayed at the top of the OTP section. Underneath, a blue bar visualizes the password lifetime. Once the password expires, it is no longer valid, and a new password will be generated.

    Additional Commands:

    • Change Password - change the generator password.
    • Synchronize Time - synchronize the time of the mobile device with the reference server. Accuracy requirement is connected with the fact that the one-time password is bound with the current time interval, and this time should be the same on the client terminal and the server side.

    How to use OTP in the desktop terminal
    After binding a trading account to the generator, a one-time password will be additionally requested when connecting to it from the desktop terminal:




  3. Added an option for transferring money between accounts within the same trade server. Money can be transferred only from the currently connected account. Select it in the "Navigator" window and click "Transfer funds" in the context menu.



    In the dialog box, select the account to which funds need to be transferred. The transfer amount is specified in the deposit currency of the current account. It cannot exceed the current balance and the current amount of free margin of the account.

    To transfer funds, a master password must be specified for both accounts. If OTP authentication is used for the account, from which funds are transferred, the one-time password should be additionally specified.

    Transfer of funds is provided in the form of balance operations: a withdrawal operation on the current account and depositing operation on the recipient account.
    • The money transfer option should be enabled on the trade server. Depending on the settings, there are some restrictions on the accounts, between which transfer is allowed. In particular, money transfer can be allowed only for accounts with identical names and emails.

    • Funds can be transferred only within the same trading server and only between the accounts of the same type. From a real account funds can be transferred only to another real account, from a demo one - only to demo.
    • The accounts, between which funds are transferred, should use the same deposit currency.
  4. Added an option for changing the password of any trading account in the "Navigator" window. Previously, it was possible to change the password only for the currently connected account.

    Now any account can be selected in the "Navigator" window and its passwords can be changed by clicking the appropriate command in the context menu:




  5. Added the possibility to set SL and TP levels on the chart by dragging the trade level of the corresponding position (using drag'n'drop). Hover the mouse over the level of the position on the chart. Click the left mouse button and hold it to move the level up or down.



    For long positions dragging down allows to set stop loss, up - take profit. And vice versa for short positions. When a level is dragged, the possible profit/loss in pips and currency, which may occur when this level triggers, is shown.

  6. Changed the location of commands in the "Window" menu. Now the "Tile window" option is displayed first, hotkeys Alt+R have been assigned for this command. This command has also been added to the standard toolbar.




  7. In the "Navigator" categories "Indicators" and "Custom Indicators" have been combined into one category "Indicators".



    All custom indicators, examples, and indicators purchased from the MetaTrader AppStore are now shown together with the built-in technical indicators. Four categories of built-in indicators are always displayed first.

  8. Revised the Navigator's context menu.

    Login has been renamed to "Login to Trade Account". Authentication in MQL5.community is available not only via the terminal settings but also via the context menus of the "Accounts" section and its subsections.



    The following changes have been implemented to the account's context menu:
    • Moved "Open an Account" command to the first position.
    • Added "Change Password" feature.
    • Added "Register a Virtual Server" command.

  9. Fixed display of the Label and Bitmap Label graphical objects with the anchor point located in one of the bottom corners of a chart.

MQL5 Language

  1. Added WebRequest() function for working with HTTP requests allowing MQL5 programs to interact with different websites and web services.

    The new function allows any EA to exchange data with third-party websites, perform trades based on the latest news and economic calendar entries, implement analytics, generate and publish automatic reports, read the latest quotes and do many other things that could previously be achieved only by using third-party DLLs of questionable reliability. The new feature is absolutely safe for traders, as they are able to manage the list of trusted websites the programs have access to.

    WebRequest function sends and receives data from websites using GET and POST requests. The new feature is absolutely safe for traders, as they are able to manage the list of trusted websites the programs have access to.




    This option is disabled by default for security reasons.

  2. Added access to signals database and managing signals subscription from MQL5 applications.

    Now, a user can receive the list of signals, evaluate them according to user-defined criteria, select the best one and subscribe to it automatically from a MQL5 program. In fact, it means the advent of the new class of trading robots that periodically look through available signals and subscribe to the one that is most suitable at the moment.

    For this purpose new signal management functions have been added to the MQL5 language:

    • SignalBase*() — functions for accessing the signals database.
    • SignalInfo*() — functions for receiving signal settings.
    • SignalSubscribe() and SignalUnsubscribe() — subscription management functions.

    Thus, a user can not only copy trades, but also to select signals for copying. Both processes are automated.

    By default, a trading robot is not allowed to change signal settings for security reasons. To enable this function, tick the "Allow modification of Signals settings" option in Expert Advisor settings.




  3. Added new properties of the client terminal that are available through the TerminalInfo* functions:
    • TERMINAL_MQID - the property shows that MetaQuotes ID is specified in terminal settings.
    • TERMINAL_COMMUNITY_ACCOUNT - this property shows that MQL5.community account is specified in the settings.
    • TERMINAL_COMMUNITY_ACCOUNT - this property shows that MQL5.community account is specified in the settings.
    • TERMINAL_COMMUNITY_BALANCE - value of balance on the MQL5.community account.
    • TERMINAL_NOTIFICATIONS_ENABLED - shows whether sending notifications through MetaQuotes ID is allowed.

  4. Added functions for working with cryptographic algorithms: CryptEncode() and CryptDecode(). These functions allow you to encrypt and decrypt the data, for example, when sending data over the network using the WebRequest() function. They also allow you to calculate checksums and make data archiving.

    Function signatures:
    int CryptEncode(ENUM_CRYPT_METHOD method,const uchar &data[],const uchar &key[],uchar &result[]);
    int CryptDecode(ENUM_CRYPT_METHOD method,const uchar &data[],const uchar &key[],uchar &result[]);
    A new enumeration ENUM_CRYPT_METHOD has been added for working with the functions:
    CRYPT_BASE64,      // BASE64 encryption (re-encoding)
    CRYPT_AES128,      // AES encryption with 128-bit key
    CRYPT_AES256,      // AES encryption with 256-bit key
    CRYPT_DES,         // DES encryption (key length is 56 bits - 7 bytes)
    CRYPT_HASH_SHA1,   // calculation of HASH SHA1
    CRYPT_HASH_SHA256, // calculation of HASH SHA256
    CRYPT_HASH_MD5,    // calculation of HASH MD5
    CRYPT_ARCH_ZIP,    // ZIP archive

  5. Added an option for changing the size of the properties dialog of MQL5 programs.




  6. Added ability to debug the template functions.
  7. Added definition of the custom indicators that are executed too slowly. If the indicator is slow, "indicator is too slow" entry appears in the Journal.
  8. Fixed the value returned by the IsStopped() function. This function is used for determining the forced stopping of MQL5 programs in custom indicators. Previously, this function always returns FALSE.
  9. Fixed verification of input parameters of MQL5 programs by data type. In particular, for the parameter type uchar, one could specify a value greater than 255.
  10. Fixed an error in StringConcatenate() function.
  11. Fixed FileSize() function for files that are available for writing. Previously, the function returned the file size without considering the latest write operations.
  12. File operations have been revised. Now work with files has become faster.

Trading Signals

  1. Fixed copying of SL and TP values of trade positions in case the number of decimal places in the symbol price of the signal source differs from that of the subscriber.
  2. Fixed copying of trade positions from signal providers with incorrect settings of trade instruments on the side of the trade server.
  3. Fixed closing of positions opened by a trading signal when account Equity value falls below the value specified in the signal copying parameters. In some cases, closing of positions could lead to terminal crash.

MetaEditor

  1. Optimized work with large source text files (tens of megabytes). Increased operation speed and reduced memory consumption.
  2. Fixed navigating through a source code using "Ctrl + -" and "Ctrl + Shift + -" shortcuts.

Fixed errors reported in crash logs.

Updated documentation.

The update will be available through the LiveUpdate system.

11 abril 2014
MetaTrader 5 Build 930

Market

  1. Another new product category has been added to MetaTrader AppStore following trading and financial magazines - Books. Now, you can purchase the works of well-known traders and analysts along with trading robots and indicators. The range of books is increasing daily.


    Books in MetaTrader Market

    Just like MetaTrader 5 applications, books can be purchased at MQL5.community Market as well as directly via MetaTrader 5 terminal. All books are accompanied by descriptions and screenshots:




    Before making a purchase, you can download a preview - the first few pages of a book. The exact number of available pages is defined by a seller.

    To buy a book, you should have an MQL5.com account and the necessary amount of funds on it. The account data should be specified at the Community tab of the terminal settings:



    Click Buy on the book's page to purchase it. Purchase confirmation dialog appears:



    To continue, agree to the rules of using the Market service and enter your MQL5.community password. After that, the specified amount of funds will be withdrawn from your account and the book will be downloaded. Buy button will be replaced by Open one.

    Book files are downloaded to My Documents\MQL5 Market\Books\. The download may be performed in two formats:

    • MQB - this protected format is used for paid books. When purchasing and downloading a book file, it is encoded so that it can be opened only on the PC it has been downloaded to. Generation of an encoded copy is called activation. Each book can be activated at least 5 times on different hardware. Book sellers can increase the number of activations at their sole discretion.
    • PDF - this format is used for free books and previews. After downloading, such file can be moved and viewed on other devices.

    The special component called MetaViewer has been added to MetaTrader 5 terminal allowing users to view book files. MetaViewer is a convenient application for viewing books and magazines in MQB and PDF formats. Keyboard arrows are used to turn over the pages: left and right arrows - for page-by-page navigation, while up and down arrows - for scrolling.


    MetaViewer


Trading terminal

  1. Fixed display of Fibonacci Fan graphical object's levels when zooming. A layout could be displaced in earlier builds.
  2. Fixed an error that in some cases prevented graphical objects from being drawn on the chart.
  3. Fixed errors and terminal crashes when working in Wine (for Linux and Mac OS), including crashes that occurred while opening the user guide.
  4. Updated translation of the interface into Arabic.

Market

  1. Revised display of products in MetaTrader AppStore. Applications, magazines and books feature new design:


    Revised Display of Products in Market

  2. Market: Fixed resumed download of large files (primarily, magazines and books) from the Market.

MQL5 Language

  1. Changed StringSplit function operation. Previously, ";A;" string was split into NULL and "A" substrings using ';' separator. Now, it is split into "","A" and "" substrings.
  2. Fixed checking and tracking parameter and operand constancy.

Trading Signals

  1. Added additional checks for the allowed trading modes at a symbol when copying signals. If a signal arrives at a subscriber's account but only closing of positions is allowed at that symbol, this will no longer cause complete termination of signals copying and forced closing of all positions. Now, if a signal for position opening arrives at a subscriber's account, the platform perceives that as the command to synchronize subscriber's and provider's accounts. A signal for position closing is handled as usual.

Strategy Tester

  1. Added interface translations into French, Japanese and Arabic. Updated translations into German, Italian, Polish, Portuguese, Russian, Spanish, Turkish and Chinese.

MetaEditor

  1. Fixed highlighting and navigation through a hieroglyphic text.
  2. Fixed selecting a default trading symbol during an MQL5 application profiling. The default symbol is specified in Debug tab of MetaEditor options.
  3. Fixed display of the tab characters in search results. Previously, the tab characters were ignored and string content was displayed with no spaces.

Fixed errors reported in crash logs.

Updated documentation.

The update will be available through the LiveUpdate system.

7 março 2014
MetaTrader 5 build 910

Trading terminal

  1. Fixed errors and crashes when working in Wine (for Linux, Mac).
  2. Fixed display of Gann Grid graphical object's central line when zooming.

MQL5 Language

  1. Fixed an occasional error when downloading .ex5 files.
  2. Fixed operation of StringToCharArray and StringToTime functions.
Fixed errors reported in crash logs.
Updated documentation.
12345678910111213