mt4编程参考Word文档下载推荐.docx
- 文档编号:22893636
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:130
- 大小:107.80KB
mt4编程参考Word文档下载推荐.docx
《mt4编程参考Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《mt4编程参考Word文档下载推荐.docx(130页珍藏版)》请在冰豆网上搜索。
//equaltoD'
00:
01.01.2004'
01.01.200400:
12:
[compilationdate]12:
'
[compilationdate]00:
运算符和表达式[Operations&
Expressions]
表达式
一个表达式可以拥有多个字符和操作符,一个表达式可以写在几行里面。
a++;
b=10;
x=(y*z)/w;
注:
分号(;
)是表达式的结束符。
算术运算符
Sumofvaluesi=j+2;
Differenceofvaluesi=j-3;
Changingtheoperationsignx=-x;
Productofvaluesz=3*x;
Divisionquotienti=j/5;
Divisionremainderminutes=time%60;
Adding1tothevariablevaluei++;
Subtracting1fromthevariablevaluek--;
加减1的运算符不能被嵌套在表达式中
inta=3;
//可行的表达式
intb=(a++)*3;
//不可行的表达式
赋值运算符
将右侧的结果赋值给左侧的变量
将x的值赋值给yy=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|=x;
得到逻辑非OR的值y^=x;
一个表达式只能有一个赋值运算符.
关系运算符
用返回0(False)或1(True)来表示两个量之间的关系。
a是否等于ba==b;
a是否不等于ba!
=b;
a是否小于ba<
b;
a是否大于ba>
a是否小于等于ba<
a是否大于等于ba>
真假运算符
否定运算符(!
),用来表示真假的反面的结果。
//如果a不是真的
if(!
a)
Print("
not'
a'
);
逻辑运算符或(||)用来表示两个表达式只要有一个成立即可。
if(xl)
outofrange"
逻辑运算符和(&
&
)用来表示两个表达式要同时成立才行。
if(p!
=x&
p>
y)
true"
n++;
位逻辑运算符
~运算符对操作数执行按位求补操作。
b=~n;
运算符对操作数执行向右位移操作。
x=x>
y;
运算符对操作数执行向左位移操作。
x=x<
一元&
运算符返回操作数的地址
为整型和bool类型预定义了二进制&
运算符。
对于整型,&
计算操作数的按位“与”。
对于bool操作数,&
计算操作数的逻辑“与”;
也就是说,当且仅当两个操作数均为true时,其结果才为true。
b=((x&
y)!
=0);
二进制|运算符是为整型和bool类型预定义的。
对于整型,|对操作数进行按位“或”运算。
对于bool操作数,|对操作数进行逻辑“或”计算,也就是说,当且仅当两个操作数均为false时,其结果才为false。
b=x|y;
为整型和bool类型预定义了^二进制操作数。
对于整型,^计算操作数的按位“异或”。
对于bool操作数,^计算操作数的逻辑“异或”;
也就是说,当且仅当只有一个操作数为true时,其结果才为true。
b=x^y;
注:
位逻辑运算符只作用于Integers类型
其它运算符
索引。
定位在数组中i位置的值。
array[i]=3;
//将3负值到array数组第i位置上
使用x1,x2,...,xn这样的方法将各种值传送到function中进行运算。
doubleSL=Ask-25*Point;
doubleTP=Ask+25*Point;
intticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,TP,
Mycomment"
123,0,Red);
优先级规则
下面是从上到下的运算优先规则,优先级高的将先被运算。
()FunctioncallFromlefttoright
[]Arrayelementselection
!
NegationFromlefttoright
~Bitwisenegation
-Signchangingoperation
*MultiplicationFromlefttoright
/Division
%Moduledivision
+AdditionFromlefttoright
-Subtraction
LeftshiftFromlefttoright
Rightshift
LessthanFromlefttoright
=Lessthanorequals
Greaterthan
=Greaterthanorequals
==EqualsFromlefttoright
=Notequal
BitwiseANDoperationFromlefttoright
^BitwiseexclusiveORFromlefttoright
|BitwiseORoperationFromlefttoright
LogicalANDFromlefttoright
||LogicalORFromlefttoright
=AssignmentFromrighttoleft
+=Assignmentaddition
-=Assignmentsubtraction
*=Assignmentmultiplication
/=Assignmentdivision
%=Assignmentmodule
=Assignmentrightshift
=Assignmentleftshift
=AssignmentbitwiseAND
|=AssignmentbitwiseOR
^=AssignmentexclusiveOR
CommaFromlefttoright
操作符[Operators]
格式和嵌套
格式.一个操作符可以占用一行或者多行,两个或多个操作符可以占用更多的行。
嵌套.执行控制符(if,if-else,switch,whileandfor)可以进行任意嵌套.
复合操作符
一个复合操作符有一个(一个区段)和由一个或多个任何类型的操作符组成的的附件{}.每个表达式使用分号作为结束(;
)
if(x==0)
{
x=1;
y=2;
z=3;
}
表达式操作符
任何以分号(;
)结束的表达式都被视为是一个操作符。
Assignmentoperator.
Identifier=expression;
标识符=表达式;
x=3;
y=x=3;
//这是错误的
一个操作符中只能有一个表达式。
调用函数操作符
Function_name(argument1,...,argumentN);
函数名称(参数1,...,参数N);
fclose(file);
空操作符
只有一个分号组成(;
).我们用它来表示没有任何表达式的空操作符.
停止操作符
一个break;
我们将其放在嵌套内的指定位置,用来在指定情况下跳出循环操作.
//从0开始搜索数组
for(i=0;
i<
ARRAY_SIZE;
I++)
if((array[i]==0)
break;
继续操作符
一个continue;
我们将其放在嵌套内的指定位置,用来在指定情况下跳过接下来的运算,直接跳入下一次的循环。
//summaryofnonzeroelementsofarray
intfunc(intarray[])
intarray_size=ArraySize(array);
intsum=0;
for(inti=0;
i
if(a[i]==0)continue;
sum+=a[i];
return(sum);
返回操作符
一个return;
将需要返回的结果放在return后面的()中。
return(x+y);
条件操作符if
if(expression)
operator;
如果表达式为真那么执行操作。
if(a==x)
temp*=3;
temp=MathAbs(temp);
条件操作符if-else
operator1
else
operator2
如果表达式为真那么执行operator1,如果为假执行operator2,else后还可以跟进多个if执行多项选择。
详见示例。
if(x>
1)
if(y==2)
z=5;
z=6;
l)
if(y==2)z=5;
//多项选择
if(x=='
y=1;
elseif(x=='
b'
y=2;
z=3;
c'
y=4;
ERROR"
选择操作符switch
switch(expression)
caseconstant1:
operators;
break;
caseconstant2:
...
default:
当表达式expression的值等于结果之一时,执行其结果下的操作。
不管结果如何都将执行default中的操作。
case3+4:
//正确的
caseX+Y:
//错误的
被选择的结果只可以是常数,不可为变量或表达式。
switch(x)
case'
A'
:
CASEA\n"
B'
CASEBorC\n"
NOTA,BorC\n"
循环操作符while
while(expression)
只要表达式expression为真就执行操作operator
while(k<
N)
y=y*x;
k++;
循环操作符for
for(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)一样.
表达式1和表达式3都可以内嵌多个用逗号(,)分割的表达式。
for(i=0,j=n-l;
N;
I++,J--)
a[i]=a[j];
函数[Function]
函数定义
一个函数是由返回值、输入参数、内嵌操作所组成的。
double//返回值类型
linfunc(doublex,doublea,doubleb)//函数名和输入参数
//内嵌的操作
return(a*x+b);
//返回值
如果没有返回值那么返回值的类型可以写为void
voiderrmesg(strings)
error:
+s);
函数调用
function_name(x1,x2,...,xn)
intsomefunc()
doublea=linfunc(0.3,10.5,8);
doublelinfunc(doublex,doublea,doubleb)
特殊函数init()、deinit()和start()
init()在载入时调用,可以用此函数在开始自定义指标或者自动交易之前做初始化操作。
deinit()在卸载时调用,可以用此函数在去处自定义指标或者自动交易之前做初始化操作。
start()当数据变动时触发,对于自定义指标或者自动交易的编程主要依靠此函数进行。
变量[Variables]
定义变量
定义基本类型
基本类型包括
∙string-字符串型;
∙int-整数型;
∙double-双精度浮点数型;
∙bool-布尔型
stringMessageBox;
intOrders;
doubleSymbolPrice;
boolbLog;
定义附加类型
附加类型包括
∙datetime-时间型,使用无符号整型数字存储,是1970.1.10:
0:
0开始的秒数
∙color-颜色,使用三色的整型数字编码而成
externdatetimetBegin_Data=D'
externcolorcModify_Color=C'
0x44,0xB9,0xE6'
定义数组类型
inta[50];
//一个一维由五十个int组成的数组
doublem[7][50];
//一个两维由7x50个double组成的数组
内部变量定义
内部变量顾名思义是在内部使用的,可以理解为在当前嵌套内所使用的变量。
函数参数定义
voidfunc(intx,doubley,boolz)
函数的参数内的变量只能在函数内才生效,在函数外无法使用,而且在函数内对变量进行的修改在函数外无法生效。
调用函数示例:
func(123,0.5);
如果有需要在变量传入由参数传入函数内操作后保留修改在函数外生效的情况的话,可以在参数定义的类型名称后加上修饰符(&
)。
voidfunc(int&
x,double&
y,double&
z[])
静态变量定义
在数据类型前加上static就可以将变量定义成静态变量
staticintflag
全局变量定义
全局变量是指在整个程序中都能够调用的变量,只需将变量定义卸载所有嵌套之外即可。
intGlobal_flag;
intstart()
附加变量定义
附加变量可以允许由用户自己输入。
externdoubleInputParameter1=1.0;
intinit()
初始化变量
变量必须经过初始化才可以使用。
基本类型
intmt=1;
//integer初始化
//double初始化
doublep=MarketInfo(Symbol(),MODE_POINT);
//string初始化
strings="
hello"
数组类型
intmta[6]={1,4,9,16,25,36};
外部函数引用
#import"
user32.dll"
intMessageBoxA(inthWnd,stringszText,
stringszCaption,intnType);
intSendMessageA(inthWnd,intMsg,intwParam,intlParam);
lib.ex4"
doubleround(doublevalue);
#import
预处理程序[Preprocessor]
定义常数
#defineidentifier_value
常数可以是任何类型的,常数在程序中不可更改。
#defineABC100
#definePI0.314
#defineCOMPANY_NAME"
MetaQuotesSoftwareCorp."
编译参数定义
#propertyidentifier_value
#propertylink"
#propertycopyright"
#propertystacksize1024
以下是所有的参数名称:
参数名称
类型
说明
link
string
设置一个链接到公司网站
copyright
公司名称
stacksize
int
堆栈大小
indicator_chart_window
void
显示在走势图窗口
indicator_separate_window
显示在新区块
indicator_buffers
显示缓存最高8
indicator_minimum
图形区间最低点
indicator_maximum
图形区间最高点
indicator_colorN
color
第N根线的颜色,最高8根线
indicator_levelN
double
predefinedlevelNforseparatewindowcustomindicator
show_confirm
当程序执行之前是否经过确认
show_inputs
beforescriptrunitspropertysheetappears;
disablesshow_confirmproperty
嵌入文件
#include<
file_name>
win32.h>
#include"
file_name"
mylib.h"
引入函数或其他模块
func1();
func2();
intMessageBoxA(inthWnd,stringlpText,stringlpCaption,
intuType);
intMessageBoxExA(inthWnd,stringlpText,stringlpCaption,
intuType,intwLanguageId);
melib.ex4"
gdi32.dll"
intGetDC(inthWnd);
intReleaseDC(inthWnd,inthDC);
账户信息[AccountInformation]
doubleAccountBalance()
返回账户余额
Accountbalance="
AccountBalance());
doubleAccountCredit()
返回账户信用点数
Accountnumber"
AccountCredit());
stringAccountCompany()
返回账户公司名
Accountcompanyname"
AccountCompany());
stringAccountCurrency()
返回账户所用的通货名称
accountcurrencyis"
AccountCurrency());
doubleAcc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mt4 编程 参考
![提示](https://static.bdocx.com/images/bang_tan.gif)