诚信为本
量力而为
当前位置:峰汇在线 ea编程知识 正文

ea编程中的 return 语句用法说明

不管是用mql4语言还是用mlq5语言编写智能交易EA系统,return 语句都是常用的。要用一个词总结return 语句的作用,那就是“返回”。

返回什么呢?概括的说分返回计算结果、返回条件真假及返回操作符终止当前函数操作等。下面分别举例来说明。

return 语句终止操作退出函数

如果在一个void()函数中遇到带有某种条件的 return 语句,那么程序将会直接返回退出所在的整个函数,不再往下执行任何语句。当然,它不影响EA中的其它函数。

例一:比如在EA的主函数 void OnTick()函数中,如果我们需要账户资金满足一万美金才交易,那么可以用以下条件加return 语句来实现:

  void OnTick()
   {
   if(AccountBalance()<10000)return;

   //ea运行交易
   } 

if(AccountBalance()<10000)return; 这段代码的意思是:如果账户余额小于一万美金,就直接返回,退出void OnTick()函数。不再执行 void OnTick()函数中 return语句以下其它语句。

这里需要注意一点:void OnTick()函数是EA的最新主函数,在它当中用return语句,是不需要带什么值的,直接满足或不满做什么条件执行return就行。在EA的老函数 int start()中return 语句是要带一个值的,通常是return(0)。

如果在一个函数内的for()循环或者其它循环内遇到return 语句,同样是跳到所在函数的退出处,不再执行return 语句下面的其它语句。

return 语句返回计算结果

在自定义int,double,datetime等类型的函数中,return 语句返回计算结果。

比如要获取20SMA移动平均线的值,可以创建如下自定义函数:

  double ma_20(int i)
  {
   return(iMA(Symbol(),0,20, 0,MODE_SMA,PRICE_CLOSE, i));
  }

在ma_20(int i)函数中,return语句的作用就是返回20sm均线的具体数值。

再比如我们要根据账户资金来计算EA的开仓手数,可以创建自定义手数函数,代码示例如下:

  double Lots_r()
  {
   double lots =0;
   if(AccountBalance()<1000)lots =0.01;
   if(AccountBalance() < 2000 && AccountBalance() >= 1000)lots =0.02;
   if(AccountBalance() < 3000 && AccountBalance() >= 2000)lots =0.03;
   if(AccountBalance() >= 3000)lots =0.04;
   return(lots);
  }

在Lots_r()函数中,return(lots) 语句就是返回了根据比较账户余额计算出来的手数值。

return 语句返回条件真假

其实这和上面一条是同类的。在bool类型的函数中,return 语句返回结果的真假。也就是true和false。

比如我们比较K线为阳线来开多单,那么可以创建最简单自定义函数来获取K线是否为阳线。代码示例如下:

  bool tr_sin(int i)
  {
   bool trsin = false;
   if(Close[i]>Open[i])trsin = true; else trsin = false;
   return(trsin);
  }

在tr_sin(int i)函数中,return 语句返回的就是一种条件比较的结果。如果tr_sin(1)返回的是true,那么说明上一根蜡烛就是阳线。

当然,return 语句在编程语言中具体的作用还是要看具体的环境来决定的。本文所说的也只是 return 语句在外汇EA编程中最基本及最常见的用法。

版权所有转载请注明标题及链接:峰汇在线 » ea编程中的 return 语句用法说明