MetaTrader 5 build 1455: Biblioteca de funções matemáticas MQL5

O que há de novo na MetaTrader 5?

14 outubro 2016

Untitled Document

Terminal

  1. Foram adicionados dicas pop-up para os botões Buy, Sell e Close nos diálogos da negociação. As dicas explicam exatamente quais ativos são comprados e vendidos durante a execução de uma operação, ajudando traders iniciantes a entender o processo de negociação.




  2. Foram adicionados novos ícones de ordens, transações e posições nas guias "Negociação" e "Histórico".




  3. Foram otimizados e acelerados consideravelmente (até 4-5 vezes) a exibição e atualização do livro de ofertas, gráfico de ticks do livro de ofertas e canal de negociações.
  4. Foi corrigido o erro de sincronização do histórico de ticks em tempo de não-negociação. Em alguns casos, o erro levava ao consumo excessivo de tráfego de rede.

MQL5

  1. Na biblioteca padrão, foi incluía a versão MQL5 da biblioteca de análise numérica ALGLIB.

    Possibilidades da biblioteca

    • Álgebra linear
    • Solução de sistemas de equações lineares e não lineares
    • Interpolação
    • Otimização
    • Transformada rápida de Fourier
    • Integração numérica
    • Aproximação de mínimos quadrados lineares e no-lineares
    • Solução de equações diferenciais ordinárias
    • Cálculo de funções especiais
    • Estatística descritiva e testes de hipóteses
    • Análise de dados: classificação, regressão
    • Implementação de algoritmos de álgebra linear, interpolação, etc. na aritmética de alta precisão (usando MPFR)

    Como usar

    Os arquivos da biblioteca ALGLIB estão localizados no diretório \MQL5\Include\Math\Alglib. Para usar as funções, adicione o arquivo principal da biblioteca ao seu programa:

    #include <Math\Alglib\alglib.mqh>

  2. A biblioteca padrão foram adicionadas funções de trabalho com estatística matemática. Agora, em MQL5, estão disponíveis as possibilidades da linguagem R, ela é um dos melhores instrumentos de processamento estatístico e análise de dados.<br1>

    Possibilidades da biblioteca

    A biblioteca estatística contém funções para cálculo de características estatísticas de dados, bem como funções para trabalhar com distribuições estatísticas:

    • Funções para calcular as características estatísticas de elementos de matriz
    • Funções para trabalhar com distribuições estatísticas: distribuição normal, distribuição log-normal, distribuição beta, etc.

    Como usar

    Os arquivos da biblioteca ALGLIB estão localizados no diretório \MQL5\Include\Math\Stat. Para usar as funções, adicione o arquivo com as funções desejadas ao seu programa, por exemplo:

    #include <Math\Stat\Binomal.mqh>
    #include <Math\Stat\Cauchy.mqh>
    

    Leia descrições detalhadas das funções da biblioteca no artigo Distribuições estatísticas em MQL5: pegamos as melhores a partir de R.


  3. Na biblioteca padrão, foi incluía a versão MQL5 da biblioteca Fuzzy, ela implementa sistemas de inferência de lógica difusa Mastop e Sugeno.

    Possibilidades da biblioteca

    • 13 funções de associação
    • Forma flexível de criação de regras para sistemas fuzzy
    • Sistema de inferência de lógica difusa Mastop
    • Sistema de inferência de lógica difusa Sugeno
    • 5 métodos de exclusão da difusão para sistemas do tipo Mamdani
    • Número ilimitado de variáveis de entrada e saída

    Como usar

    Os arquivos da biblioteca Fuzzy estão localizados no diretório \MQL5\Include\Math\Fuzzy. Para usar as funções, adicione o arquivo com as funções desejadas ao seu programa, por exemplo:

    #include <Math\Fuzzy\mamdanifuzzysystem.mqh>
    #include <Math\Fuzzy\sugenofuzzysystem.mqh>
    

    Uma descrição detalhada da biblioteca pode ser encontrada ni Code Base: Fuzzy, biblioteca para trabalhar com lógica difusa


  4. Foi adicionada a propriedade CHART_QUICK_NAVIGATION para habilitar/desabilitar a barra de navegação rápida no gráfico. Para alterar e obter o estado das propriedades, utilize as funções ChartSetInteger e ChartGetInteger.




    A barra é chamada pressionado a tecla Enter ou Space. Ao usá-la, é possível passar rapidamente para a data especificada no gráfico, alternar o símbolo e período. Se seu programa MQL5 manipula as teclas Enter ou Space, desative a propriedade CHART_QUICK_NAVIGATION para o terminal não capturar esses eventos. Além disso, a barra de navegação rápida pode ser chamada mediante duplo clique.

  5. Foram adicionadas as funções FileLoad e FileSave para facilitar a leitura e armazenamento de matizes nos arquivos. Ao contrário de FileRead* e FileWrite*, essas funções não precisam o manipulador de arquivo. FileLoad e FileSave trabalham com matrizes de tipos numéricos, bem como com estruturas simples sem cadeias de caracteres, matrizes dinâmicas ou objetos de uma classe.
    long  FileLoad(
       const string filename,      // [in] nome do arquivo
       void         &buffer[],     // [out] matriz na qual é tomado em consideração o arquivo
       uint         common_flag=0  // [in] 0 - busca do arquivo na pasta Files do terminal, FILE_COMMON - na pasta comum dos terminais
       );
    
    bool  FileSave(
       const string filename,      // [in] nome do arquivo
       const void   &buffer[],     // [in] matriz armazenada no arquivo
       uint         common_flag=0  // [in] 0 - criação do arquivo na pasta Files do terminal, FILE_COMMON - na pasta comum dos terminais
       );
    Exemplo de como armazenar, numa pasta, uma matriz de ticks e, em seguida, lê-la.
    //--- parâmetros de entrada
    input int      ticks_to_save=1000; // número de ticks
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       string  filename=_Symbol+"_ticks.bin";
       MqlTick ticks[];
    //---
       int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
       if(copied!=-1)
         {
          PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
          //--- se o histórico de ticks estiver sincronizado, o código de erro será igual a zero
          if(!GetLastError()==0)
             PrintFormat("%s: Ticks are not synchronized. Error=",_Symbol,copied,_LastError);
          //---  armazenamos os ticks no arquivo
          if(!FileSave(filename,ticks,FILE_COMMON))
             PrintFormat("FileSave() failed, error=%d",GetLastError());
         }
       else
          PrintFormat("Failed CopyTicks(%s), Error=",_Symbol,GetLastError());
    //--- agora lemos de volta estes ticks a partir do arquivo
       ArrayFree(ticks);
       long count=FileLoad(filename,ticks,FILE_COMMON);
       if(count!=-1)
         {
          Print("Time\tBid\tAsk\tLast\tVolume\tms\tflags");
          for(int i=0;i<count;i++)
            {
             PrintFormat("%s.%03I64u:\t%G\t%G\t%G\t%I64u\t0x%04x",
             TimeToString(ticks[i].time,TIME_DATE|TIME_SECONDS),ticks[i].time_msc%1000,
             ticks[i].bid,ticks[i].ask,ticks[i].last,ticks[i].volume,ticks[i].flags);
            }
         }
      }

  6. Foi modificada a exibição do indicador personalizado com modo de desenho DRAW_CANDLES. Agora é possível definir de uma a três cores. A exibição de velas depende de quantas cores são definidas.

    Se for indicada uma cor, todas as velas no gráfico serão completamente pintadas com essa cor.
    //--- velas pintadas na mesma cor
    #property indicator_label1  "One color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- foi indicado apenas uma cor, por isso todas as velas terão apenas uma cor
    #property indicator_color1  clrGreen  
    Se forem indicadas duas cores, os contornos das velas serão desenhadas usando a primeira cor, enquanto o corpo usando a segunda.
    //--- a cor das velas difere da cor das sombras
    #property indicator_label1  "Two color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- sombras e contorno de velas de cor verde, corpo de cor branca
    #property indicator_color1  clrGreen,clrWhite 
    Se forem indicadas duas cores, os contornos das velas serão desenhadas usando a primeira cor, enquanto o as velas de alta e baixa serão definidas usando uma segunda e terceira.
    //--- o cor das velas é diferente da cor das sombras
    #property indicator_label1  "One color candles"
    #property indicator_type1   DRAW_CANDLES
    //--- as sombras e contornos de cor verde; o corpo da vela de alta de cor branca; corpo da vela de baixa de cor vermelha
    #property indicator_color1  clrGreen,clrWhite,clrRed
    Assim, usando o estilo DRAW_CANDLES, é possível criar suas próprias opções personalizadas para colorir velas. Também é possível alterar dinamicamente todas as cores -no processo de trabalho do indicador- mediante a função PlotIndexSetInteger(índice_de_construção_DRAW_CANDLES, PLOT_LINE_COLOR, número_de_modificador, cor), aqui o número_de_modificador pode ter os seguintes valores:
    • 0 – cor do contorno e as sombras
    • 1 – cor do corpo da vela de alta
    • 2 – cor do corpo da vela de baixa
    //--- definimos a cor do contorno e das sombras
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrBlue);
    //--- definimos a cor do corpo para a vela de alta
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,clrGreen);
    //--- definimos a cor do corpo para a vela de baixa
    PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,clrRed);
  7. Foram corrigidos vários bugs e foi acelerado o trabalhar com o histórico de ticks usando as funções CopyTicks.
  8. Permitido usar operadores nas interfaces.

Market

  1. Foi corrigido o erro que, em alguns casos, levava a um pedido repetido de autorização na MQL5.community ao comprar no Mercado.

Tester

  1. Foi adicionada a tradução da interface do usuário para grego, malaio e hebraico.

Documentação atualizada.