您的位置:首页 > 其它

MQL4基础知识学习(系统保留字区分…

2017-03-16 10:58 253 查看
系统保留字:
(每个保留字严格区分大小写,否则MetaEditor不识别!)
(把光标放在 命令上按F1
,能快速找到此命令的解释!)


1、extern:
Defining extern
variables
外部定义变量
外部定义的可变量。在数据类型公布之前指定外部变量。
示例:
extern double
InputParameter1 = 1.0;
extern color
InputParameter2 = red;
int
init()
{
...
}
确定从外部程序输入的变量,会直接显现输入数据窗口。数列本身不能作为外部变量。

2、Controlling compilation (#property
)编译控制

每个
MQL4
程序允添加以#property

名称特殊的参量来帮助客户端服务。这是一个内设指标。
#property

识别值
常数类型描述
link
string
公司网站的相关连接
copyright
string
公司名称
stacksize
int
栈式储存器大小
library

资料库;查看任何可出现的功能错误
indicator_chart_window
void
在图表窗口显示指标
indicator_separate_window
void
在指定窗口显示指标
indicator_buffers
int
对于指标计算的数字,最大为
8

indicator_minimum double
在指标窗口下端
indicator_maximum
double
在指标窗口的上端
indicator_colorN
color

1

8
之间显示线的颜色
indicator_widthN
int

1

8
之间显示线的宽度
indicator_styleN
int

1

8
之间显示线的风格
indicator_levelN
double
在客户指标窗口
1

8
之间
N
的水平
indicator_levelcolor
color
水平线颜色
indicator_levelwidth
int
水平线宽度
indicator_levelstyle
int
水平线风格
show_confirm
void
在脚本运行之前显示确认
show_inputs
void
在脚本运行之前显示它的属性和确认
示例:

#property link "http://www.metaquotes.net"

#property copyright "MetaQuotes Software Corp."

#property library

#property stacksize 1024

在执行模板设定

 

3、Special functions
特殊函数


MQL4
中存在三种预定义名称函数:

init()
在载入时调用,可以用此函数在开始自定义指标或者自动交易之前做初始化操作。
start()

是基本函数。对于智能交易,在下一个替克进入之后被调用。对于客户指标,在指标
添加到图表之后,客户端开始(如果指标添加到图表)并且下一个替克进入之后,函数被调用。
对于脚本,在脚本被添加到图表之后立即执行并初始化。如果在模板中不存在

start()函数,
28

模板
(智能交易,脚本或客户指标)

不能开启。
deinit()

当数据变动时触发,对于自定义指标或者自动交易的编程主要依靠此函数进行
预定义函数需要一些参量。不过,当这些参量被客户端调用时,外部没有参量提供。

start(),

init()和

deinit()函数从模板的任何一点按照常规调用,等于其他函数。
不建议从

init()函数调用

start()函数或是执行交易业务,作为图表数据,市场开价格。模板

的初始化会出现残缺。这时,init()


deinit()
函数必须尽可能结束运行。在调用

start()函

数之前,尝试重新全面开启运行。
 4、Comment

显示信息在走势图左上角

void Comment( ...)

显示信息在走势图左上角 。参量可以使任意类型。通过参量总数不得超过

64。
对于警报函数数组不能通过。数组可以作为输出元素。
双重数据类型可以输入到小数点后

4
位。 输入数据使用
DoubleToStr()函数更为精确。
bool

数据,

时间和颜色类型警作为数字类型输入。
bool

数据,

时间和颜色类型警作为数字类型输入。
时间类型值作为数组使用

TimeToStr()函数输入。
参见

Comment()

Print()
函数。
参量:

... - =任意值,如有多个可用逗号分割。最多为

64
个参量。
示例:

double free=AccountFreeMargin();

Comment("
账 户 自 由 保 证 金
",DoubleToStr(free,2),"\n","Current time is

",TimeToStr(TimeCurrent()));

 

5、ObjectGet 目标属性

double ObjectGet( string name, int index)

函数返回指定物件的属性。检查错误,查看 GetLastError() 函数。

参见 ObjectSet()函数。

参量:

name - 物件名称。

index - 物件属性索引。它可以是物件属性列举值的任意。

示例:

color oldColor=ObjectGet("hline12", OBJPROP_COLOR);

 

6、point、tick、spread

Point 点值

double Point

返回当前图表的点值

参见 MarketInfo().

示例:

OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);

Tick 替克 - 货币价格的最小单位变化。

最小变动价位

最小变动价位(Tick Size,Minimum Price
Fluctuation)是指在期货交易所的公开竞价过程中,对期货合约每计量单位报价的最小变动数值。

例如——

“阴极铜”的最小变动价位是“10元/吨”,即每手该合约最小变动值是“10元/吨x5吨/手=50元”;

“沪深300指数”的最小变动价位是“0.2点”,即每手该合约最小变动值是“0.2点x300元/点=60元”。

spread:买入叫价与卖出叫价的差价,也叫“点差”。为交易商收取的手续费。例如现在需要买入

1
手,那么成交价就是

“卖出叫价”,反之则是“买入叫价”,成交后会与市场价格形成一个差价

7、 Object
properties

对象属性

对象值函数同
ObjectGet()

ObjectSet()
功能一起使用。它可能是以下的任意值:

常数 值 类型 描述
OBJPROP_TIME1
0 datetime
日期时间值设置为第一协调时间部分。
OBJPROP_PRICE1
1 double
双重值设置为第一协调价格部分。
OBJPROP_TIME2
2 datetime
日期时间值设置为第二协调时间部分。
OBJPROP_PRICE2
3 double
双重值设置为第二协调价格部分。
OBJPROP_TIME3
4 datetime
日期时间值设置为第三协调时间部分。
OBJPROP_PRICE3
5 double
双重值设置为第三协调价格部分。

OBJPROP_COLOR 6 color
颜色值设置对象颜色。

8、Functions
函数

函数是部分程序的一个名称,它可以在需要时从任何一个部分调用。 它是由定义分类返回

值,名称,形式参量和合成运算符组成并执行的。通过的总数被限定在
64
个字符之内。
示例:

double //
被返回值的类型
linfunc
(double x, double a, double b) //
函数名称和参量列表
{

//
合成运算符
return
(a + b); //
返回值
}

"返回"运算符可以返回在这个运算符内表达式的值。如果需要,此表达式值可以转换为函数
结果类型。函数没有返回的值必定是“省缺”
类型。
示例:

void errmesg(string s)

{

Print("错误:
"+s);

}

通过函数的参量可能存在由特定类型常数指定的默认值。
示例:

int somefunc(double a, double d=0.0001, int n=5, bool b=true,
string s="passed string")

{

Print("需求参量

a=",a);

Print("下列参量被传送:
d=",d," n=",n," b=",b," s=",s);

return (0);

}

27

如果此默认值指定一个参量,那么所有的参量也必须存在默认值。
错误范例:

int somefunc(double a, double d=0.0001, int n, bool b, string
s="passed string")

9、循环操作符
for

OrderSelect

bool OrderSelect( int index, int select, void pool)

函数选择定单。如果函数成功,返回的值为TRUE。如果函数失败,返回的值为FALSE。获得

详细错误信息,请查看GetLastError()函数。

如果定单编号被选定,此pool 参量被认知。此定单编号为唯一识别符。找出所选定单的列

表,它的平仓时间必须进行分析。如果定单卖出时间为零, 开单和挂单将从终端位置列表

打开。可以从定单类型区别开挂单和开单。 如果定单的卖出时间不等于0, 平单和删除定

单是在终端历史中被选择。他们同样可以区分定单类型。

参量:

index - 定单索引。

select - 选定模式。可以为以下的任意值:

164

SELECT_BY_POS

SELECT_BY_TICKET 。

pool - 可选择定单索引。当选择SELECT_BY_POS 参量时使用。可以为以下的任意值:

MODE_TRADES (default)- 来自交易的定单(开单和挂单),

MODE_HISTORY - 来自历史的定单(平仓和取消定单)。

示例:

if(OrderSelect(12470, SELECT_BY_TICKET)==true)

{

Print("定单 #12470 开价格", OrderOpenPrice());

Print("定单 #12470 收盘价格 ", OrderClosePrice());

}

else

Print("OrderSelect 返回的错误
",GetLastError());

 

 

 

OrderMagicNumber

int OrderMagicNumber( )

返回选定订单的指定编号

注解:定单必须用OrderSelect()函数提前选定。

示例:

if(OrderSelect(10,SELECT_BY_POS)==true)

Print("定单 10 "指定编号, OrderMagicNumber());

else

Print("OrderSelect 返回的
",GetLastError()错误);

 

OrderMagicNumber

Returns an identifying (magic)
number of the currently selected order

 

10、Operator 'continue'

https://book.mql4.com/operators/continue非常详细

Sometimes, when you use a cycle in the code, it is necessary to
early terminate processing of the current iteration and go to the
next one without executing the remaining operators that compose the
cycle body. In such cases, you should use the operator
'continue'.

The operator 'continue' stops the execution of the current
iteration of the nearest cycle operator 'while' or 'for'. The
execution of the operator 'continue' results in going to the next
iteration of the nearest cycle operator 'while' or 'for'. The
operator 'continue' can be used only in the body of the above cycle
operators.

 



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: