品牌替代MetaEditor的第三方编辑器解决方案 | 有效期至长期有效 | 最后更新2019-01-10 18:44 |
浏览次数815 |
替代MetaEditor的第三方编辑器解决方案
mt4升级后,采用了mt5的编辑器,当你的中文注释越来越多的时候,输入会越来越慢,老半天还不显示字符。鉴于此,我们很有必要选用第三方编辑器来解决问题了。用第三方编辑器我们必须解决三个问题,一是编译,二是关键字输入提示,三是代码高亮显示。
我选择UEStudio12,这个软件在业内广受好评,而且有稳定的破解版可用,我们只为了解决mql4编码问题,所以不必考虑这个IDE升级,也没必要让它升级。
一、编译ex4
运行UE,高级- 工具配置:
按照图中的内容填写。MQL4编译器可以在官站下载,下载后的mql.exe(32位编译器下载,64位编译器下载)拷贝到UEStudio安装目录,命令行填写:mql.exe /mql4 %f%r ,工作目录选择这个安装目录。点击确定。在主菜单高级中就出现了一个新的工具。
编辑好.mq4文件后,点击这个工具,就会在.mq4路径下生成一个.ex4文件了。编译信息会在UE下方显示:
如果有错误,会提示错误编号以及源码所在的行列。
我不是很肯定用这个编译器编译出来的ex4是否会出错,建议最终还是到metaEditor中编译成型。
顺便说一下帮助文件的安装,在mt4中打开数据文件夹,在metaQuotesTerminalHelp里面将mql4.chm拷贝到UE安装文件夹,双击即可使用。
二、关键字输入提示与高亮显示
UEStudio安装文件夹中有一个wordfiles,这里面是存放关键字的配置文件,我新建了一个laoyeemql4.uew,用记事本输入了所有的mql4的常量、关键字、命令符,做好了自定义函数匹配语句,以及高亮显示语句。
这样的效果与metaEditor是不是一样呢?
三、附上laoyeemql4.uew源码
/L1 mql4 laoyee MQL4_LANG Line Comment = // Block Comment On = Escape Char = String Chars = ' File Extensions = mq4 /TGBegin Function /TGFindStr = %^([a-z_][a-z_0-9^[^]*]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./()!]++)[~;] /TGEnd //基本颜色与字体 /Colors = 0,8421504,8421376,8421376,255, /Colors Back = 16777215,16777215,16777215,16777215,16777215, /Colors Auto Back = 1,1,1,1,1, /Font Style = 0,0,0,0,0, //括号匹配 /Open Brace Strings = { ( [ /Close Brace Strings = } ) ] /Open Fold Strings = { /Close Fold Strings = } //自定义函数筛选 /TGBegin Function //return type on separate line from function name and args /TGFindStr = %^([a-z_][a-z_0-9^[^]*]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./()!]++)[~;] //C++ class member functions, class::name args /TGFindStr = [ ^t]++^([a-z_][a-z_0-9]++::[a-z_^~][a-z_0-9]++^)[ ^t^p]++([^p* :, ^t^[^]/*^-'=: a-z_0-9./(!]++)[~;] //type name args /TGFindStr = %[a-z_][a-z_0-9^[^]: ]++[ ^t*]+[* ]++^([a-z_][a-z_0-9]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./(!]++)[~;] //type type name args /TGFindStr = %[a-z_][:a-z_0-9* $^[^]*]++[ ^t]+[a-z_][:a-z_0-9* $^[^]]++[ ^t*]+[* ]++^([a-z_][a-z_0-9]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./(!]++)[~;] //type type type name args /TGFindStr = %[a-z_][:a-z_0-9^[^]* ]++[ ^t]+[a-z_][:a-z_0-9* ^[^]]++[ ^t]+[a-z_][:a-z_0-9* ^[^]]++[ ^t]+[* ]++^([a-z_][a-z_0-9]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./(!]++)[~;] //Functions with preceding spaces/tabs(causes false positives) /TGFindStr = %[ ^t]++[a-z_][a-z_0-9^[^]: ]++[ ^t*]+[* ]++^([a-z_][a-z_0-9]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./(!]++){++$ /TGBegin Parameter /TGFindStr = [ ^t^p]++^([~,]+^) /TGFindBStart = ( /TGFindBEnd = ) /TGEnd /TGBegin Variable //type name; /TGFindStr = %[ ^t]++^([a-z0-9_]+[ ^t^*]+[a-z0-9^[^]_]+^); /TGFindBStart = { /TGFindBEnd = } //type name = init; /TGFindStr = %[ ^t]++^([a-z0-9_]+[ ^t^*]+[a-z0-9^[^]_]+^)[ ^t]++=*; /TGFindBStart = { /TGFindBEnd = } /TGEnd /TGEnd /Delimiters = ~!@%^ *()-+=|/{}[]:; ' , .? /Member String = ^([a-z0-9_:.]+^)[ ^t^* ]+$S[ ^t^[^]a-z0-9_]++[(-);,] /Variable String = %[ ^t]++^([!-
/L1 mql4 laoyee MQL4_LANG Line Comment = // Block Comment On = Escape Char = String Chars = ' File Extensions = mq4 /TGBegin Function /TGFindStr = %^([a-z_][a-z_0-9^[^]*]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./()!]++)[~;] /TGEnd //基本颜色与字体 /Colors = 0,8421504,8421376,8421376,255, /Colors Back = 16777215,16777215,16777215,16777215,16777215, /Colors Auto Back = 1,1,1,1,1, /Font Style = 0,0,0,0,0, //括号匹配 /Open Brace Strings = { ( [ /Close Brace Strings = } ) ] /Open Fold Strings = { /Close Fold Strings = } //自定义函数筛选 /TGBegin Function //return type on separate line from function name and args /TGFindStr = %^([a-z_][a-z_0-9^[^]*]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./()!]++)[~;] //C++ class member functions, class::name args /TGFindStr = [ ^t]++^([a-z_][a-z_0-9]++::[a-z_^~][a-z_0-9]++^)[ ^t^p]++([^p* :, ^t^[^]/*^-'=: a-z_0-9./(!]++)[~;] //type name args /TGFindStr = %[a-z_][a-z_0-9^[^]: ]++[ ^t*]+[* ]++^([a-z_][a-z_0-9]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./(!]++)[~;] //type type name args /TGFindStr = %[a-z_][:a-z_0-9* $^[^]*]++[ ^t]+[a-z_][:a-z_0-9* $^[^]]++[ ^t*]+[* ]++^([a-z_][a-z_0-9]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./(!]++)[~;] //type type type name args /TGFindStr = %[a-z_][:a-z_0-9^[^]* ]++[ ^t]+[a-z_][:a-z_0-9* ^[^]]++[ ^t]+[a-z_][:a-z_0-9* ^[^]]++[ ^t]+[* ]++^([a-z_][a-z_0-9]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./(!]++)[~;] //Functions with preceding spaces/tabs(causes false positives) /TGFindStr = %[ ^t]++[a-z_][a-z_0-9^[^]: ]++[ ^t*]+[* ]++^([a-z_][a-z_0-9]++^)[ ^t]++([^p* :, ^t^[^]a-z_0-9./(!]++){++$ /TGBegin Parameter /TGFindStr = [ ^t^p]++^([~,]+^) /TGFindBStart = ( /TGFindBEnd = ) /TGEnd /TGBegin Variable //type name; /TGFindStr = %[ ^t]++^([a-z0-9_]+[ ^t^*]+[a-z0-9^[^]_]+^); /TGFindBStart = { /TGFindBEnd = } //type name = init; /TGFindStr = %[ ^t]++^([a-z0-9_]+[ ^t^*]+[a-z0-9^[^]_]+^)[ ^t]++=*; /TGFindBStart = { /TGFindBEnd = } /TGEnd /TGEnd /Delimiters = ~!@%^ *()-+=|/{}[]:; ' , .? /Member String = ^([a-z0-9_:.]+^)[ ^t^* ]+$S[ ^t^[^]a-z0-9_]++[(-);,] /Variable String = %[ ^t]++^([!-