新版MetaTrader 5平台build 1930:浮动窗口图表和MQL5中的.Net程序库 新评论 MetaQuotes 2018.10.26 09:49 MetaTrader 5平台更新版将于2018年10月26日进行发布。该更新将有以下变化: 程序端:现在,您可以在交易程序端窗口之外使用交易品种图表。这个功能的便利性在使用多个显示器进行操作时非常明显。因此,您可以在一个显示器上设置平台的主窗口来管理您的账户状态,并将您的图表移动到另一个显示器上以观察市场动向。若要将图表从程序端分离,请在快捷菜单中禁用“固定”选项。然后,将图表移动到所需的显示器。 通过分离图表的独立工具栏可以应用分析对象和指标,而无需在显示器间进行切换。使用工具栏快捷菜单来管理可用命令集或将命令隐藏。 程序端:完全更新的嵌入式聊天功能。现在,该功能支持群组聊天和频道交流。可以在一个环境内与一个群组的人们进行私人讨论,而不需要在不同的对话之间切换,您还可以根据您的兴趣和语言创建频道。在MQL5.community与同业和好友进行交流,而不需要访问网站。群组聊天和频道交流既可以是公开的,也可以设为私人状态。由创建者来决定是否可以自由加入群聊或是只能通过邀请加入。您还可以为频道和聊天分派版主/群主,为了进一步进行交流管理。 程序端:新增对数字加密货币交易提高交易量精确性的支持。现在,交易操作可允许的最小交易量为0.00000001手数。现在,市场深度,成交时间和交易量,以及其他界面元素都能够精确显示到小数点后8位。最小交易量及其变动幅度取决于交易商的交易品种设置。 程序端:在工具箱窗口,添加了MQL5.community网站发布的文章的选项卡。现在,在程序端可以直接获得600多篇关于使用MQL5开发交易策略的详细材料。每周都会发布新文章。 程序端:新增在Wine系统下操作时,支持使用证书进行扩展认证。 程序端:修正了市场深度被限定在一个水平时的显示。 程序端:将“另存为图片”的命令添加到标准工具栏中。现在,保存图表图片并将其分享在社区中会更加容易。 程序端:修正导入柱形图和报价时,应用时间切换。之前,在某些情况下无法使用时间切换。 程序端:修正大量经济日历新闻情况下的程序端冻结。 MQL5:添加了通过"smart"导入函数对.NET程序库的本机支持。现在,.NET程序库可以在无需编写特殊包装样式的情况下使用 — MetaEditor可以独立完成。若要使用.NET程序库函数,只需导入DLL本身,而不必定义特定的函数。MetaEditor自动导入所有可以使用的函数: 简单结构(POD,普通旧数据) — 仅包含简单数据类型的结构。 有参数的公共静态函数,在这里只有简单类型和POD结构或其数组可被使用 若要从程序库调用函数,简单导入即可: #import "TestLib.dll" //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { int x=41; TestClass::Inc(x); Print(x); } TestClass的Inc函数C#代码如下: public class TestClass { public static void Inc(ref int x) { x++; } } 作为执行结果,脚本返回值为42。对.NET程序库的支持工作仍继续。其功能将在未来得到扩展。 MQL5:添加了支持使用标准程序库的WinAPI函数。现在,不需要手动导入程序库和描述函数签名来在MQL5程序中使用操作系统函数。只需包括来自MQL5\Include\WinAPI目录的头文件。WinAPI函数按其用途在单独的文件中分组: libloaderapi.mqh — 使用资源 memoryapi.mqh — 使用内存 processenv.mqh — 使用环境 processthreadsapi.mqh — 使用流程 securitybaseapi.mqh — 使用OS安全系统 sysinfoapi.mqh — 获取系统信息 winbase.mqh — 常用函数 windef.mqh — 常量、结构和枚举 wingdi.mqh — 使用图形对象 winnt.mqh — 处理异常 winreg.mqh — 使用注册表 winuser.mqh — 窗口和界面管理 errhandlingapi.mqh — 处理错误 fileapi.mqh — 使用文件 handleapi.mqh — 使用句柄 winapi.mqh — 包含所有函数(WinAPI头文件) 绑定仅适用于64位架构。 MQL5:在解析代码时,新增对inline, __inline和 __forceinline描述符的支持。代码中的描述符不会导致错误,也不会影响编译。目前,该特性简化了将С++ 代码转为MQL5。在MSDN中了解关于描述符的更多信息。 MQL5:显著优化了MQL5程序的执行。在某些情况下,性能改进可以达到10%。在新版MetaEditor重新编译您的程序,使其运行得更快。 遗憾的是,由于这个额外的优化功能,新程序将无法与以前的程序端版本兼容。使用MetaEditor 1912版本编译的程序之后无法在低于1912版本的程序端中启用。使用早期的MetaEditor版本编译的程序则可以在新版程序端中运行。 MQL5:显著优化了MQL5函数集。 MQL5:新增向程序端主窗口附加图表/从程序端主窗口分离图表并管理图表位置的新属性。添加以下属性到ENUM_CHART_PROPERTY_INTEGER枚举: CHART_IS_DOCKED — 图表窗口固定。如果设为'false',图表可被拖拽到程序端区域之外。 CHART_FLOAT_LEFT — 相对于虚拟屏幕的未固定的图表窗口的左坐标。 CHART_FLOAT_TOP — 相对于虚拟屏幕的未固定的图表窗口的顶部坐标。 CHART_FLOAT_RIGHT — 相对于虚拟屏幕的未固定的图表窗口的右坐标。 CHART_FLOAT_BOTTOM — 相对于虚拟屏幕的未固定的图表窗口的底部坐标。 添加以下函数到ENUM_TERMINAL_INFO_INTEGER枚举: TERMINAL_SCREEN_LEFT — 虚拟屏幕的左坐标。虚拟屏幕是覆盖所有监视器的长方形。如果系统从右至左有两个监视器,那么虚拟屏幕的左坐标可以在两个监视器的边界上。 TERMINAL_SCREEN_TOP — 虚拟屏幕的顶部坐标。 TERMINAL_SCREEN_WIDTH — 程序端宽度。 TERMINAL_SCREEN_HEIGHT — 程序端高度。 TERMINAL_LEFT — 相对于虚拟屏幕的程序端的左坐标。 TERMINAL_TOP — 相对于虚拟屏幕的程序端的顶部坐标。 TERMINAL_RIGHT — 相对于虚拟屏幕的程序端的右坐标。 TERMINAL_BOTTOM — 相对于虚拟屏幕的程序端的底部坐标。 MQL5:将volume_real字段添加到MqlTick和MqlBookInfo结构。其设计目的在于提高交易量准确性。volume_real值的优先级要高于'volume'。如果该值已指定,那么服务器将会优先使用。 struct MqlTick { datetime time; // 最后价格更新时间 double bid; // 当前卖价 double ask; // 当前买价 double last; // 最后一笔交易的当前价格 ulong volume; // 当前最后价格的交易量 long time_msc; // 以毫秒计算的最后价格更新时间 uint flags; // 报价标识 double volume_real; // 准确性更高的当前最后价格的交易量 }; struct MqlBookInfo { ENUM_BOOK_TYPE type; //ENUM_BOOK_TYPE枚举的订单类型 double price; // 价格 long volume; // 交易量 double volume_real; //准确度更高的交易量 }; MQL5:添加新属性到ENUM_SYMBOL_INFO_DOUBLE枚举: SYMBOL_VOLUME_REAL — 最后已执行成交的交易量; SYMBOL_VOLUMEHIGH_REAL — 当日已执行成交的最高交易量; SYMBOL_VOLUMELOW_REAL — 当日已执行成交的最低交易量。 使用SymbolInfoDouble函数来获得这些属性。 MQL5:添加MQL_FORWARD属性到ENUM_MQL_INFO_INTEGER枚举 — 前测模式标识。 MQL5:为结构添加了( integer_value )属性包。它可以使您设置结构中字段排列的对齐方式,这是在使用DLL时要求的。1、2 、4、8和16可用于integer_value。如果属性没有定义,则默认为1字节对齐方式——pack(1).使用示例: //+------------------------------------------------------------------+ //| 默认包装 | //+------------------------------------------------------------------+ struct A { char a; int b; }; //+------------------------------------------------------------------+ //| 指定包装 | //+------------------------------------------------------------------+ struct B pack(4) { char a; int b; }; //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { Print("sizeof(A)=",sizeof(A)); Print("sizeof(B)=",sizeof(B)); } //+------------------------------------------------------------------+ 结论: sizeof(A)=5 sizeof(B)=8 在MSDN中了解关于结构中对齐方式的更多信息。 MQL5:降低转换枚举的需求。在隐式转换的情况下,编译器会自动替换正确的枚举值并显示警告。以下代码: enum Main { PRICE_CLOSE_, PRICE_OPEN_ }; input Main Inp=PRICE_CLOSE; //+------------------------------------------------------------------+ //| 起始函数 | //+------------------------------------------------------------------+ void OnStart() { } 编译器显示警告: 从'enum ENUM_APPLIED_PRICE'隐式转换到'enum Main''Main::PRICE_OPEN_'将替换'ENUM_APPLIED_PRICE::PRICE_CLOSE'并被使用 早期,在该情况下生成以下错误: 'PRICE_CLOSE' - 不能转换枚举 如果在函数参数中错误地使用枚举,编译器将仍显示该错误。 MQL5:修正编译模板函数。现在,当使用重载模板函数时,只重载必要的函数,而不是所有现有函数都被重载。 class X { }; void f(int) { } template<typename T> void a(T*) { new T(2); } // 以前,编译器在这里生成错误 template<typename T> void a() { f(0); } void OnInit() { a<X>(); } MQL5:通过CopyTicks* 函数优化了一些访问报价历史的情况。 MQL5:添加了新TesterStop函数,可以使您提前完成测试/优化过程。当调用该函数时,整个交易统计信息和OnTester结果都会像完成常规测试/优化一样被传递到客户端。 MQL5:为自定义指标添加新属性 #property tester_everytick_calculate。它用于策略测试,允许在每次报价时强制计算指标。 Tester:现在,对于非可视化测试/优化,使用的所有指标(标准指标和自定义指标)只在数据请求期间计算。包含EventChartCustom函数调用和应用OnTimer处理程序的指标排除在外。在此之前,在每次报价进入时,所有指标在策略测试中都无条件计算。这项新功能显著增加了测试和优化的速度。若要在每次报价时启用强制指标计算,请为该程序添加#property tester_everytick_calculate属性。通过之前版本的编译器编译的指标将按照之前的规则计算 —— 在每次报价时计算。 Tester:修正当测试/优化和生成相关报告时计算入金货币的准确性。 Tester:优化并加速策略测试操作。 Tester:修正多个测试和优化的错误。 MetaEditor:修正搜索整个单词。现在,搜索时,下划线被记为常规字符,而不是单词分隔符。 更新文档。 更新将通过实时更新系统提供。 如何开始学习MQL5 MetaTrader 5平台Beta Build 1910:在MQL5中自由拖拽图表和.Net程序库 Sergey Golubev 2018.10.27 17:42 #1 论坛 MT5使用 Sergey Golubev, 2018.10.27 15:08 论坛 MT5使用 Sergey Golubev, 2018.10.27 14:01 ----------------- 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
MetaTrader 5平台更新版将于2018年10月26日进行发布。该更新将有以下变化:
这个功能的便利性在使用多个显示器进行操作时非常明显。因此,您可以在一个显示器上设置平台的主窗口来管理您的账户状态,并将您的图表移动到另一个显示器上以观察市场动向。若要将图表从程序端分离,请在快捷菜单中禁用“固定”选项。然后,将图表移动到所需的显示器。
通过分离图表的独立工具栏可以应用分析对象和指标,而无需在显示器间进行切换。使用工具栏快捷菜单来管理可用命令集或将命令隐藏。
群组聊天和频道交流既可以是公开的,也可以设为私人状态。由创建者来决定是否可以自由加入群聊或是只能通过邀请加入。您还可以为频道和聊天分派版主/群主,为了进一步进行交流管理。
最小交易量及其变动幅度取决于交易商的交易品种设置。
若要使用.NET程序库函数,只需导入DLL本身,而不必定义特定的函数。MetaEditor自动导入所有可以使用的函数:
若要从程序库调用函数,简单导入即可:
TestClass的Inc函数C#代码如下:
作为执行结果,脚本返回值为42。
对.NET程序库的支持工作仍继续。其功能将在未来得到扩展。
WinAPI函数按其用途在单独的文件中分组:
绑定仅适用于64位架构。
在MSDN中了解关于描述符的更多信息。
添加以下属性到ENUM_CHART_PROPERTY_INTEGER枚举:
添加以下函数到ENUM_TERMINAL_INFO_INTEGER枚举:
struct MqlTick
{
datetime time; // 最后价格更新时间
double bid; // 当前卖价
double ask; // 当前买价
double last; // 最后一笔交易的当前价格
ulong volume; // 当前最后价格的交易量
long time_msc; // 以毫秒计算的最后价格更新时间
uint flags; // 报价标识
double volume_real; // 准确性更高的当前最后价格的交易量
};
使用SymbolInfoDouble函数来获得这些属性。
如果属性没有定义,则默认为1字节对齐方式——pack(1).
使用示例:
结论:
在MSDN中了解关于结构中对齐方式的更多信息。
以下代码:
编译器显示警告:
'Main::PRICE_OPEN_'将替换'ENUM_APPLIED_PRICE::PRICE_CLOSE'并被使用
若要在每次报价时启用强制指标计算,请为该程序添加#property tester_everytick_calculate属性。
通过之前版本的编译器编译的指标将按照之前的规则计算 —— 在每次报价时计算。
更新将通过实时更新系统提供。