新版MetaTrader 5平台build 3980:其他改进和修复

 

MetaTrader 5平台更新版于2023年9月21日星期四进行发布。此次更新包含了许多平台的修复和改进。

新版MetaTrader 5平台build 3980:其他改进和修复


MetaTrader 5客户端build 3980

  1. 程序端:新交易报告的改进。修正总库存费值和交易品种利润图表的显示问题。
  2. 程序端:优化出入金页面。有关新平台与支付系统集成的更多详细信息,请参阅build 3950发布说明
  3. 程序端:优化整个平台(包括策略测试)财务运营的重新计算。现在,利润、预付款和许多其他参数的计算速度更快。
  4. 程序端:更新用户界面翻译。
  5. MQL5:添加复数、向量<复数>和矩阵<复数>类型共轭方法。实现复杂的共轭运算。
    //+------------------------------------------------------------------+
    //| 脚本程序起始函数                                                    |
    //+------------------------------------------------------------------+
    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)]]
       */
      }
  6. MQL5:添加处理“Sequence of maps”类型的ONNX模型输出。

    对于在输出层提供Map序列(ONNX_TYPE_MAP的ONNX_TYPE_SEQUENCE)的ONNX模型,应将动态或固定的结构数组作为输出参数传递。此结构的前两个字段必须与ONNX_TYPE_MAP键和值类型匹配,并且是固定数组或动态数组。

    考虑由以下Python脚本创建的iris.onnx模型:
     sys 导入 argv
    data_path=argv[0]
    last_index=data_path.rfind("\\")+1
    data_path=data_path[0:last_index]
    
     sklearn.datasets 导入 load_iris
    iris_dataset = load_iris()
     sklearn.model_selection 导入 train_test_split
    X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
     sklearn.neighbors 导入 KNeighborsClassifier
    knn = KNeighborsClassifier(n_neighbors=1)
    knn.fit(X_train, y_train)
    
    # 转换  ONNX格式
     skl2onnx 导入 convert_sklearn
     skl2onnx.common.data_types 导入 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())
    在MetaEditor中打开创建的onnx文件:


    在MetaEditor中查看ONNX模型


    Map序列作为“output_probability”传递。它有一个INT64类型键(对应于MQL5中的long)和float类型值。要从此输出接收数据,请声明以下结构:
    struct MyMap
      {
       long              key[];
       float             value[];
      };
    这里我们使用具有适当类型的动态数组。在这种情况下,我们可以使用固定数组,因为这个模型的Map始终包含3个键+值对。

    由于返回Map序列,因此应将此类结构的数组作为参数传递,以接收来自output_probability输出的数据。根据特定模型的属性,该数组可以是动态数组可以是固定数组。示例:
    //--- 声明一个数组来接收来自输出层output_probability的数据
    MyMap output_probability[];
    
    ...
    
    //--- 模型运行
    OnnxRun(model,ONNX_DEBUG_LOGS,float_input,output_label,output_probability);
  7. MetaEditor:修正ONNX模型查看器中输出类型的显示问题。

MetaTrader 5网页端build 3980

  1. 在网页端的主菜单添加“联系交易商”。
  2. 添加SSL身份验证的错误处理。网页端不支持此身份验证类型。可以使用动态密码来代替。
  3. 修正主菜单中桌面平台下载链接的问题。
  4. 修正账户管理对话框。如果交易商不提供模拟账户或真实账户开户选项,相关菜单项将被隐藏。


更新将通过实时更新系统提供。

 
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)

# 转换 为 ONNX格式
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())

python 代码

 
我的新报告一直是空白页显示不出来