---
title: "MetaTrader 5 build 1930: Gráficos flutuantes e bibliotecas .Net em MQL5 - Última atualização"
description: "Agora você pode exibir gráficos de instrumentos financeiros fora da janela do terminal de negociação. Isso é conveniente quando se... - Última atualização"
image: "https://www.metatrader5.com/c/17/0/terminal_1__49.png"
url: "https://www.metatrader5.com/pt/releasenotes/terminal/1898"
---

# MetaTrader 5 build 1930: Gráficos flutuantes e bibliotecas .Net em MQL5

## Agora você pode exibir gráficos de instrumentos financeiros fora da janela do terminal de negociação. Isso é conveniente quando se trabalha com vários monitores

26 outubro 2018

### Terminal

1. agora você pode exibir gráficos de instrumentos financeiros fora da janela do terminal de negociação.  Isso é conveniente quando se trabalha com vários monitores. Por exemplo, em um deles, você pode colocar a janela principal da plataforma e monitorar o status da conta, enquanto, em outro, você pode botar os gráficos para avaliar a situação no mercado. Para separar o gráfico do terminal, desative a opção "Encaixar" em seu menu de contexto. Depois disso, coloque o gráfico no monitor desejado.

   ![](https://www.metatrader5.com/c/17/0/terminal_1__49.png)

    Para que você não precise alternar entre monitores para aplicar objetos ou indicadores analíticos, os gráficos desafixados têm uma barra de ferramentas separada. A fim de alterar um conjunto de comandos ou ocultar a barra de ferramentas, use seu menu de contexto.
2. bate-papos incorporados totalmente atualizados. Agora eles suportam diálogos e canais de grupo. Você pode iniciar discussões privadas com grupos de pessoas em um único espaço - sem alternar entre diferentes diálogos -, criar canais temáticos por interesse e idioma. Você pode se comunicar com colegas e amigos na MQL5.community sem visitar o site. Cada bate-papo e canal em grupo pode ser público ou privado. O próprio autor decide se eles podem se juntar livremente ou apenas por convite. Você também pode atribuir moderadores a canais e bate-papos, providenciando controle adicional de comunicação.

   ![](https://www.metatrader5.com/c/17/0/terminal_2__24.png)
3. adicionado suporte para maior precisão na negociação de criptomoedas. Agora, o volume mínimo possível de operações de negociação é de 0,00000001 lotes. Ao livro de ofertas, ao feed de transações e a outros itens de interface foi adicionado um recurso para exibir volumes com uma precisão de até 8 casas decimais. Seu valor mínimo, 'step' e alteração dependem das configurações do instrumento financeiro no lado da corretora.

   ![](https://www.metatrader5.com/c/17/0/terminal_3__21.png)
4. à janela "Caixa de Ferramentas" foi adicionada uma guia de artigos publicados na [MQL5.community](https://www.mql5.com/pt/articles). Mais de 600 materiais detalhados sobre o desenvolvimento de estratégias de negociação em MQL5 estão agora disponíveis diretamente no terminal. Novos artigos são publicados a cada semana.

   ![](https://www.metatrader5.com/c/17/0/terminal_4__21.png)
5. adicionado o suporte a [autorização estendida](https://www.metatrader5.com/pt/terminal/help/start_advanced/extended_authorization) usando certificados ao trabalhar com o Wine.
6. corrigida a exibição do livro de ofertas quando sua profundidade é limitada a um nível.
7. adicionado o comando "Salvar como imagem" à barra de ferramentas "Padrão". Agora é mais fácil tirar capturas de tela dos gráficos e compartilhá-los na comunidade.

   ![](https://www.metatrader5.com/c/17/0/terminal_6__5.png)
8. corrigida a implementação do deslocamento temporal ao importar barras e ticks. Anteriormente, em alguns casos, o deslocamento não era aplicado.

   ![](https://www.metatrader5.com/c/17/0/terminal_7__4.png)
9. corrigido o bloqueio do terminal com uma grande quantidade de notícias do calendário econômico.

### MQL5

1. adicionada suporte nativo a bibliotecas .NET com funções de importação inteligentes. Agora, as bibliotecas .NET podem ser usadas sem escrever 'wrappers' especiais — o MetaEditor toma conta disso por conta própria. Para trabalhar com as funções da biblioteca .NET, basta importar a própria DLL sem especificar funções específicas. O MetaEditor importa automaticamente todas as funções com as quais é possível o trabalho:

     - Estruturas simples (POD, plain old data), isto é, estruturas que contêm apenas tipos de dados simples.
     - Funções estáticas públicas cujos parâmetros usam apenas tipos simples e estruturas de POD ou seus arrays

    Para chamar funções da biblioteca, basta importá-la:

   ```
   #import "TestLib.dll" //+------------------------------------------------------------------+ //| Script program start function                                    | //+------------------------------------------------------------------+ void OnStart()   {    int x=41;    TestClass::Inc(x);    Print(x);   }
   ```

    O código C# para a função Inc da classe TestClass é semelhante ao seguinte:

   ```
   public class TestClass {    public static void Inc(ref int x)    {     x++;    } }
   ```

    Como resultado, o script retornará o valor 42.O melhoramento do suporte a bibliotecas .NET continua, em versões futuras, planeja-se expandir suas possibilidades de uso.
2. à biblioteca padrão foi adicionado o suporte para trabalhar com funções WinAPI. Agora, para usar as funções do sistema operacional no programa MQL5, não há necessidade de importar manualmente as bibliotecas e descrever as assinaturas de funções. Basta conectar o arquivo de cabeçalho do diretório MQL5\Include\WinAPI.As funções WinAPI são agrupadas em arquivos separados por finalidade:

     - libloaderapi.mqh — trabalho com recursos
     - memoryapi.mqh — trabalho com memória
     - processenv.mqh — trabalho com ambiente
     - processthreadsapi.mqh — trabalho com processos
     - securitybaseapi.mqh — trabalho com o sistema de segurança do sistema operacional
     - sysinfoapi.mqh — obtenção de informações do sistema
     - winbase.mqh — funções comuns
     - windef.mqh — constantes, estruturas e enumerações
     - wingdi.mqh — trabalho com objetos gráficos
     - winnt.mqh — trabalho com exceções
     - winreg.mqh — trabalho com o registro
     - winuser.mqh — gerenciamento de janelas e interface
     - errhandlingapi.mqh — processamento de erros
     - fileapi.mqh — trabalho com arquivos
     - handleapi.mqh — trabalho com identificadores
     - winapi.mqh — conexão de todas as funções (arquivos de cabeçalho WinAPI)

   A ligação funciona apenas com arquitetura de 64 bits.
3. adicionado o suporte a qualificadores inline, __inline, __forceinline ao analisar o código. A presença desses qualificadores no código não causará erros e não afetará a compilação. No momento, isso torna mais fácil transferir código C++ para MQL5. Mais informações sobre qualificadores estão disponíveis no [MSDN](https://msdn.microsoft.com/br-pt/library/bw1hbe6y.aspx).
4. realizada uma otimização substancial da execução de programas MQL5. Em alguns casos, o ganho de desempenho pode chegar a 10%. Para obter um aumento de velocidade, recompile seus programas na nova versão do MetaEditor.

   > Infelizmente, otimização adicional levou à perda de compatibilidade de novos programas com versões anteriores do terminal. Todos os programas compilados no MetaEditor versão 1910 e superior não serão inicializados em terminais de versão inferior a 1880. Ao mesmo tempo, programas compilados anteriormente em versões anteriores do MetaEditor funcionarão em novos terminais.
5. realizado trabalho de otimização de conjuntos de funções MQL5.
6. adicionadas novas propriedades para ajustar/separar gráficos da janela principal do terminal e controlar sua posição. À enumeração [ENUM_CHART_PROPERTY_INTEGER](https://www.mql5.com/pt/docs/constants/chartconstants/enum_chart_property#enum_chart_property_integer) adicionados:

     - CHART_IS_DOCKED — janela do gráfico encaixada. Se definido como false, o gráfico pode ser arrastado para fora do terminal.
     - CHART_FLOAT_LEFT — coordenada esquerda do gráfico desencaixado em relação à tela virtual.
     - CHART_FLOAT_TOP — coordenada superior do gráfico desencaixado em relação à tela virtual.
     - CHART_FLOAT_RIGHT — coordenada direita do gráfico desencaixado em relação à tela virtual.
     - CHART_FLOAT_BOTTOM — coordenada inferior do gráfico desencaixado em relação à tela virtual.

    À enumeração [ENUM_TERMINAL_INFO_INTEGER](https://www.mql5.com/pt/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer) foram adicionados:

     - TERMINAL_SCREEN_LEFT — coordenada esquerda da tela virtual. A tela virtual é o retângulo que cobre todos os monitores. Se o sistema tiver dois monitores e sua ordem for definida da direita para a esquerda, a coordenada esquerda da tela virtual poderá estar na borda de dois monitores.
     - TERMINAL_SCREEN_TOP — coordenada superior da tela virtual.
     - TERMINAL_SCREEN_WIDTH — largura do terminal.
     - TERMINAL_SCREEN_HEIGHT — altura do terminal.
     - TERMINAL_LEFT — coordenada esquerda do terminal em relação à tela virtual.
     - TERMINAL_TOP — coordenada superior do terminal em relação à tela virtual.
     - TERMINAL_RIGHT — coordenada direita do terminal em relação à tela virtual.
     - TERMINAL_BOTTOM — coordenada inferior do terminal em relação à tela virtual.
7. adicionado o campo volume_real às estruturas MqlTick e MqlBookInfo. Ele é projetado para funcionar com maior precisão. O valor volume_real tem uma precedência mais alta do que o volume. O servidor usará esse valor, se especificado.

   struct MqlTick
    {
    datetime  time; // Hora da última atualização de preço
    double bid; // Preço Bid atual
    double ask; // Preço Ask atual
    double last; // Preço atual da última transação (Last)
    ulong volume; // Volume para o preço Last atual
    long time_msc; // Hora da última atualização de preço em milissegundos
    uint  flags; // Sinalizadores de ticks
    double volume_real; // Volume para o preço Last atual com alta precisão
    };

   ```
   struct MqlBookInfo   {    ENUM_BOOK_TYPE   type;            // tipo de boleta a partir da enumeração ENUM_BOOK_TYPE    double           price;           // preço    long             volume;          // volume    double           volume_real;     // volume com alta precisão   };
   ```
8. à enumeração [ENUM_SYMBOL_INFO_DOUBLE](https://www.mql5.com/pt/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double) foram adicionadas novas propriedades:

     - SYMBOL_VOLUME_REAL — volume da última transação concluída;
     - SYMBOL_VOLUMEHIGH_REAL — valor máximo do volume da transação concluída para o dia atual;
     - SYMBOL_VOLUMELOW_REAL — valor mínimo do volume da transação concluída para o dia atual.

    Para obter essas propriedades, use a função [SymbolInfoDouble](https://www.mql5.com/pt/docs/marketinformation/symbolinfodouble).
9. à enumeração [ENUM_MQL_INFO_INTEGER](https://www.mql5.com/pt/docs/constants/environment_state/mql5_programm_info#enum_mql_info_integer) foi adicionada a propriedade MQL_FORWARD — um sinal de que o programa está no modo [teste para frente](https://www.metatrader5.com/pt/terminal/help/algotrading/testing#forward).
10. adicionada a propriedade pack( integer_value ) para estruturas. Permite definir o alinhamento da localização dos campos dentro da estrutura, é necessário quando se trabalha com uma DLL. Para integer_value, são possíveis os valores 1, 2 ,4 ,8 e 16.Se a propriedade não estiver definida, por padrão é usado o alinhamento de 1 byte — pack(1).Exemplo de uso:

    ```
    //+------------------------------------------------------------------+ //| Default packing                                                  | //+------------------------------------------------------------------+ struct A   {    char              a;    int               b;   }; //+------------------------------------------------------------------+ //| Specified packing                                                | //+------------------------------------------------------------------+ struct B pack(4)   {    char              a;    int               b;   }; //+------------------------------------------------------------------+ //| Script program start function                                    | //+------------------------------------------------------------------+ void OnStart()   {    Print("sizeof(A)=",sizeof(A));    Print("sizeof(B)=",sizeof(B));   } //+------------------------------------------------------------------+
    ```

    Conclusão:

    ```
    sizeof(A)=5 sizeof(B)=8
    ```

    Mais informações sobre o alinhamento em estruturas estão disponíveis no [MSDN](https://msdn.microsoft.com/en-us/library/2e70t5y1.aspx).
11. flexibilização dos requisitos para coerção de enumerações. Quando implicitamente convertido, o compilador substituirá automaticamente pelo valor da enumeração correta e exibirá um aviso. Para o seguinte código:

    ```
    enum Main   {    PRICE_CLOSE_,    PRICE_OPEN_   }; input Main Inp=PRICE_CLOSE; //+------------------------------------------------------------------+ //| Start function                                                   | //+------------------------------------------------------------------+ void OnStart()   {   }
    ```

     O compilador emitirá um aviso:

    implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main' 'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used

     Anteriormente, neste caso, era gerado o erro:

    'PRICE_CLOSE' - cannot convert enum

     Se enumerações são usadas incorretamente nos parâmetros de funções, o compilador ainda produzirá um erro.
12. corrigidos erros de compilação de funções de modelo. Agora, ao usar funções de modelo sobrecarregadas, apenas a sobrecarga necessária é instanciada e não todas as existentes.

    ```
    class X {  }; void f(int)  {  }    template<typename T> void a(T*) { new T(2); }  // anteriormente neste lugar o compilador dava um erro    template<typename T> void a()  { f(0); }       void OnInit()  { a<X>(); }
    ```
13. otimizados alguns casos de acesso ao histórico de ticks através da [função CopyTicks*](https://www.mql5.com/pt/docs/series/copyticks).
14. adicionada a nova função TesterStop que permite concluir o teste/otimização antes do planejado. Ao ser chamada, todo o histórico de negociação e o resultado do [OnTester](https://www.mql5.com/pt/docs/event_handlers/ontester) são transferidos para o terminal do cliente como durante a conclusão geral do teste/otimização.
15. adicionada uma nova propriedade para indicadores personalizados #property tester_everytick_calculate. Ela é usada no testador de estratégias e permite ativar o cálculo de indicadores em cada tick.

### Tester

1. agora, com testes/otimização não visuais, todos os indicadores usados (padrão e personalizados) são calculados apenas por solicitação de dados. Os indicadores que contêm chamadas da função [EventChartCustom](https://www.mql5.com/pt/docs/eventfunctions/eventchartcustom) e que usam o manipulador [Ontimer](https://www.mql5.com/pt/docs/event_handlers/ontimer) são exceções. Anteriormente no testador de estratégias, após a chegada de qualquer tick (mesmo do instrumento de outra pessoa), todos os indicadores eram calculados incondicionalmente. Essa inovação acelerou significativamente os testes e a otimização.Para forçar o cálculo de indicadores em cada tick, adicione a propriedade #property tester_everytick_calculate para o programa.Os indicadores compilados por versões anteriores do compilador serão calculados como antes — em cada tick.
2. corrigida a precisão da moeda de depósito ao testar/otimizar e gerar relatórios relevantes.
3. otimizado e acelerado o funcionamento do testeador de estratégias.
4. corrigidos vários erros de teste e otimização.

### MetaEditor

1. corrigida a busca de palavras inteiras. Agora, ao pesquisar, o sublinhado é contado como um caractere regular, não como um delimitador de palavras.

Documentação atualizada.

**Veja as notícias anteriores:**

- [MetaTrader 5 build 1880: cálculo do histórico completo de instrumentos sintéticos](https://www.metatrader5.com/pt/releasenotes/terminal/1880)
- [MetaTrader 5 build 1870: adição de símbolos à Observação do mercado de acordo com o ISIN](https://www.metatrader5.com/pt/releasenotes/terminal/1870)
- [MetaTrader 5 build 1860: funções para trabalhar com barras em MQL5 e melhorias no testador de estratégias](https://www.metatrader5.com/pt/releasenotes/terminal/1860)
- [MetaTrader 5 build 1755](https://www.metatrader5.com/pt/releasenotes/terminal/1755)
- [MetaTrader 5 build 1745](https://www.metatrader5.com/pt/releasenotes/terminal/1745)
