MetaTrader 5 build 3980: Melhorias e correções

Aprimorado o novo relatório de negociação. Corrigida a exibição dos valores totais dos swaps, bem como o gráfico de lucros para os símbolos

21 setembro 2023

Terminal

  1. Aprimorado o novo relatório de negociação. Corrigida a exibição dos valores totais dos swaps, bem como o gráfico de lucros para os símbolos.
  2. Otimizadas as páginas de depósito e saque. Saiba mais sobre a nova integração da plataforma com sistemas de pagamento lendo nossa anterior notícia sobre o build 3950.
  3. Otimizado o recálculo de operações financeiras em toda a plataforma, incluindo o testador de estratégias. Os lucros, as margens e muitos outros parâmetros agora são calculados mais rapidamente.
  4. Atualizadas as traduções da interface do usuário.

MQL5

  1. adicionados os métodos Conjugate para os tipos complex, vetor<complex> e matrix<complex>. Eles realizam a conjugação para números complexos.
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       complex a=1+1i;
       complex b=a.Conjugate();
       Print(a, "  ", b);
       /*
       (1,1)  (1,-1)
       */
    
       vectorc va= {0.1+0.1i, 0.2+0.2i, 0.3+0.3i};
       vectorc vb=va.Conjugate();
       Print(va, "  ", vb);
       /*
       [(0.1,0.1),(0.2,0.2),(0.3,0.3)]  [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
       */
    
       matrixc ma(2, 3);
       ma.Row(va, 0);
       ma.Row(vb, 1);
       matrixc mb=ma.Conjugate();
       Print(ma);
       Print(mb);
       /*
       [[(0.1,0.1),(0.2,0.2),(0.3,0.3)]
        [(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]]
    
       [[(0.1,-0.1),(0.2,-0.2),(0.3,-0.3)]
        [(0.1,0.1),(0.2,0.2),(0.3,0.3)]]
       */
       
       ma=mb.Transpose().Conjugate();
       Print(ma);
       /*
       [[(0.1,0.1),(0.1,-0.1)]
        [(0.2,0.2),(0.2,-0.2)]
        [(0.3,0.3),(0.3,-0.3)]]
       */
      }
  2. Adicionado o processamento da saída do modelo ONNX do tipo Sequence of maps.

    Para modelos ONNX que fornecem sequências Map (ONNX_TYPE_SEQUENCE of ONNX_TYPE_MAP) na camada de saída, um array dinâmico ou fixo de estruturas deve ser passado como parâmetro de saída. Os dois primeiros campos dessa estrutura devem corresponder aos tipos de chave e valor de ONNX_TYPE_MAP e devem ser arrays fixos ou dinâmicos.

    Veja o modelo iris.onnx criado pelo seguinte script Python:
    from sys import argv
    data_path=argv[0]
    last_index=data_path.rfind("\\")+1
    data_path=data_path[0:last_index]
    
    from sklearn.datasets import load_iris
    iris_dataset = load_iris()
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
    from sklearn.neighbors import KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train, y_train)
    
    #  Convert into ONNX format
    from skl2onnx import convert_sklearn
    from skl2onnx.common.data_types import FloatTensorType
    initial_type = [('float_input', FloatTensorType([None, 4]))]
    onx = convert_sklearn(knn, initial_types=initial_type)
    path = data_path+"iris.onnx"
    with open(path, "wb") as f:
        f.write(onx.SerializeToString())
    Abra o arquivo onnx criado no MetaEditor:

    Visualização do modelo ONNX no MetaEditor


    A saída "output_probability" é uma sequência Map, cuja chave tem o tipo INT64 (que corresponde ao tipo long da linguagem MQL5) e o valor do tipo float. Para obter dados dessa saída, declaramos a seguinte estrutura:
    struct MyMap
      {
       long              key[];
       float             value[];
      };
    Aqui usamos arrays dinâmicos com tipos apropriados. Nesse caso, é possível usar arrays fixos, já que para esse modelo o Map sempre contém 3 pares de chave+valor.

    Como uma sequência é retornada do Map, como parâmetro para aceitar os dados com a saída output_probability deve ser passada um array de tais estruturas - dinâmico ou fixo, com base nas propriedades do modelo específico. Por exemplo:
    //--- declaramos um array para receber dados da camada de saída output_probability
    MyMap output_probability[];
    
    ...
    
    //--- execução do modelo
    OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);

MetaEditor

  1. Corrigida a exibição do tipo de parâmetro de saída no visualizador de modelos ONNX.

MetaTrader 5 Web Terminal build 3980

  1. Adicionada a seção de contato da corretora ao menu principal.
  2. Adicionado o tratamento de erro de autorização com certificado SSL. Esse tipo de autorização não é compatível com o terminal da Web e, em vez disso, a autorização por senha de uso único pode ser ativada.
  3. Corrigido o link para download da versão desktop da plataforma no menu principal.
  4. Alterado o diálogo de gerenciamento de contas. Se a corretora não tiver contas de demonstração ou reais disponíveis, o item de menu correspondente ficará oculto.