Latest blog entry

第二期MT4编程学习班开始接受报名

第二期MT4编程学习班现在开始接受报名,预计12月17日开始上课。有兴趣的朋友请联系QQ: 949636732;或E-MAIL: yuki.young@163.com

12月 10, 2008 | 发表评论 | Permalink

关于MT4新版本中小数位的问题

随着MT4升级到最新的220版本,MT4中的报价也分别更改为5位或3位(日系货币对)了。这对我们ea的使用和开发产生了不小的影响。举个例子:一张EURUSD的多单,开仓价是1.2800,止损20点,就应该是1.2780;在升级到5位小数位后,开仓价就成了1.28000,这时候如果还是用20点止损的思路,止损就成了1.27920!在开发或使用ea的时候,往往会因为这样的原因,导致止损价格或止盈价格与现价相距太近而报错。如果你的EA是基于4位或2位小数位(日系货币对)来开发的,建议检查一遍代码,看看逻辑上会不会出现这样的错误。

11月 25, 2008 | 2条评论 | Permalink

善用MT4中的全局变量GlobalVariable

全局变量在MT4编程中有两层含义,一是编程领域中常规的全局变量含义,即独立于所有函数之外定义的变量,生命周期覆盖整个程序;还有一个就是MT4中独有的:在同一MT4客户端内,所有的指标、脚本和EA都可共享同一全局变量:
GlobalVariable,这个概念类似于编程领域中的共享内存区域;下面简单介绍一下其用法。
首先是必须用到的三个函数:GlobalVariableSet()、GlobalVariableGet()、GlobalVariableDel()。顾名思义,这三个函数的作用分别是设置、获取和删除GlobalVariable。在任何一个指标、脚本和EA中,可用GlobalVariableSet来设置一个GlobalVariable,如:

GlobalVariableSet(“test”, 1.2345);

这就设置好了,把这个指标挂到任何一张图表之上后,在同一个MT4客户端下运行的任何指标、脚本和EA都能读取到这个GlobalVariable了,读取方法:

GlobalVariableGet(“Test”);

最后,如果我们不需要这个GlobalVariable了,就可以这样把它删除了:

GlobalVariableDel(“Test”);

需要注意:一是GlobalVariable只能是double类型的数据,不能把string、数组之类的赋给它,否则编译的时候虽然不会报错,但其实是无效的;二是GlobalVariable的生命周期是名符其实的“全局”,在设置了一个GlobalVariable后,如果不用GlobalVariableDel来删除它,它将会一直存在,无论设置它的指标、脚本和EA是否已被删除,甚至MT4关闭后也会存在,下次重新启动MT4时这个GlobalVariable仍然是可用的!善用这点,在设计交易程序的时候可说是如虎添翼,呵呵!

11月 8, 2008 | 发表评论 | Permalink

一个改进的Comment函数

这个函数是我在forexfactory.com论坛上看到的,主要作用是在图表上输出多行的Comment(注释),觉得挺有用,所以和大家分享一下:

//Determines how many of your previous comments are shown
extern int MaxCommentsToShow=25;
//An array to hold all of the comments
string allcomments[];
 
//+------------------------------------------------------------------+
//| Manage comments - Written by DMS                                           |
//+------------------------------------------------------------------+
void managecomments(string addcomment)
   {
   string tempcomments[];
   int commentscroll;
   string output;
   int CommentCount = ArrayRange(allcomments, 0);
   if(CommentCount<MaxCommentsToShow)
      {
      ArrayResize(tempcomments,CommentCount+1);
      ArrayCopy(tempcomments,allcomments,1,0,WHOLE_ARRAY);
      }
   else
      {
      ArrayResize(tempcomments,MaxCommentsToShow);
      ArrayCopy(tempcomments,allcomments,1,0,MaxCommentsToShow-1);
      }   
   tempcomments[0]=addcomment;
   CommentCount = ArrayRange(tempcomments, 0);
   ArrayResize(allcomments,CommentCount);
   ArrayCopy(allcomments,tempcomments,0,0,CommentCount);
 
   for(commentscroll=0;commentscroll<CommentCount;commentscroll++)
      {
      output = output + allcomments[commentscroll] +"\n";
      }    
   Comment(output);
   }

那么怎么用呢?很简单,直接调用行了:

managecomments("show this on my chart!");
11月 8, 2008 | 1条评论 | Permalink

第一期MT4编程入门学习班现在开始接受报名

经过一段时间的筹备策划,现在第一期的MT4编程入门学习班现在开始接受报名了。这个学习班主要是针对之前从未接触过MT4编程的朋友而设计的,从零开始教授MQL语法。详情请下载参阅招生简章。

招生简章下载

11月 3, 2008 | 2条评论 | Permalink

将于近期开办首个MT4编程入门教学班

之前在博客曾提过希望以某种方式给初学MT4编程的朋友一些帮助,现在觉得是时候做这件事了,我计划在近期举办一个MT4编程入门教学班。这个教学班的最大特点是从零开始,也就是无需任何编程基础也可以参加,希望这样能让更多的朋友踏入MT4编程的世界。教学的方式初步打算分如下两种:

1、从C语言语法开始,一步步学习MT4编程;

2、按学员的要求度身订造一套指标或EA,并为学员详细讲解结构原理、如何进行修改等(这种方式需要学员有起码的编程基础,能看懂代码,适合只希望快速得到自己想要的MT4代码的朋友)。

具体细节我还在和团队的成员商议,因为这件事不是我一个人做,而是由一个团队来进行,所以会酌情收取费用,希望大家能理解,毕竟做这样的事是需要付出很多的时间和精力的。

开班时间未定,如果有兴趣的朋友想了解更多或预定名额,可联系团队客服QQ咨询:949636732

10月 16, 2008 | 3条评论 | Permalink

如何在每根新Bar出来时才进行判断或交易

这是初学MT4编程的朋友问得比较多的一个问题。大家知道,start函数是在每次价格变动时都会被调用的,那么写在start函数内的各种条件判断和交易操作都会同时被执行,如何避免这种情况的发生呢?答案就是在进行各种条件判断或交易操作前,先判断当前的bar是否为一根新的bar(即在该bar的周期内没有进行过判断或交易)。

首先,我们定义一个全局变量:(如不清楚全局变量的含义,可翻查一下相关资料。这里补充说明一下,在MQL语言中,其实datetime类型就是int类型,所以写成如下格式其实也是可以的:然后,我们可以在start函数中进行是否为新bar的判断:

正如前面所说,MQL里面的时间类型其实就是int类型,所以可以进行大小的判断,在MT4中,随着时间的流逝,Time[]数组中的数值是从左往右不断增大的,Time[0]代表当前时间,也是Time[]数组中最大的数值。

10月 13, 2008 | 发表评论 | Permalink

如何使用EA

初接触MT4的朋友在使用EA时,经常会碰到这样或那样的问题,这里我把这些问题集中一下,希望让大家在遇到问题时能迅速找到答案。
       首先,我们从网上下载到的EA会是两种文件格式中的任意一种:一种是后缀名为mq4的文件;另外一种是后缀名为ex4的文件。后缀名为mq4的文件其实就是EA的源码文件,如果你的电脑上安装了MT4软件,只要双击这个mq4文件就可以直接打开并浏览EA的源代码;而ex4文件就是mq4文件编译后的二进制文件。Mq4格式和ex4格式在使用上没分别,只要放入MT4目录下的experts文件夹内,即可使用,区别是mq4可对EA进行修改并重新编译,而ex4则只能使用,不能修改。把EA文件放入experts文件夹后,打开MT4软件,打开你希望EA进行交易的货币对的图表,然后打开MT4的“导航器”栏(如果没有,可按Ctrl+N调出),其中有一项是“智能交易系统”,把这项展开:

我们可以看到刚才放入experts文件夹的EA文件已经在其中了,双击该EA,就会弹出如下窗口:

其中“允许实时自动交易”一项一定要勾选,其它一般保持默认即可。确定后,如操作正确,即会将该EA添加到当前打开的图表上,这是你可看见图表的右上角有个笑脸的图标:

如果不是笑脸,则检查一下工具栏的“智能交易”按钮是否已按下:

至此,EA即可正常工作。需要注意的是,不是所有使用MT4作为客户端的外汇交易商都允许EA进行交易的,所以有时即使看到笑脸图标,EA也可能没有在工作。

09月 26, 2008 | 发表评论 | Permalink

EA是什么

很多朋友在浏览我的博客后,经常会问我同样的一些问题:EA是什么?EA能做什么?特别是一些刚从股票转到外汇的朋友,对EA更是觉得陌生,这里我把对EA的一点认识与大家分享一下。
      说到EA,不得不提到MT4。MT4的全名是MetaTrader 4,是由一家叫做MetaQuotes的俄罗斯公司推出的外汇交易客户端软件。MetaQuotes公司只开发外汇交易软件技术,本身并不提供外汇交易服务,很多外汇交易公司向MetaQuotes公司购买其提供的外汇交易软件技术,然后向外汇交易者提供交易服务,实际上,现在大部分面对散户的外汇交易商都采用了MT4作为其外汇交易服务的软件客户端。MT4软件内置了一种叫做MQL(Meta Programming Language)的脚本语言,用户可利用MQL语言把自己的交易思路编写成MT4软件可识别的脚本,然后MT4会根据脚本自动进行判断、下单、平仓、移动止损等交易操作,这就把交易者从繁琐的看盘中解脱出来,把一些可明确定义的模式交由计算机去执行,而交易者可有更多时间去做其它事情了。
       回到我们的主题上来,EA,全名是Expert Advisor。从字面上理解,是专家建议者,我们一般会叫它作智能交易系统。EA实际上就是用MQL语言编写的脚本,可由MT4自动执行。举个例子,假如我希望在两条移动平均线金叉的时候买入,死叉的时候卖出,如果人工操作,就必须坐在电脑前看着屏幕,直到出现信号,并且手工进行交易操作;但如果把这个交易规则编写为EA的话,则只需把电脑开着,在满足上述条件时,EA就会自动帮你进行交易操作,全过程都是自动的,不需要人工干预。

09月 26, 2008 | 2条评论 | Permalink

加入一种头寸管理方法的海豚小弟EA v205版本

有的朋友提供了这样一种头寸调整方法:资金翻倍,头寸翻倍,简单举个例子,即1000美元交易0.1手、2000美元交易0.2手,如此类推。。。

下面是实现了这种头寸管理办法的v205版本测试结果:

 

使用这种管理方法的话,就会造成资金的回撤相对较大,在实际交易中对交易者的心理影响较大。

v205版本下载地址

09月 25, 2008 | 发表评论 | Permalink
粤ICP备08108171号