MQL4经典入门第4课.doc_第1页
MQL4经典入门第4课.doc_第2页
MQL4经典入门第4课.doc_第3页
MQL4经典入门第4课.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MQL4 经典入门 第4课函数函数很像一台香肠机,你放进肉和调料,它产出香肠。肉和调料相当于函数的参数,香肠相当于函数的返回值。机器本身相当于函数主体。香肠机和函数的唯一区别就是:有些函数没有返回值。(nothing在MQL4里被称为void)让我们来看一些例子:double /香肠的类型返回值my_func (double a, double b, double c) / 函数名和参数列表 (肉和调料) return (a*b + c); /产出香肠 返回来的值 就像你上面看到的那样,函数开始于返回值类型”double”和那个后面带小括号的函数名。小括号里是函数参数,在我们的例子中,我们有三个参数:double a,double b和double c。函数的主体包含在大括号里。在我们的例子中,函数主体将进行(a*b + c)操作。return关键字负责返回最终结果。return关键字:return关键字终止函数的执行(就像循环里的break关键字)并且把控制权交给函数调用方。return关键字可以像上面那样在它的圆括号里包含一个表达式,这样就可以终止函数的执行并返回表达式的值。当然,它也可以不包含表达式。这样的话,它的工作就仅仅是终止程序的执行。注意:并不是所有的函数都使用return关键字,特别是像下面这个没有返回值的例子:void / void 的意思是没有返回值。my_func (string s) /函数名和参数列表。 Print(s); 上面的函数没有返回值,但是它将输出参数 s的值。当函数没有返回值的时候,我们使用”void”作为函数返回类型。函数的调用:设想你有一个计算两个整数的和的函数,它像下面这样:int collect(int a,int b)return(a+b);你可以像下面这样使用它:int c=10,d=20;int sum=collect(c,d);print(sum);它的关键是这一行:int sum=collect(c,d);在这里你声明了一个变量(sum)来获得函数的返回值并给了函数两个参数c和d。当MQL4看见你的函数名,它将获得你的参数,然后跳转到函数里。当然它还会带着结果返回到同一行。它就像是把函数的所有行复制到你调用它的地方。函数的嵌套:你可以在一个函数主体里嵌套一个或多个函数。我们将在一个新函数里使用上面提到的求和函数。新函数的工作是输出求和函数的结果。例:void print_collection (int first_number, int second_number) int sum = collect(first_number, second_number); Print(sum); 在上面的例子中,我们在print_collection函数里调用了collect函数并且输出结果。void的意思是没有返回值。在MQL4中存在三种预定义名称函数:init() 在载入时调用,可以用此函数在开始自定义指标或者自动交易之前做初始化操作。(在MQL4里,每一个程序开始于init()函数(初始化),它的工作是初始化你的程序的主要变量。)start() 是基本函数。对于智能交易,在下一个替克进入之后被调用。对于客户指标,在指标添加到图表之后,客户端开始(如果指标添加到图表)并且下一个替克进入之后,函数被调用。对于脚本,在脚本被添加到图表之后立即执行并初始化。如果在模板中不存在start()函数,模板 (智能交易,脚本或客户指标) 不能开启。(start()函数是最重要的函数,你程序的90%包含在这个函数里。)deinit() 当数据变动时触发,对于自定义指标或者自动交易的编程主要依靠此函数进行。(当你的程序完成了它的工作,或者你关闭了图表窗口或者退出了meattrad终端,deinit()函数将被执行(消除初始化)。)最后感谢大家,欢迎回帖批评指正。MQL4中的变量开始之前你可以复习“数据类型”那一课。变量的声明:你可以通过使用关键字(int, double, char, bool, string, color 和 datetime)和你选择的变量名来声明一个变量并指定它的类型。例:int myvaraible;在这儿你声明了一个叫做myvaraible的整型变量。在声明之前你不能在程序里使用它。如果你使用了未经声明的变量,MQL4编译器将报错并给除如下信息:variable not defined. 1 error(s), 0 warning(s).变量的初始化:变量初始化的意思是给这个变量赋值。例如:myvaraible=10;你也可以在声明行对变量进行初始化,例如:int myvaraible=10;并且你可以像下面这样,在一个地方声明变量。然后在另一个地方对它进行初始化:int myvaraible;Myvaraible=10;记住:只能初始化一个被声明了的变量。或者说初始化之前必须先声明。变量的范围:变量有两个范围:局部变量和全局变量。范围的意思是程序的那一部分可以知道并使用这个变量。局部变量:局部变量的意思是在它被声明的区域外不能被识别。例如,被声明在函数中的变量是函数代码的局部变量。还有循环和选择中声明的变量,它只能在循环和选择中被局部的识别和使用。例:double my_func (double a, double b, double c) int d ; return (a*b + c); 在上面的例子中,a,b,c,d都是局部变量,它们仅能在函数代码块中使用。因此在上面的例子中,如果我们在大括号的后面写上这样一行:d=10;,那么就是错误的了。因为局部变量只能在它被声明的区中中被识别和使用。大括号外已经不是它被声明的区域了。全局变量是被声明在任何代码块(函数,循环,选择)之外的变量,它在程序的任何部分被识别和使用。例:int Global_Variable;double my_func (double a, double b, double c) return (a*b + c + Global_Variable); 全局变量如果不被初始化,将被自动设置为0.外部变量:关键字extern被用来声明一种特殊类型的变量。例:extern color Indicator_color = C0x00,0x00,0xFF; / 蓝色int init() . 外部定义的可变量。 在数据类型公布之前指定外部变量。 示例:extern double InputParameter1 = 1.0;extern color Input

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论