1、 (char) String (string) Floating-point number (double) Color (color) Datetime (datetime) 我们用Integer类型数据来作为DateTime和Color数据的存储。使用以下方式可以进行类型站换:int (bool,color,datetime);double;string;Integer 类型十进制: 数字0-9;0不能作为第一个字母12, 111, -956 1007十六进制:拉丁字母a-f或A-F用来表示10-15;使用0x或者0X作为开始。0x0A, 0x12, 0X12, 0x2f, 0xA3, 0
2、Xa3, 0X7C7Integer 变量的取值范围为-2147483648到2147483647。Literal 类型任意在单引号中的字符或十六进制的任意ASCII码例如x10都是被看作为一个字符,一些字符例如单引号(),双引号(),问号(?),反斜杠()和一些控制符都需要在之前加一个反斜杠()进行转意后表示出来:line feed NL (LF) nhorizontal tab HT tcarriage return CR rreverse slash single quote double quote hexadecimal ASCII-code hh xhh以上字符如果不经过反斜杠进行转
3、意将不能被使用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 number 类型浮点型变量在整数型后面加一个点(.)用来更精确的表示十进制数字。double a = 12.111;double b = -956.1007;double c = 0.0001;double d = 16
4、;浮点型的取值范围从 2.2e-308 到 1.8e308.String 类型字符串型是用来表示连续的ASCII码字符的使用连续的两个双引号来包括需要表示的内容如:Character constant.This is a character stringCopyright symbol txA9this line with LF symbol nA 12345678900$Color 类型颜色类型可以使用以下示例里的几种方式进行定义。/ symbol constantsC128,128,128 / gray0x00,0x00,0xFF / blue/ named colorRedYellowB
5、lack/ integer-valued representation0xFFFFFF / white16777215 / white0x008000 / green32768 / greenDatetime 类型时间类型使用年、月、日、时、分、秒来进行定义,你可以使用以下示例中的方式来定义变量。D2004.01.01 00:00 / New Year1980.07.19 12:30:2719.07.1980 12:19.07.1980 12 /equal to D00:01.01.200401.01.2004 00:12:compilation date 12:compilation dat
6、e 00:运算符和表达式 Operations & Expressions表达式一个表达式可以拥有多个字符和操作符,一个表达式可以写在几行里面。a+; b = 10; x = (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 %
7、60;Adding 1 to the variable value i+;Subtracting 1 from the variable value k-;加减1的运算符不能被嵌套在表达式中int a=3; / 可行的表达式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 得到逻辑AND的值 y &得到逻辑OR的值 y
8、|= x;得到逻辑非OR的值 y = x;一个表达式只能有一个赋值运算符.关系运算符用返回0(False)或1(True)来表示两个量之间的关系。a是否等于b a = b;a是否不等于b a != b;a是否小于b a a是否小于等于b a 真假运算符否定运算符(!),用来表示真假的反面的结果。/ 如果a不是真的if(!a)Print(not a);逻辑运算符或(|)用来表示两个表达式只要有一个成立即可。if(xl)out of range逻辑运算符和(&)用来表示两个表达式要同时成立才行。if(p!=x & py)truen+;位逻辑运算符 运算符对操作数执行按位求补操作。b = n; 运算
9、符对操作数执行向右位移操作。x = x y; 运算符对操作数执行向左位移操作。x = x 一元 & 运算符返回操作数的地址为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。b = (x & y) != 0);二进制 | 运算符是为整型和 bool 类型预定义的。对于整型,| 对操作数进行按位“或”运算。对于 bool 操作数,| 对操作数进行逻辑“或”计算,也就是说,当且仅当两个操作数均为 false 时,其结果才为 false。b
10、= x | y;为整型和 bool 类型预定义了 二进制操作数。对于整型, 计算操作数的按位“异或”。对于 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(Sy
11、mbol(),OP_BUY,1,Ask,3,SL,TP,My comment,123,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 rig
12、ht- Subtraction Left shift From left to right Right shift Less than From left to right= Less than or equals 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 r
13、ight Logical AND From left to right| Logical OR From left to right= Assignment From right to left+= Assignment addition-= Assignment subtraction*= Assignment multiplication/= Assignment division%= Assignment module= Assignment right shift= Assignment left shift= Assignment bitwise AND|= Assignment b
14、itwise OR= Assignment exclusive OR, Comma From left to right操作符 Operators 格式和嵌套格式.一个操作符可以占用一行或者多行,两个或多个操作符可以占用更多的行。嵌套.执行控制符(if, if-else, switch, while and for)可以进行任意嵌套.复合操作符一个复合操作符有一个(一个区段)和由一个或多个任何类型的操作符组成的的附件. 每个表达式使用分号作为结束(;)if(x=0)x=1; y=2; z=3;表达式操作符任何以分号(;)结束的表达式都被视为是一个操作符。Assignment operator.
15、Identifier=expression;标识符=表达式;x=3;y=x=3; / 这是错误的一个操作符中只能有一个表达式。调用函数操作符Function_name(argument1,., argumentN);函数名称(参数1,.,参数N);fclose(file);空操作符只有一个分号组成(;).我们用它来表示没有任何表达式的空操作符.停止操作符一个break; , 我们将其放在嵌套内的指定位置,用来在指定情况下跳出循环操作./ 从0开始搜索数组for(i=0;i1)if(y=2)z=5;z=6;l)if(y=2) z=5;/ 多项选择if(x=y=1;else if(x=by=2;z
16、=3;cy = 4;ERROR选择操作符 switchswitch (expression)case constant1: operators; break;case constant2:.default:当表达式expression的值等于结果之一时,执行其结果下的操作。不管结果如何都将执行default中的操作。case 3+4: /正确的case X+Y: /错误的被选择的结果只可以是常数,不可为变量或表达式。switch(x)case :CASE AnBCASE B or CnNOT A, B or Cn循环操作符 whilewhile (expression)只要表达式express
17、ion为真就执行操作operatorwhile(kN)y=y*x;k+;循环操作符 forfor (expression1; expression2; expression3)用表达式1(expression1)来定义初始变量,当表达式2(expression2)为真的时候执行操作operator,在每次循环结束后执行表达式3(expression3)用while可以表示为这样:expression1;while (expression2)expression3;for(x=1;x=7;x+)Print(MathPower(x,2);使用for(;)可以造成一个死循环如同while(true)
18、一样.表达式1和表达式3都可以内嵌多个用逗号(,)分割的表达式。for(i=0,j=n-l;N;I+,J-)a=aj;函数 Function函数定义一个函数是由返回值、输入参数、内嵌操作所组成的。double / 返回值类型linfunc (double x, double a, double b) / 函数名和输入参数/ 内嵌的操作return (a*x + b); / 返回值如果没有返回值那么返回值的类型可以写为voidvoid errmesg(string s)error:+s);函数调用function_name (x1,x2,.,xn)int somefunc()double a=l
19、infunc(0.3, 10.5, 8);double linfunc(double x, double a, double b)特殊函数 init()、deinit()和start()init()在载入时调用,可以用此函数在开始自定义指标或者自动交易之前做初始化操作。deinit()在卸载时调用,可以用此函数在去处自定义指标或者自动交易之前做初始化操作。start()当数据变动时触发,对于自定义指标或者自动交易的编程主要依靠此函数进行。变量 Variables定义变量定义基本类型基本类型包括 string - 字符串型; int - 整数型; double - 双精度浮点数型; bool -
20、 布尔型 string MessageBox;int Orders;double SymbolPrice;bool bLog;定义附加类型附加类型包括 datetime - 时间型,使用无符号整型数字存储,是1970.1.1 0:0:0开始的秒数 color - 颜色,使用三色的整型数字编码而成 extern datetime tBegin_Data = Dextern color cModify_Color = C0x44,0xB9,0xE6定义数组类型int a50; /一个一维由五十个int组成的数组double m750; /一个两维由7x50个double组成的数组内部变量定义内部变
21、量顾名思义是在内部使用的,可以理解为在当前嵌套内所使用的变量。函数参数定义void func(int x, double y, bool z)函数的参数内的变量只能在函数内才生效,在函数外无法使用,而且在函数内对变量进行的修改在函数外无法生效。调用函数示例:func(123, 0.5);如果有需要在变量传入由参数传入函数内操作后保留修改在函数外生效的情况的话,可以在参数定义的类型名称后加上修饰符(&)。void func(int& x, double& y, double& z)静态变量定义在数据类型前加上static就可以将变量定义成静态变量static int flag全局变量定义全局变量
22、是指在整个程序中都能够调用的变量,只需将变量定义卸载所有嵌套之外即可。int Global_flag;int start()附加变量定义附加变量可以允许由用户自己输入。extern double InputParameter1 = 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;外部函数引用#i
23、mport user32.dllint MessageBoxA(int hWnd ,string szText,string szCaption,int nType);int SendMessageA(int hWnd,int Msg,int wParam,int lParam);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示
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1