11 MQL4通用函数

各种提示信息相关的函数。

11.1 Alert(警告窗口)

void Alert(    …)

弹出一个显示信息的警告窗口。 参量可以使任意类型。通过参量总数不得超过64。

对于警报函数数组不能通过。数组可以作为输出元素。

双重数据类型可以输入到小数点后4位。 输入数据使用DoubleToStr()函数更为精确。
bool数据, 时间和颜色类型警作为数字类型输入。
时间类型值作为数组使用 TimeToStr()函数输入。
参见 Comment()Print() 函数。

参量:

…      –      任意值,如有多个可用逗号分割 。最多为64个参量。

示例:

if(Close[0]>SignalLevel)

Alert(“收盘价进入 “, Close[0],”!!!”);

11.2 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()));

11.3 GetTickCount(时间标记)

int GetTickCount(    )

使用GetTickCount()函数取时间标记,函数取回用毫秒标示的时间标记。

示例:

int start=GetTickCount();

// 计算…

Print(“Calculation time is “, GetTickCount()-start, ” milliseconds.”);

11.4 MarketInfo(市场信息)

double MarketInfo(    string symbol, int type)

在市场观察窗口返回不同数据保证金列表。 当前保证金的部分描述存储在预定义常量

参量:

symbol      –      货币对。

type      –      指定类别的请求识别符信息返回。可以是 请求识别码的任意值。

示例:

double bid =MarketInfo(“EURUSD”,MODE_BID);

double ask =MarketInfo(“EURUSD”,MODE_ASK);

double point =MarketInfo(“EURUSD”,MODE_POINT);

int digits=MarketInfo(“EURUSD”,MODE_DIGITS);

int spread=MarketInfo(“EURUSD”,MODE_SPREAD);

11.5 MessageBox(消息弹出框)

int MessageBox(    void text, void caption, void flags)

在信息箱内可以创建,展示和控制信息箱。信息箱包含信息和题头。如果函数成功运行,MessageBox函数 返回代码值为其中值之一(表10.5.1)。
此函数不能用在指标中,也不能用在策略测试中。

参量:

text      –      窗口显示的文字。

caption      –      窗口上显示的标题。如果参量为 NULL, 智能交易名称将被隐藏。

flags      –      窗口选项开关。选项
开关存在组。详情见表10.5.2,可以是几种标志的集合,使用”|”进行结合。

示例:

#include <WinUser32.mqh>

if(ObjectCreate(“text_object”, OBJ_TEXT, 0, D’2004.02.20 12:30′, 1.0045)==false)

{

int ret=MessageBox(” ObjectCreate() function returned the “+GetLastError()+” error\nContinue?”, “Question”, MB_YESNO|MB_ICONQUESTION);

if(ret==IDNO) return(false);

} // 继续

表10.5.1 MessageBox()返回代码

此部分包含MessageBox()函数的返回代码。如果消息窗口有一个取消按钮,该函数将返回IDCANCEL,以防ESC键或取消按钮被按下。如果消息窗口中没有取消按钮,则按ESC不会产生任何效果

返回值常量

说明

IDOK

1

“OK” 键被按下

IDCANCEL

2

“Cancel” 键被按下

IDABORT

3

“Abort”键被按下

IDRETRY

4

“Retry” 键被按下

IDIGNORE

5

“Ignore” 键被按下

IDYES

6

“Yes” 键被按下

IDNO

7

“No” 键被按下

IDTRYAGAIN

10

“Try Again”键被按下

IDCONTINUE

11

“Continue” 键被按下

表10.5.2 窗口选项开关flags

MessageBox()函数的主标志定义对话框窗口的内容和行为。此值可以是下列标记组的组合

选项开关常量

描述

MB_OK

0x00000000

消息框只包含一个按钮: OK. 默认

MB_OKCANCEL

0x00000001

消息框包含两个按钮: OK and Cancel

MB_ABORTRETRYIGNORE

0x00000002

消息框包含三个按钮: Abort, Retry and Ignore

MB_YESNOCANCEL

0x00000003

消息框包含三个按钮: Yes, No and Cancel

MB_YESNO

0x00000004

消息框包含两个按钮: Yes and No

MB_RETRYCANCEL

0x00000005

消息框包含两个按钮: Retry and Cancel

MB_CANCELTRYCONTINUE

0x00000006

消息框包含三个按钮: Cancel, Try Again, Continue

要在消息窗口中显示图标,需要指定额外的标志:

图标常量

描述

MB_ICONSTOP,

MB_ICONERROR,

MB_ICONHAND

0x00000010

STOP 图标(停止)

MB_ICONQUESTION

0x00000020

question 图标(问题)

MB_ICONEXCLAMATION,

MB_ICONWARNING

0x00000030

exclamation/warning 图标(惊叹/警告)

MB_ICONINFORMATION,

MB_ICONASTERISK

0x00000040

encircled i 图标(包围)

默认按钮由以下标志定义:

默认按钮常量        描述

MB_DEFBUTTON1    0x00000000    默认按钮为第一个

MB_DEFBUTTON2    0x00000100    默认按钮为第二个

MB_DEFBUTTON3    0x00000200    默认按钮为第三个

MB_DEFBUTTON4    0x00000300    默认按钮为第四个

11.6  PlaySound(播放声音)

void PlaySound(    string filename)

函数播放声音文件。文件必须载入目录terminal_dir\sounds或子目录内。

参量:

filename      –      音频文件名 。

示例:

if(IsDemo()) PlaySound(“alert.wav”);

11.7 Print(消息输出)

void Print(    …)

将文本打印在结果窗口内 。 参量可以使任意类型。通过参量总数不得超过64。

对于Print()函数数组不能通过。数组可以作为输出元素。

双重数据类型可以输入到小数点后4位。 输入数据使用DoubleToStr()函数更为精确。
bool数据, 时间和颜色类型警作为数字类型输入。
时间类型值作为数组使用 TimeToStr()函数输入。
参见 Comment()Print() 函数。

参量:

…      –      任意值,如有多个可用逗号分割 。最多为64个。

示例:

Print(“当前自由保证金 “, AccountFreeMargin());

Print(“当前时间 “, TimeToStr(TimeCurrent()));

double pi=3.141592653589793;

Print(“PI number is “, DoubleToStr(pi,8));

// 输入数据: PI number is 3.14159265

// 数组打印

for(int i=0;i<10;i++)

Print(关闭[i]);

11.8 SendFTP(发送FTP信息)

bool SendFTP(    string filename, void ftp_path)

设置在工具>选项>公开标签内发送文件到FTP 服务器。如果尝试失败, 返回FALSE。
在测试的模式下作用不能控制。作用可以从客户指标或其他中运作。
发送的文件必须储存在 terminal_directory\experts\files文件夹或子文件夹内。
如果不存在FTP 地址或者指定密码,文件不会传送。

参量:

filename      –      发送文件。

ftp_path      –      FTP 通道。如果没有制定通道,会应用设置中的描述通道。

示例:

int lasterror=0;

if(!SendFTP(“report.txt”))

lasterror=GetLastError();

11.9 SendMail(发送邮件)

void SendMail(    string subject, string some_text)

设置在工具>选项 >EMail 标签内发送电子邮件。
可以设置禁止此项功能, 或者是省略电子邮件地址。获得详细错误信息,查看GetLastError() 函数。

参量:

subject      –      文本。

some_text      –      邮件。

示例:

double lastclose=Close[0];

if(lastclose<my_signal)

SendMail(“从你的智能交易”, “价格下降到”+DoubleToStr(lastclose,Digits));

11.10 Sleep(等待函数)

void Sleep(    int milliseconds)

The Sleep()函数是指在指定的时间间隔内暂停交易业务
The Sleep()函数不能在客户指标内计算。
当进入函数停止状态 智能交易每0.1 second秒会检测。

参量:

milliseconds      –      毫秒之内的内部睡眠。.

示例:

//—- 等待10秒

Sleep(10000);