MT4编程语言MQL4入门(全接触)解读.doc

上传人:豆**** 文档编号:23961154 上传时间:2022-07-02 格式:DOC 页数:467 大小:809KB
返回 下载 相关 举报
MT4编程语言MQL4入门(全接触)解读.doc_第1页
第1页 / 共467页
MT4编程语言MQL4入门(全接触)解读.doc_第2页
第2页 / 共467页
点击查看更多>>
资源描述

《MT4编程语言MQL4入门(全接触)解读.doc》由会员分享,可在线阅读,更多相关《MT4编程语言MQL4入门(全接触)解读.doc(467页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateMT4编程语言MQL4入门(全接触)解读MT4编程语言全接触MT4编程语言全接触语法 Syntax代码格式空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。注释多行注释使用 /* 作为开始到 */ 结束,在这之间不能够嵌套。单行注释使用 / 作为开始到新的一行结束,可以被嵌套到多行注释之中。示例:/ 单行注释 /* 多行

2、注释 / 嵌套的单行注释 注释结束 */标识符标识符用来给变量、函数和数据类型进行命名,长度不能超过31个字节你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。此外首字母不可以是数字,标识符不能和保留字冲突.示例:/ NAME1 namel Total_5 Paper保留字下面列出的是固定的保留字。不能使用以下任何保留字进行命名。 数据类型存储类型操作符其它bool extern break false color static case true datetime continue double default int else string for v

3、oid if return switch while 数据类型 Data types数据类型概述主要数据类型有: Integer (int) Boolean (bool) (char) String (string) Floating-point number (double) Color (color) Datetime (datetime) 我们用Integer类型数据来作为DateTime和Color数据的存储。使用以下方式可以进行类型站换:int (bool,color,datetime);double;string;Integer 类型十进制: 数字0-9;0不能作为第一个字母示例:

4、12, 111, -956 1007十六进制: 数字0-9;拉丁字母a-f或A-F用来表示10-15;使用0x或者0X作为开始。示例:0x0A, 0x12, 0X12, 0x2f, 0xA3, 0Xa3, 0X7C7Integer 变量的取值范围为-2147483648到2147483647。Literal 类型任意在单引号中的字符或十六进制的任意ASCII码例如x10都是被看作为一个字符,一些字符例如单引号(),双引号(),问号(?),反斜杠()和一些控制符都需要在之前加一个反斜杠()进行转意后表示出来:line feed NL (LF) nhorizontal tab HT tcarria

5、ge return CR rreverse slash single quote double quote hexadecimal ASCII-code hh xhh以上字符如果不经过反斜杠进行转意将不能被使用示例:int a = A;int b = $;int c = ; / code 0xA9int d = xAE; / symbol code Boolean 类型Boolean 用来表示是和否, 还可以用数字 1 和 0 进行表示。True和Flase可以忽略大小写。示例:bool a = true;bool b = false;bool c = 1;Floating-point num

6、ber 类型浮点型变量在整数型后面加一个点(.)用来更精确的表示十进制数字。示例:double a = 12.111;double b = -956.1007;double c = 0.0001;double d = 16;浮点型的取值范围从 2.2e-308 到 1.8e308.String 类型字符串型是用来表示连续的ASCII码字符的使用连续的两个双引号来包括需要表示的内容如:Character constant.示例:This is a character stringCopyright symbol txA9this line with LF symbol nA 1234567890

7、 0 $Color 类型颜色类型可以使用以下示例里的几种方式进行定义。 示例:/ symbol constantsC128,128,128 / grayC0x00,0x00,0xFF / blue/ named colorRedYellowBlack/ integer-valued representation0xFFFFFF / white16777215 / white0x008000 / green32768 / greenDatetime 类型时间类型使用年、月、日、时、分、秒来进行定义,你可以使用以下示例中的方式来定义变量。示例:D2004.01.01 00:00 / New Yea

8、rD1980.07.19 12:30:27D19.07.1980 12:30:27D19.07.1980 12 /equal to D1980.07.19 12:00:00D01.01.2004 /equal to D01.01.2004 00:00:00D12:30:27 /equal to Dcompilation date 12:30:27D /equal to Dcompilation date 00:00:00 运算符和表达式 Operations & Expressions表达式一个表达式可以拥有多个字符和操作符,一个表达式可以写在几行里面。示例:a+; b = 10; x = (

9、y*z)/w;注:分号(;)是表达式的结束符。算术运算符Sum of values i = j + 2;Difference of values i = j - 3;Changing the operation sign x = - x;Product of values z = 3 * x;Division quotient i = j / 5;Division remainder minutes = time % 60;Adding 1 to the variable value i+;Subtracting 1 from the variable value k-;加减1的运算符不能被嵌

10、套在表达式中int a=3;a+; / 可行的表达式int b=(a+)*3; / 不可行的表达式赋值运算符注:将右侧的结果赋值给左侧的变量将x的值赋值给y y = x;将x的值加到y上面 y += x;在y上面减去x的值 y -= x;得到y的x倍的值 y *= x;得到y除以x的值 y /= x;取y除以x后的余数 y %= x;y向右位移x位 y = x;y向左位移x位 y = x;得到逻辑AND的值 y &= x;得到逻辑OR的值 y |= x;得到逻辑非OR的值 y = x;注:一个表达式只能有一个赋值运算符.关系运算符用返回0(False)或1(True)来表示两个量之间的关系。a

11、是否等于b a = b;a是否不等于b a != b;a是否小于b a b;a是否小于等于b a = b;真假运算符否定运算符(!),用来表示真假的反面的结果。/ 如果a不是真的if(!a)Print(not a);逻辑运算符或(|)用来表示两个表达式只要有一个成立即可。示例:if(xl)Print(out of range);逻辑运算符和(&)用来表示两个表达式要同时成立才行。示例:if(p!=x & py)Print(true);n+;位逻辑运算符 运算符对操作数执行按位求补操作。b = n; 运算符对操作数执行向右位移操作。x = x y; 运算符对操作数执行向左位移操作。x = x y

12、;一元 & 运算符返回操作数的地址为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。b = (x & y) != 0);二进制 | 运算符是为整型和 bool 类型预定义的。对于整型,| 对操作数进行按位“或”运算。对于 bool 操作数,| 对操作数进行逻辑“或”计算,也就是说,当且仅当两个操作数均为 false 时,其结果才为 false。b = x | y;为整型和 bool 类型预定义了 二进制操作数。对于整型, 计算操作数的

13、按位“异或”。对于 bool 操作数, 计算操作数的逻辑“异或”;也就是说,当且仅当只有一个操作数为 true 时,其结果才为 true。b = x y;注:位逻辑运算符只作用于Integers类型其它运算符索引。定位在数组中i位置的值。array = 3;/将3负值到array数组第i位置上使用 x1,x2,.,xn 这样的方法将各种值传送到function中进行运算。示例:double SL=Ask-25*Point;double TP=Ask+25*Point;int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,TP,My comment,12

14、3,0,Red);优先级规则下面是从上到下的运算优先规则,优先级高的将先被运算。() Function call From left to right Array element selection! Negation From left to right Bitwise negation- Sign changing operation* Multiplication From left to right/ Division% Module division+ Addition From left to right- Subtraction Right shift Less than Fro

15、m left to right Greater than= Greater than or equals= Equals From left to right!= Not equal& Bitwise AND operation From left to right Bitwise exclusive OR From left to right| Bitwise OR operation From left to right& Logical AND From left to right| Logical OR From left to right= Assignment From right

16、 to left+= Assignment addition-= Assignment subtraction*= Assignment multiplication/= Assignment division%= Assignment module= Assignment right shift= Assignment left shift&= Assignment bitwise AND|= Assignment bitwise OR= Assignment exclusive OR, Comma From left to right操作符 Operators 格式和嵌套格式.一个操作符可

17、以占用一行或者多行,两个或多个操作符可以占用更多的行。嵌套.执行控制符(if, if-else, switch, while and for)可以进行任意嵌套.复合操作符一个复合操作符有一个(一个区段)和由一个或多个任何类型的操作符组成的的附件. 每个表达式使用分号作为结束(;)示例:if(x=0)x=1; y=2; z=3;表达式操作符任何以分号(;)结束的表达式都被视为是一个操作符。Assignment operator.Identifier=expression;标识符=表达式;示例:x=3;y=x=3; / 这是错误的一个操作符中只能有一个表达式。调用函数操作符Function_nam

18、e(argument1,., argumentN);函数名称(参数1,.,参数N);示例:fclose(file);空操作符只有一个分号组成(;).我们用它来表示没有任何表达式的空操作符.停止操作符一个break; , 我们将其放在嵌套内的指定位置,用来在指定情况下跳出循环操作.示例:/ 从0开始搜索数组for(i=0;i1)if(y=2)z=5;elsez=6; if(xl)if(y=2) z=5;elsez=6;/ 多项选择if(x=a)y=1;else if(x=b)y=2;z=3;else if(x=c)y = 4;elsePrint(ERROR);选择操作符 switchswitch

19、 (expression)case constant1: operators; break;case constant2: operators; break;.default: operators; break;当表达式expression的值等于结果之一时,执行其结果下的操作。不管结果如何都将执行default中的操作。示例:case 3+4: /正确的case X+Y: /错误的被选择的结果只可以是常数,不可为变量或表达式。示例:switch(x)case A:Print(CASE An);break;case B:case C:Print(CASE B or Cn);break;defa

20、ult:Print(NOT A, B or Cn);break;循环操作符 whilewhile (expression)operator;只要表达式expression为真就执行操作operator示例:while(kN)y=y*x;k+;循环操作符 forfor (expression1; expression2; expression3)operator;用表达式1(expression1)来定义初始变量,当表达式2(expression2)为真的时候执行操作operator,在每次循环结束后执行表达式3(expression3)用while可以表示为这样:expression1;whi

21、le (expression2)operator;expression3;示例:for(x=1;x=7;x+)Print(MathPower(x,2);使用for(;)可以造成一个死循环如同while(true)一样.表达式1和表达式3都可以内嵌多个用逗号(,)分割的表达式。示例:for(i=0,j=n-l;iN;I+,J-)a=aj;函数 Function函数定义一个函数是由返回值、输入参数、内嵌操作所组成的。示例:double / 返回值类型linfunc (double x, double a, double b) / 函数名和输入参数/ 内嵌的操作return (a*x + b); /

22、 返回值如果没有返回值那么返回值的类型可以写为void示例:void errmesg(string s)Print(error: +s);函数调用function_name (x1,x2,.,xn)示例:int somefunc()double a=linfunc(0.3, 10.5, 8);double linfunc(double x, double a, double b)return (a*x + b);特殊函数 init()、deinit()和start()init()在载入时调用,可以用此函数在开始自定义指标或者自动交易之前做初始化操作。deinit()在卸载时调用,可以用此函数在

23、去处自定义指标或者自动交易之前做初始化操作。start()当数据变动时触发,对于自定义指标或者自动交易的编程主要依靠此函数进行。变量 Variables定义变量定义基本类型基本类型包括 string - 字符串型; int - 整数型; double - 双精度浮点数型; bool - 布尔型 示例:string MessageBox;int Orders;double SymbolPrice;bool bLog;定义附加类型附加类型包括 datetime - 时间型,使用无符号整型数字存储,是1970.1.1 0:0:0开始的秒数 color - 颜色,使用三色的整型数字编码而成 示例:ex

24、tern datetime tBegin_Data = D2004.01.01 00:00;extern color cModify_Color = C0x44,0xB9,0xE6;定义数组类型示例:int a50; /一个一维由五十个int组成的数组double m750; /一个两维由7x50个double组成的数组内部变量定义内部变量顾名思义是在内部使用的,可以理解为在当前嵌套内所使用的变量。函数参数定义示例:void func(int x, double y, bool z).函数的参数内的变量只能在函数内才生效,在函数外无法使用,而且在函数内对变量进行的修改在函数外无法生效。调用函数

25、示例:func(123, 0.5);如果有需要在变量传入由参数传入函数内操作后保留修改在函数外生效的情况的话,可以在参数定义的类型名称后加上修饰符(&)。示例:void func(int& x, double& y, double& z).静态变量定义在数据类型前加上static就可以将变量定义成静态变量示例:static int flag全局变量定义全局变量是指在整个程序中都能够调用的变量,只需将变量定义卸载所有嵌套之外即可。示例:int Global_flag;int start().附加变量定义附加变量可以允许由用户自己输入。示例:extern double InputParameter

26、1 = 1.0;int init().初始化变量变量必须经过初始化才可以使用。基本类型示例:int mt = 1; / integer 初始化/ double 初始化double p = MarketInfo(Symbol(),MODE_POINT);/ string 初始化string s = hello;数组类型示例:int mta6 = 1,4,9,16,25,36;外部函数引用示例:#import user32.dllint MessageBoxA(int hWnd ,string szText,string szCaption,int nType);int SendMessageA(

27、int hWnd,int Msg,int wParam,int lParam);#import lib.ex4double round(double value);#import预处理程序 Preprocessor定义常数#define identifier_value常数可以是任何类型的,常数在程序中不可更改。示例:#define ABC 100#define PI 0.314#define COMPANY_NAME MetaQuotes Software Corp.编译参数定义#property identifier_value示例:#property link #property cop

28、yright MetaQuotes Software Corp.#property stacksize 1024以下是所有的参数名称: 参数名称类型说明link string 设置一个链接到公司网站copyright string 公司名称stacksize int 堆栈大小indicator_chart_window void 显示在走势图窗口indicator_separate_window void 显示在新区块indicator_buffers int 显示缓存最高8indicator_minimum int 图形区间最低点indicator_maximum int 图形区间最高点in

29、dicator_colorN color 第N根线的颜色,最高8根线indicator_levelN double predefined level N for separate window custom indicatorshow_confirm void 当程序执行之前是否经过确认show_inputs void before script run its property sheet appears; disables show_confirm property 嵌入文件#include 示例:#include #include file_name示例:#include mylib.h

30、引入函数或其他模块#import file_namefunc1();func2();#import示例:#import user32.dllint MessageBoxA(int hWnd,string lpText,string lpCaption,int uType);int MessageBoxExA(int hWnd,string lpText,string lpCaption,int uType,int wLanguageId);#import melib.ex4#import gdi32.dllint GetDC(int hWnd);int ReleaseDC(int hWnd,i

31、nt hDC);#import账户信息 Account Informationdouble AccountBalance()返回账户余额示例:Print(Account balance = ,AccountBalance();double AccountCredit()返回账户信用点数示例:Print(Account number , AccountCredit();string AccountCompany()返回账户公司名示例:Print(Account company name , AccountCompany();string AccountCurrency()返回账户所用的通货名称示

32、例:Print(account currency is , AccountCurrency();double AccountEquity()返回资产净值示例:Print(Account equity = ,AccountEquity();double AccountFreeMargin()Returns free margin value of the current account.示例:Print(Account free margin = ,AccountFreeMargin();int AccountLeverage()返回杠杆比率示例:Print(Account #,AccountN

33、umber(), leverage is , AccountLeverage();double AccountMargin()Returns margin value of the current account.示例:Print(Account margin , AccountMargin();string AccountName()返回账户名称示例:Print(Account name , AccountName();int AccountNumber()返回账户数字示例:Print(account number , AccountNumber();double AccountProfit

34、()返回账户利润示例:Print(Account profit , AccountProfit();数组函数 Array Functionsint ArrayBsearch( double array, double value, int count=WHOLE_ARRAY, int start=0, int direction=MODE_ASCEND)搜索一个值在数组中的位置此函数不能用在字符型或连续数字的数组上.: 输入参数array - 需要搜索的数组value - 将要搜索的值 count - 搜索的数量,默认搜索所有的数组start - 搜索的开始点,默认从头开始direction

35、- 搜索的方向,MODE_ASCEND 顺序搜索 MODE_DESCEND 倒序搜索 示例:datetime daytimes;int shift=10,dayshift;/ All the Time timeseries are sorted in descendant modeArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);if(Timeshift=daytimes0) dayshift=0;elsedayshift=ArrayBsearch(daytimes,Timeshift,WHOLE_ARRAY,0,MODE_DESCEND);if(Period()=daytimes0) dayshift=0;elsedayshift=ArrayBsearch(daytimes,Timeshift,WHOLE_ARRAY,0,MODE_DESCEND);if(Period()Print(TimeToStr(Timeshift), corresponds to ,dayshift, day bar opened at , TimeToStr(daytimesdayshift);int ArrayDimension( int array) 返回数组的维数 : 输入参数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com