Última atualização da MetaTrader 4

Plataforma de negociação para o Forex na MetaTrader 4

19 maio 2017
MetaTrader 4 build 1090
Uma atualização da plataforma MetaTrader 4 contém correções no trabalho do terminal de cliente.
12 maio 2017
MetaTrader 4 build 1080

Um mês atrás, a Microsoft lançou uma grande atualização do sistema operacional Windows 10 Creators Update (versão 1703). Depois de instalar esta atualização, alguns usuários não conseguiram executar programas MQL4 em seus terminais. Este problema foi corrigido na nova versão da plataforma MetaTrader 4 build 1080. Agora, Expert Advisors e indicadores serão executados em gráficos corretamente, enquanto não será necessária a compilação usando o novo MetaEditor.

Em 1 de outubro de 2017, será descontinuado o suporte para terminais de cliente MetaTrader 4 inferiores ao build 1065. Esses terminais não poderão se conectar aos servidores de novas versões. Recomendamos fortemente que você atualize seus terminais com antecedência.


23 março 2017
MetaTrader 4 build 1065

Nela foi corrigido o erro de reinicialização dos Experts nos gráficos após mudar de timeframe. Agora o trabalho dos EAs não é interrompido e eles são reinicializados corretamente.

3 fevereiro 2017
MetaTrader 4 build 1045

A atualização da plataforma MetaTrader 4, causada pela liberação da versão preliminar do Windows 10 Insider Preview build 15007. As alterações nos mecanismos de segurança do sistema operacional do Windows 10 levaram ao fato de que em alguns casos os terminais de cliente MetaTrader 4 não podem ser iniciados.

Certifique-se de instalar a nova versão da plataforma para se preparar para o lançamento da próxima atualização do Windows 10.

16 dezembro 2016
MetaTrader 4 build 1031
Corrigimos vários bugs de crash-logs.
14 outubro 2016
MetaTrader 4 Android build 996
  1. Adicionado bate-papo onde você pode falar gratuitamente com membros da MQL5.community. Simplesmente especificando o login do usuário no destinatário das mensagens, você pode enviar-lhe mensagens diretamente para o dispositivo móvel.

  2. Adicionada a possibilidade de editar os níveis dos indicadores.
  3. Adicionadas a traduções da interface para indonésio e híndi.
30 agosto 2016
MetaTrader 4 iOS build 975
  1. Um novo design de mensagens. Agora, as mensagens MQL5.community e notificações push da plataforma de desktop são exibidos como chat, semelhantes aos populares messengers de celular.

  2. Agora é possível mudar para uma das 22 línguas disponíveis direto da plataforma. Se você preferir usar a interface de inglês enquanto negocia, você pode selecioná-la na seção "Opções" ("Sobre o programa" no iPad) sem alterar a configuração de idioma de seu dispositivo.

18 agosto 2016
MetaTrader 4 build 1010: expansão dos recursos MQL4

Terminal

  1. Foi corrigido o erro que impedia a execução de programas MQL4 em terminais, ao trabalhar em versões de 32 bist de Windows 10, build 1607.
  2. Foram corrigidos os erros que, em alguns casos, causavam a exibição errada dos botões de pesquisa e do bate-papo.
  3. Foi corrigido o erro que, em alguns casos, causava a duplicação das cartas de boas-vindas recebidas no terminal ao abrir uma conta demo.

MQL4

  1. Foram adicionados os ponteiros 'void *', isso irá permitir criar coleções abstratas de objetos. Neste tipo de variável, você pode armazenar um ponteiro para um objeto de qualquer classe. Para a conversão inversa, recomenda-se usar o operador dynamic_cast<nome da classe *>(ponteiro void *). Se a conversão não for possível, o resultado será NULL.
    class CFoo { };
    class CBar { };
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       void *vptr[2];
       vptr[0]=new CFoo();
       vptr[1]=new CBar();
    //---
       for(int i=0;i<ArraySize(vptr);i++)
         {
          if(dynamic_cast<CFoo *>(vptr[i])!=NULL)
             Print("CFoo * object at index ",i);
          if(dynamic_cast<CBar *>(vptr[i])!=NULL)
             Print("CBar * object at index ",i);
         }
       CFoo *fptr=vptr[1];  // emite um erro sobre coerção do ponteiro, vptr[1] não é um objeto CFoo
      }
    //+------------------------------------------------------------------+
  2. Foi adicionado o suporte do operador [] para a cadeia de caracteres, isso irá permitir obter um símbolo a partir da cadeia de caracteres no índice. Se o índice especificado sair dos limites da cadeia de carateres, o resultado será 0.
    string text="Hello";
    ushort symb=text[0];  // retorna o código do símbolo 'H'
    
  3. Foi melhorado o trabalho com funções de cópia de dados histórica CopyXXX de ticks.
  4. Foi corrigido o erro de eliminação em massa de objetos gráficos no prefixo usando a função ObjectDeleteAll. Antigamente, após a execução de esta função, era violada a ordem de desenho dos objetos restantes.
  5. Foi corrigido o erro que, em alguns casos, levava a uma violação da ordem de exibição de objetos gráficos, durante a alteração do timeframe.

Hospedagem

  1. Agora, na sincronização do terminal com o servidor virtual, os gráficos sem EA (conselheiros) não estarão mais envolvidos, mesmo se indicadores personalizados estiverem em execução neles. Para migrar separadamente um indicador personalizado funcional, no seu gráfico, execute um conselheiro "vazio" que não esteja a realizar nenhuma operação. Ele pode ser facilmente gerado através do Master MQL4, no MetaEditor, selecionando "Advisor: modelo". Isso garante que a migração de indicadores personalizados seja feita conscientemente.
  2. Agora, você pode sincronizar conselheiros (EA) e indicadores personalizados que contêm, no nome, caracteres não-latinos (por exemplo, caracteres chineses, cirílicos, etc.)
  3. Correções de crash-logs.


1 julho 2016
MetaTrader 4 build 985: bate-papo embutido MQL5.community

Terminal

  1. Foi adicionado um bate-papo embutido. Agora, diretamente na plataforma, você pode conversar com amigos e colegas na MQL5.community. No bate-papo é exibido todo o histórico de conversas, bem como a número de mensagens não-lidas. 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.




  2. Foi otimizada a leitura da base do e-mail interno ao executar o terminal.

MQL4

  1. Foi adicionada a possibilidade de exibir/ocultar a escala do preço e do tempo em qualquer gráfico. Anteriormente, o programa MQL4 podia alterar as propriedades CHART_SHOW_PRICE_SCALE e CHART_SHOW_DATE_SCALE apenas do gráfico no qual ele estava sendo executado.
  2. Foi adicionada a propriedade MODE_CLOSEBY_ALLOWED para a função MarketInfo. O valor TRUE significa que no instrumento indicado é permitida a opreação Close By, isto é, fechamento da posição oposta.
  3. Foi corrigida a transferência do parâmetro de seqüência para o ponto de entrada OnChartEvent, que levava ao valor incorreto do parâmetro. O OnChartEvent permite rastrear eventos no gráfico: pressionar um botão no teclado, deslocar o mouse e outros.
  4. Foi acelerada a eliminação em massa de objetos gráficos usando a função ObjectsDeleteAll.

Signals

  1. Foi melhorada a comparação automática dos pares de moedas contendo RUB e RUR.

Tester

  1. Foi corrigida a colocação do tempo de criação de objetos gráficos durante os testes. Anteriormente, era colocada a hora atual do terminal, em vez do tempo de teste.

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.
  3. Correções de crash-logs.


3 junho 2016
MetaTrader 4 build 970: abertura de contas demo simplificada e expansão das possibilidades MQL4

Terminal

  1. Foi simplificada a janela de abertura da conta demo. 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 e alavancagem.




MQL4

  1. Foi alterado o formato dos arquivos executáveis EX4 devido ao acrescentamento de novas funcionalidades na linguagem MQL4. Todos os antigos programas EX4 estão compilados no MetaEditor dos anteriores builds, após a atualização funcionarão corretamente. Desse modo, a compatibilidade de baixo para cima foi preservada em sua totalidade.

    Ao mesmo tem, os programas EX4, compilados nos builds 970 e superior, não funcionarão nos terminais dos antigos builds devido à ausência de compatibilidade no sentido oposto.

  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 CAnimal tornou-se abstrata e não pode ser criada
      };
    //--- descendente a partir 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 utilização incorreta
    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 utilização correta
    new CCat;  // não há erro - a classe CCat não é abstrata
    CCat cat;  // não há erros - 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, a chamar:
    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.

  4. 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.
  5. 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.
  6. Nos indicadores personalizados, os buffers DRAW_NONE (sem construção gráfica) agora não participam nos cálculos do mínimo e máximo da janela do gráfico.
  7. Foi corrigida a formação de eventos, ao mover o mouse e pressionar os botões dele sobre os objetos do tipo OBJ_LABEL e OBJ_TEXT. Anteriormente, quando se encontravam nas bordas de outros objetos do tipo OBJ_RECTANGLE_LABEL, OBJ_RECTANGLE, os eventos formavam-se incorretamente.
  8. Nos indicadores personalizados, foi corregido o desenho das barras do histograma de altura zero. Anteriormente, essas barras não se desenhavam, agora elas são desenhadas com uma altura de 1 pixel.

Signals

  1. Foram corrigido os erros de pesquisa de instrumentos de negociação, ao comparar as ferramentas de negociação disponíveis da fonte do sinal e o assinante.

Tester

  1. Foi corrigida a implementação do spread no arquivo fxt, caso nas configurações de teste for utilizado o spread atual.

Market

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

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.

Correções de crash-logs.

18 maio 2016
MetaTrader 4 Android build 952
  1. Adicionamos uma janela pop-up com informações detalhadas sobre as negociações. Em um toque você poderá verificar: o momento de abertura ou fechamento das ordens, os seus comentários anexados às posições e o tamanho da comissão do corretor.
  2. Agora temos, no gráfico, uma linha vermelha que corresponde ao preço Ask da última barra. Isso irá ajudá-lo a controlar mais precisamente as suas negociações.
  3. Ajustamos o trabalho com notícias para que você possa selecionar, à vontade, apenas a categoria que lhe interessa ler e adicionar seus materiais prediletos aos favoritos.
  4. Todas as alterações nas configurações dos objetos analíticos são salvas após fechar o aplicativo.
6 maio 2016
MetaTrader 4 iOS build 947

Agora, você pode definir um código de segurança para acessar a aplicação. Isso proporcionará proteção adicional às suas contas, mesmo que você perca o seu dispositivo móvel. Habilite "Bloquear ecrã" nas configurações da aplicação. Por defeito, o código de segurança é igual ao código usado para acessar o gerador de senhas descartável.

Além disso, a nova versão inclui múltiplas melhorias e correções.

23 fevereiro 2016
Plataforma web MetaTrader 4: um conjunto completo de indicadores técnicos e interface em 38 línguas

A nova versão da plataforma web MetaTrader 4 recebeu um conjunto completo de indicadores para análise técnica. Agora ela dispõe de 30 dos indicadores técnicos mais populares do mundo, como na versão para PC da MetaTrader 4:

Acelerador Oscilador
DeMarker Moving Average
Acumulação/Distribuição  Envelopes Moving Average of Oscillator
Alligator Force Index
On Balance Volume
Average Directional Movement Index Fractais Parabolic SAR 
Average True Range
Oscilador Gator Relative Strength Index 
Oscilador Maravilhoso Ichimoku Kinko Hyo Relative Vigor Index
Bears Power
MACD Desvio Padrão
Bollinger Bands
Índice de facilitação de mercado
Stochastic Oscillator
Bulls Power
Momentum Volume
Commodity Channel Index
Índice de fluxo de dinheiro Williams' Percent Range

Continuamos trabalhando no acesso à aplicação, é por isso que agora a interface da plataforma web está disponível em 38 línguas. Foram adicionadas traduções em 14 línguas:

Neerlandês
Lituano Croata
Grego Romeno Tcheco
Hebraico Sérvio
Sueco
Italiano Esloveno
Estoniano
Letão
Finlandês



Abra a sua plataforma web agora e desfrute da sua aplicação atualizada!

15 fevereiro 2016
Plataforma web MetaTrader 4: foram adicionados os indicadores Bill Williams

Na nova versão da plataforma web MetaTrader 4, aceleramos significativamente os gráficos graças à utilização da moderna tecnologia gráfica WebGL, de modo que agora até um conjunto de indicadores executados ao mesmo tempo não irá afetar o desempenho da plataforma web.

Foi iniciado um trabalho sobre a implementação de indicadores técnicos. Atualmente já estão disponíveis os indicadores Bill Williams:

  1. Alligator,
  2. Fractals,
  3. Market Facilitation Index,
  4. Awesome Oscillator,
  5. Accelerator Oscillator,
  6. Gator Oscillator.
Continuamos trabalhando no acesso à aplicação, é por isso que traduzimos a interface para híndi, usbeque e ucraniano.
15 janeiro 2016
MetaTrader 4 iOS build 945
  • Adicionado suporte para o modo retrato na versão iPad. Agora você pode facilmente visualizar longas listas de operações de negociação, bem como notícias e e-mails.
  • Adicionado suporte para iPad Pro.
  • Nova interface de linguagem: Coreano.
  • Várias correções de bugs e melhorias.
23 dezembro 2015
MetaTrader 4 build 950: Vídeos incorporados e funcionamento melhorado

Virtual Hosting

  1. Um link que conduz ao vídeo tutorial "Como arrendar uma plataforma virtual" foi adicionado à 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 da MetaQuotes Software Corp. no YouTube.

Terminal

  1. Foi corrigida a classificação de programas MQL4 nas subpastas da janela "Navegador". A classificação é realizada por nomes.
  2. Foi corrigido o desenho do indicador de status de conexão de rede, ao trabalhar com ecrãs de alta resolução (4K).
  3. Foi corrigida a exibição da janela de visualização de impressão para notícias.
  4. Foi adicionada uma pesquisa completamente funcional ao visualizador de registro do terminal, do Expert Advisor, do testador e do hosting virtual. Agora você pode realizar a pesquisa para diante e para atrás, tendo em conta o registro e introduzindo palavras inteiras.

MetaEditor

  1. Foi adicionado o link do vídeo tutorial "Como montar um robô de negociação" ao Assistente MQL4. 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.

MQL4

  1. Foi corrigido o valor retornado pela função SignaBaseTotal. Em alguns casos, em vez do número total de sinais disponíveis no terminal, voltava ao valor 0.
  2. Foi corrigido o erro ao alterar a visibilidade de um objeto gráfico em diferentes timeframes de MQL4 programas. Em alguns casos, o objeto no era exibido no gráfico, apos alterar esta propriedade.

Tester

  1. Foi corrigida a exibição dos valores de preços e níveis SL\TP na janela de resultados de simulação (testes).

Correções de crash logs.

11 dezembro 2015
MetaTrader 4 build 940: Otimizada para telas de alta resolução (4K)

Terminal

  1. A interface do terminal foi completamente adaptada para telas de alta resolução (4K). Todos os elementos de interface do usuário são exibidos corretamente em telas grandes. Nas telas menores, os elementos de interface do usuário são aumentados automaticamente para melhor visualização.




MQL4

  1. Corrigido um bug que poderia causar ocasionalmente o erro ao escrever um arquivo EX4 ("Error writing EX4") durante a compilação no Windows 10.
  2. Corrigido um bug que poderia causar ocasionalmente erros ao carregar DLLs externos em scripts e Expert Advisors.

Virtual Hosting

  1. Corrigida a migração do ambiente de negociação com um indicador personalizado que continha uma chamada da biblioteca EX4, se o indicador fosse chamado a partir de um Expert.

Sinais

  1. Corrigidas as notificações de erros na página de assinatura do sinal. Por exemplo, as notificações sobre a ausência de ativos (símbolos) necessários para as cópias, sobre diferentes condições de negociações, etc.

MetaEditor

  1. Corrigido o arranjo das janelas abertas, se uma delas fosse maximizada. Agora usando os comandos apropriados do menu Janela, os arquivos abertos podem estar lado a lado, em cascata, dispostos verticalmente e horizontalmente .
Corrigidos erros relatados nos registros (arquivos logs) quebrados.
26 novembro 2015
MetaTrader 4 build 920: Operação mais rápida e gerenciamento de teste visual a partir de um arquivo de configuração

Terminal

  1. Corrigido a varredura inicial e periódica dos servidores de negociação no diálogo de abertura da conta de negociação. Agora, a disponibilidade e os pings são definidos oportunamente, sem a necessidade de digitalização manual.




  2. A operação do terminal do cliente foi otimizada e acelerada.
  3. A interface do terminal foi adaptada para telas de alta resolução (4K).

MQL4

  1. Corrigido o download de indicadores personalizados a partir dos recursos de aplicativos MQL4. Os indicadores são incluídos nos recursos através da diretiva #resource. Isto permite a criação dos aplicativos tipos "todos em um", que são muito mais fáceis de distribuir.
  2. Corrigido a precisão do valor de nível nos indicadores personalizados. Anteriormente esta precisão sempre compreendia 4 casas decimais, agora depende da precisão de valores apropriados do indicador personalizado.
  3. Corrigido a verificação da possibilidade de reduzir o tipo de um objeto a outro tipo, resultado da herança ao transferir o objeto como um parâmetro método\função.
  4. Corrigido o recálculo dos indicadores padrão num buffer específico (iIndicatornArray), no caso dos dados serem definidos por uma array de tamanho fixo. Antes, eventualmente o indicador não era recalculado.
  5. Erros foram corrigidos nos modelos de classe.

Testador

  1. Adicionado a possibilidade de gerenciamento do modo de visualização, quando se abre no testador uma configuração de arquivo ini. O novo parâmetro TestVisualEnable (true/false) foi implementado para que se o parâmetro não for especificado, a configuração atual é usada.
  2. Corrigido um erro nas funções CopyXXX provocados por dados históricos reais, em vez de ser devolvido o teste histórico padrão.
  3. Corrigido o teste de leitura dos parâmetros a partir da configuração do arquivo ini, transferido na linha de comando.
  4. Corrigido desalocamento de memória excessiva após o fechamento de um gráfico no teste visual, ocasionalmente indisponibilizando dados histórico para as efetivas operações dos Expert Advisors.

Corrigidos erros relatados nos registros (logs) dos problemas.

12 novembro 2015
MetaTrader 4 build 910: Aperfeiçoadas a Base de Código e a Interface no Windows 10

CodeBase

  1. Corrigido e agilizado o download de programas MQL4 a partir da Base de Código na Comunidade MQL5. Faça o download gratuitamente dos códigos fonte de robôs de negociação e indicadores diretamente da plataforma.

Terminal

  1. Corrigido o descarregamento do histórico de preços da memória. Anteriormente ocorria um erro no caso de memória insuficiente.
  2. Corrigida a exibição de alguns elementos da interface do usuário ao trabalhar com Windows 10.
  3. Corrigido a remoção de objetos do gráfico usando a tecla de espaço.

Sinais

  1. Melhorias e correções das traduções da vitrine dos sinais de negociação.

MQL4

  1. Implementado a propriedade somente de leitura SYMBOL_VISIBLE ao enumerador ENUM_SYMBOL_INFO_INTEGER.
  2. Corrigido a operação do template.
  3. Corrigido o comportamento da função ArrayCopy ao copiar um array de string em que a área de dados dos códigos e o destinatário se sobrepõem totalmente ou parcialmente

Testador

  1. Implementado uma limitação ao testar versões demo de indicadores e Expert Advisors do Mercado MQL5. Agora, os testes das versões de demonstração dos produtos pagos serão rigorosamente concluídos na data estabelecida.

MetaEditor

  1. Conflitos ocasionais foram corrigidos entre as dicas de ferramentas e outras aplicações.

Corrigidos erros relatados nos registros (arquivos logs) quebrados.


22 outubro 2015
MetaTrader 4 Build 900: Modelos de Classes em MQL4 e Otimização do Uso de Memória

Terminal

  1. Corrigida a alteração da senha para uma conta inativa (sem conexão).




  2. Otimização do uso e liberação de memória quando se trabalha com grandes quantidades de dados históricos.
  3. Corrigido e otimizado o trabalho com um grande número de categorias de notícias.

Sinais

  1. Corrigido o cancelamento de sinais através do menu de contexto da janela do Navegador.



MQL4

  1. Implementado modelos 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. Um 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(i=0;i<10;i++)
          str+=" "+(string)ExtIntArray[i];      
       Print(str);   
       str="Dbl:";
       for(i=0;i<10;i++)
          str+=" "+DoubleToString(ExtDblArray[i],1);
       Print(str);   
       str="Ptr:";
       for(i=0;i<10;i++)
          str+=" "+(string)ExtPtrArray[i].X();      
       Print(str);
    //--- Objetos CFoo criados via nova versão não devem ser suprimidos, uma vez que eles são excluídos no objeto destructor TArrayPtr <CFoo>  
      }
    Resultado da execução:
    TemplTest EURUSD,M1: Ptr: 30 31 32 33 34 35 36 37 38 39
    TemplTest EURUSD,M1: Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
    TemplTest EURUSD,M1: Int: 10 11 12 13 14 15 16 17 18 19
  2. Corrigida a realocação de memória na função ArraycCpy, ocasionalmente poderia causar falhas de programas MQL4.

Testador

  1. Corrigido um erro que ocasionalmente causava nulidade das variáveis ​​declaradas a nível global depois de testado um indicador.
  2. Corrigido o teste quando a conexão com um servidor de negociação era perdido.

MetaEditor

  1. Corrigida a definição do nome de função no MetaAssist na presença de tipo "casting.'
  2. Corrigido a abertura de arquivos grandes.
  3. Implementado a tecla de atalho F para chamar a função de pesquisa da guia Base de Código, bem como várias dicas na barra de status para os comandos de trabalho com um código: aumentar/diminuir o recuo, navegação, deslocamento, etc.
Corrigidos erros relatados nos registros (logs) quebrados.
1234567