MetaTrader 5平台Beta Build 1910:在MQL5中自由拖拽图表和.Net程序库 新评论 MetaQuotes 2018.10.13 07:39 更新的MetaTrader 5平台测试版将于2018年10月14日进行发布。我们将会更新我们位于demo.metaquotes.net:443的MetaQuotes-Demo 公共服务器。我们邀请所有交易者加入测试平台新版本,以便评估平台所有更新功能从而帮助开发者修正出现的错误。 若要将MetaTrader 5平台升级到build 1910,请连接access.metatrader5.com server:443。 新版MetaTrader 5平台的最终版将在公开测试版结束后发布。 该更新将有以下变化: 程序端:现在,您可以在交易程序端窗口之外使用交易品种图表。这个功能的便利性在使用多个显示器进行操作时非常明显。因此,您可以在一个显示器上设置平台的主窗口来管理您的账户状态,并将您的图表移动到另一个显示器上以观察市场动向。若要将图表从程序端分离,请在快捷菜单中禁用“固定”选项。然后,将图表移动到所需的显示器。 通过分离图表的独立工具栏可以应用分析对象和指标,而无需在显示器间进行切换。使用工具栏快捷菜单来管理可用命令集或将命令隐藏。 程序端:完全更新的嵌入式聊天功能。现在,该功能支持群组聊天和频道交流。可以在一个环境内与一个群组的人们进行私人讨论,而不需要在不同的对话之间切换,您还可以根据您的兴趣和语言创建频道。在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=6; TestClass::Inc(x); Print(x); } TestClass的Inc函数C#代码如下: public class TestClass { public static void Inc(ref int x) { x++; } } 执行结果是脚本返回值为7。 MQL5:在解析代码时,新增对inline, __inline和 __forceinline描述符的支持。代码中的描述符不会导致错误,也不会影响编译。目前,该特性简化了将С++ 代码转为MQL5。在MSDN中了解关于描述符的更多信息。 MQL5:显著优化了MQL5程序的执行。在某些情况下,性能改进可以达到10%。在新版MetaEditor重新编译您的程序,使其运行得更快。 遗憾的是,由于这个额外的优化功能,新程序将无法与以前的程序端版本兼容。使用MetaEditor 1910版本编译的程序,之后无法在低于1880版本的程序端中启用。使用早期的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:降低转换枚举的需求。在隐式转换的情况下,编译器会自动替换正确的枚举值并显示警告。以下代码: 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* 函数优化了一些访问报价历史的情况。 Tester:修正当测试/优化和生成相关报告时计算入金货币的准确性。 Tester:优化并加速策略测试操作。 MetaEditor:修正搜索整个单词。现在,搜索时,下划线被记为常规字符,而不是单词分隔符。 更新文档。 如何开始学习MQL5 新版MetaTrader 5平台build 1930:浮动窗口图表和MQL5中的.Net程序库 新版MetaTrader 5平台beta build 1845:改进MQL5柱形图操作和策略测试功能 Sergey Golubev 2018.10.22 15:38 #1 交易,自动交易系统和测试交易策略论坛 MetaTrader 5 Platform Beta Build 1910:MQL5中图表和.Net库的未绑定拖放 Sergey Golubev ,2018.10.15 08:30 是的,我喜欢它 - 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
更新的MetaTrader 5平台测试版将于2018年10月14日进行发布。我们将会更新我们位于demo.metaquotes.net:443的MetaQuotes-Demo 公共服务器。我们邀请所有交易者加入测试平台新版本,以便评估平台所有更新功能从而帮助开发者修正出现的错误。
新版MetaTrader 5平台的最终版将在公开测试版结束后发布。
该更新将有以下变化:
这个功能的便利性在使用多个显示器进行操作时非常明显。因此,您可以在一个显示器上设置平台的主窗口来管理您的账户状态,并将您的图表移动到另一个显示器上以观察市场动向。若要将图表从程序端分离,请在快捷菜单中禁用“固定”选项。然后,将图表移动到所需的显示器。
通过分离图表的独立工具栏可以应用分析对象和指标,而无需在显示器间进行切换。使用工具栏快捷菜单来管理可用命令集或将命令隐藏。群组聊天和频道交流既可以是公开的,也可以设为私人状态。由创建者来决定是否可以自由加入群聊或是只能通过邀请加入。您还可以为频道和聊天分派版主/群主,为了进一步进行交流管理。
最小交易量及其变动幅度取决于交易商的交易品种设置。
若要使用.NET程序库函数,只需导入DLL本身,而不必定义特定的函数。MetaEditor自动导入所有可以使用的函数:
若要从程序库调用函数,简单导入即可:
TestClass的Inc函数C#代码如下:
执行结果是脚本返回值为7。
在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函数来获得这些属性。
以下代码:
编译器显示警告:
'Main::PRICE_OPEN_'将替换'ENUM_APPLIED_PRICE::PRICE_CLOSE'并被使用