MetaTrader 5 build 3980: Mejoras y correcciones

Mejorado el nuevo informe comercial. Corregida la visualización del valor total de los swaps, así como el gráfico de beneficios de los símbolos

21 septiembre 2023

Terminal

  1. Mejorado el nuevo informe comercial. Corregida la visualización del valor total de los swaps, así como el gráfico de beneficios de los símbolos.
  2. Optimizadas las páginas de recarga y retirada. Encontrará más información sobre la nueva integración de la plataforma con los sistemas de pago en nuestra noticia anterior sobre el build 3950.
  3. Optimizado el recálculo de transacciones financieras en toda la plataforma, incluido el simulador de estrategias. Ahora los indicadores de beneficio, márgenes y muchos otros parámetros se calculan más rápidamente.
  4. Actualizadas las traducciones de la interfaz de usuario.

MQL5

  1. Añadidos los métodos Conjugate para los tipos complex, vector<complex> y matrix<complex>. Estos realizan el conjugado para números complejos.
    //+------------------------------------------------------------------+
    //| 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. Añadido el procesamiento de la muestra del modelo ONNX del tipo Sequence of maps.

    Para los modelos ONNX que ofrecen secuencias Map en la capa de salida (ONNX_TYPE_SEQUENCE of ONNX_TYPE_MAP), se deberá transmitir un array de estructuras dinámico o fijo como parámetro de salida. Los dos primeros campos de esta estructura deberán coincidir con los tipos de clave y valor ONNX_TYPE_MAP y ser arrays fijos o dinámicos.

    Vamos a analizar el modelo iris.onnx, creado mediante el siguiente script de 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 el archivo onnx creado en MetaEditor:

    Visualización del modelo ONNX en el MetaEditor


    Como salida "output_probability" se muestra una secuencia de Map, cuya clave es de tipo INT64 (que se corresponde con el tipo long del lenguaje MQL5) y el valor de tipo float. Para obtener los datos de esta salida, declararemos la siguiente estructura:
    struct MyMap
      {
       long              key[];
       float             value[];
      };
    Aquí hemos utilizado arrays dinámicos con los tipos correspondientes. En este caso, podemos usar arrays fijos, ya que para este modelo Map siempre contiene 3 pares clave+valor.

    Como la secuencia se devuelve desde Map, se deberá transmitir un array de dichas estructuras como parámetro para obtener los datos de la salida output_probability, dinámica o fija, según las propiedades del modelo en particular. Ejemplo:
    //--- declaramos un array para recibir los datos de la capa de salida output_probability
    MyMap output_probability[];
    
    ...
    
    //--- ejecución del modelo
    OnnxRun(modelo,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);

MetaEditor

  1. Corregida la visualización del tipo de parámetro de salida en el visor de modelos ONNX.

MetaTrader 5 Web Terminal build 3980

  1. Añadida al menú principal la sección de contacto con el bróker.
  2. Añadido el procesamiento del error de autorización con la ayuda del certificado SSL. Este tipo de autorización no es compatible con el terminal web, en su lugar se puede activar la autorización usando contraseñas de un solo uso.
  3. Corregido el enlace para descargar la versión de escritorio de la plataforma en el menú principal.
  4. Modificada la ventana de diálogo de gestión de cuentas. Si el bróker no dispone de cuentas demo o reales, la opción correspondiente del menú estará oculta.