MetaTrader 5 build 3260: Operações em massa, funções matriciais e vetoriais, e melhorias no bate-papo

No menu de contexto da seção de negociação, foi acrescentada uma nova seção, "Operações em massa". A lista de comandos disponíveis é gerada de forma inteligente, dependendo da operação selecionada e do seu tipo de conta

15 abril 2022

Terminal

  1. Adicionados comandos para fechamento de posições e remoção de ordens pendentes em massa.

    No menu de contexto da seção de negociação, foi acrescentada uma nova seção, "Operações em massa". A lista de comandos disponíveis é gerada de forma inteligente, dependendo da operação selecionada e do seu tipo de conta.



    Os comandos estão sempre disponíveis no menu:
    • Fechamento de todas as posições. Para as contas de cobertura, o sistema primeiro tenta fechar posições com posições contrárias, e depois fecha as posições restantes de acordo com o procedimento normal.
    • Fechamento de todas as posições lucrativas e todas as posições desfavoráveis
    • Remoção de todas as ordens pendentes
    • Remoção de todas as ordens pendentes separadamente por tipo: Limit, Stop, Stop Limit

    Se uma posição for selecionada, comandos adicionais aparecem no menu:
    • Fechamento de todas as posições com o mesmo símbolo
    • Fechamento de todas as posições na mesma direção (para contas de cobertura)
    • Fechamento de posições contrárias com o mesmo símbolo (para contas de cobertura)
    • Reversão de posição (para contas de compensação)

    Se uma ordem pendente for selecionada, comandos adicionais aparecem no menu:
    • Remoção de todas as ordens pendentes com o mesmo símbolo
    • Remoção de todas as ordens pendentes com o mesmos tipo e símbolo

    Para que estes comandos funcionem, o usuário deve habilitar a negociação com um clique nas configurações da plataforma: Serviço \ Configurações \ Negociação.
  2. Expandidas as funções de bate-papo embutidas:
    • Adicionada a opção de responder a mensagens. O texto da mensagem original será incluído na resposta como uma citação.
    • Adicionada a criação de mensagens com diferentes tipos de conteúdo: imagens com texto, texto com anexos, etc.
    • Corrigida a exibição do separador de mensagens lidas e não lidas.
    • Corrigidos vários erros e alcançada uma maior estabilidade.



  3. Otimizada e significativamente acelerada a operação do sistema gráfico do terminal. Menos recursos serão gastos na exibição da interface.
  4. Corrigido o cálculo da variação diária do preço de futuros. Se a corretora transmitir o preço de compensação, o cálculo será feito a partir dele.
    ((Last - preço de compensação)/preço de compensação)*100
    Você pode saber mais sobre o cálculo para cada tipo de instrumento na documentação.

  5. Corrigidos erros ao adquirir serviços MQL5:
    • Em alguns casos, os sistemas de pagamento podiam exibir mensagens de erro incorretas relativas a operações bem sucedidas.
    • Em estágios intermediários de aluguel de produtos no Mercado, a página podia apresentar um preço incorreto.

  6. Corrigido o funcionamento do botão "Iniciar" na página do produto comprado/descarregado via Mercado. Agora ele executa o aplicativo corretamente no primeiro dos gráficos abertos.
  7. Corrigido o cálculo de alguns tipos de negócios ao gerar o histórico de posições.

MQL5

  1. Adicionadas novas funções para trabalhar usando matrizes e vetores:
    • Median — retorna a mediana dos elementos da matriz ou vetor
    • Quantile — retorna o q-ésimo quantil de elementos da matriz/vetor ou elementos ao longo do eixo matricial especificado
    • Percentile — retorna o q-ésimo percentil dos elementos da matriz/vetor ou elementos ao longo do eixo matricial especificado
    • Std — calcula o desvio padrão dos elementos de uma matriz ou vetor
    • Var — calcula a variância dos elementos de uma matriz ou vetor
    • CorrCoef — calcula o coeficiente de correlação de uma matriz ou vetor
    • Correlate — calcula a correlação cruzada dos dois vetores
    • Convolve — retorna uma convolução linear discreta de dois vetores
    • Cov — calcula a matriz de covariância

  2. Continuam os trabalhos para adicionar métodos embutidos para matrizes numéricas. Isto ampliará a facilidade de escrita do código, o tornará mais compacto e melhorará a compatibilidade com outras linguagens.

    Atualmente, há três métodos disponíveis:
    • ArgSort — classifica a matriz por uma dada dimensão, por padrão pela mais recente (axis=-1).
    • Range — retorna o número de elementos na dimensão especificada da matriz. Análogo a ArrayRange.
    • Size — retorna o número de elementos da matriz. Análogo a ArraySize.

    Exemplo:
    void OnStart()
      {
       int arr[4][5]=
         {
            {22, 34, 11, 20,  1},
            {10, 36,  2, 12,  5},
            {33, 37, 25, 13,  4},
            {14,  9, 26, 21, 59}
         };
       ulong indexes[4][5];
    //--- Classificamos a matriz
       arr.ArgSort(indexes,-1,0);
       Print("indexes");  
       ArrayPrint(indexes);
      }
    
    // Resultado no log:
    // indexes
    //     [,0][,1][,2][,3][,4]
    // [0,]   4   2   3   0   1
    // [1,]   2   4   0   3   1
    // [2,]   4   3   2   0   1
    // [3,]   1   0   3   2   4

  3. Em andamento esforços para acrescentar métodos embutidos para strings.

    Os seguintes métodos estão atualmente disponíveis:
    • BufferSize — retorna o tamanho do buffer alocado para a cadeia.
    • Compare — compara duas strings e retorna o resultado como um inteiro.
    • Length — retorna o número de caracteres na string.
    • Find — procura uma substring na string.
    • Upper — converte a string em maiúsculas.
    • Lower — Upper — converte a string em minúsculas.
    • Replace — substitui a substring.
    • Reserve — reserva um buffer para a string.

    Todos os métodos funcionam da mesma maneira que as funções de string.

    Exemplo:
    void OnStart()
      {
       string test="some string";
       PrintFormat("String length is %d",test.Length());
      }
    
    // Resultado no log:
    // String length is 11
  4. Adicionado o valor SYMBOL_SUBSCRIPTION_DELAY à enumeração ENUM_SYMBOL_INFO_INTEGER — tamanho do atraso nas cotações transmitidas pelo símbolo.

    Usado somente para instrumentos baseados em assinaturas, geralmente, ao transmitir dados em modo de teste gratuito.

    A propriedade só pode ser consultada para símbolos selecionados na Observação do Mercado. Caso contrário, você receberá o erro ERR_MARKET_NOT_SELECTED (4302).

  5. Adicionada a propriedade ACCOUNT_HEDGE_ALLOWED à propriedade ENUM_ACCOUNT_INFO_INTEGER — permissão para abrir posições opostas e ordens pendentes. Usado somente para contas de cobertura, permitindo a implementação das exigências de alguns reguladores quando a conta é proibida de ter posições opostas, mas permitido ter múltiplas posições do mesmo símbolo na mesma direção.

    Se esta opção for desativada, não é permitido que as contas tenham posições e ordens opostas para o mesmo instrumento ao mesmo tempo. Por exemplo, se houver uma posição Buy na conta, o usuário não poderá abrir uma posição Sell ou colocar uma ordem de venda pendente. Se o usuário tentar fazer isso, ele receberá o erro TRADE_RETCODE_HEDGE_PROHIBITED.

  6. Acrescentadas novas propriedades à enumeração ENUM_SYMBOL_INFO_DOUBLE:
    • SYMBOL_SWAP_SUNDAY
    • SYMBOL_SWAP_MONDAY
    • SYMBOL_SWAP_TUESDAY
    • SYMBOL_SWAP_WEDNESDAY
    • SYMBOL_SWAP_THURSDAY
    • SYMBOL_SWAP_FRIDAY
    • SYMBOL_SWAP_SATURDAY

    Elas permitem que você obtenha a taxa de acumulação de swaps para cada dia da semana. 1 — único swap acumulado, 3 — triplo, 0 — sem acumulação.

  7. Corrigido um bug, ao usar CopyTicks e CopyTicksRange, que fazia com que os dados desatualizados fossem dados à meia-noite. Ocorria quando não eram recebidos ticks do instrumento.
  8. Correções de crash-logs.