Versão beta do MetaTrader 5 build 1910: arrastar e soltar gráficos e bibliotecas .Net no MQL5 de forma livre

 

Em 14 de outubro de 2018, será lançada uma versão atualizada da plataforma MetaTrader 5 no modo beta. Vamos atualizar nosso servidor MetaQuotes-Demo, localizado no servidor access.metatrader5.com:443. Convidamos todos os traders a testar a nova versão da plataforma para experimentar todas as suas possibilidades e ajudar os desenvolvedores a corrigir os erros encontrados.

Basta se conectar ao servidor access.metatrader5.com:443, a fim de se atualizar para o novo build 1910 da plataforma MetaTrader 5.

Após a fase beta, será lançado o novo build final da nova plataforma MetaTrader 5.

Ela contém as seguintes alterações:

  1. Terminal: 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.



    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. Terminal: 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.



  3. Terminal: 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.




  4. Terminal: à janela "Caixa de Ferramentas" foi adicionada uma guia de artigos publicados na MQL5.community. Mais de 600 materiais detalhados sobre o desenvolvimento de estratégias de negociação em MQL5 estão agora disponíveis sem sair do terminal. Novos artigos são publicados a cada semana.



  5. Terminal: adicionado o suporte a autorização estendida usando certificados ao trabalhar com o Wine.
  6. Terminal: corrigida a exibição do livro de ofertas quando sua profundidade é limitada a um nível.
  7. Terminal: 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.




  8. Terminal: corrigida a implementação do deslocamento temporal ao importar barras e ticks. Anteriormente, em alguns casos, o deslocamento não era aplicado.



  9. MQL5: 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)
    • Estruturas com 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=6;
       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 7.

  10. MQL5: 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.

  11. MQL5: 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.

  12. MQL5: realizado trabalho de otimização de conjuntos de funções MQL5.
  13. MQL5: adicionadas novas propriedades para ajustar/separar gráficos da janela principal do terminal e controlar sua posição.

    À enumeração 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 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.

  14. MQL5: 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
      };

  15. MQL5: à enumeração 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.

  16. MQL5: à enumeração ENUM_MQL_INFO_INTEGER foi adicionada a propriedade MQL_FORWARD — um sinal de que o programa está no modo teste para frente.
  17. MQL5: 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.

  18. MQL5: 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>(); }  
    
  19. MQL5: otimizados alguns casos de acesso ao histórico de ticks através da função CopyTicks*.
  20. Tester: corrigida a precisão da moeda de depósito ao testar/otimizar e gerar relatórios relevantes.
  21. Tester: o testador de estratégias foi otimizado e acelerado.
  22. MetaEditor: corrigida a busca de palavras inteiras. Agora, ao pesquisar, o sublinhado é contado como um caractere regular, não como um delimitador de palavras.
  23. Documentação atualizada.
Razão: