MetaQuotes Language 4(MQL4)是一种用于编写交易机器人、技术指标、脚本和库的编程语言。在MQL4中,字符串的元素是Unicode字符集的索引,以16进制值的形式存在,可以转换为整数,同时可以进行整数操作,如加法和减法。
字符常量
在MQL4中,任何单个字符或者十六进制ASCII字符代码,如’\x10’,被放在引号内,就被视为字符常量,其数据类型是ushort。例如,’0’类型的记录是数字值30,对应于字符表中零的索引。
以下是使用字符常量的示例:
void OnStart()
{
int alpha='A';
int beta=alpha+1; // 得到字符 'B'
printf("In a decimal form: alpha = %d, beta = %d",alpha,beta);
printf("In a hexadecimal form: alpha = 0x%x, beta = 0x%x",alpha,beta);
string testStr="";
StringSetCharacter(testStr,0,alpha);
StringSetCharacter(testStr,1,beta);
Print(testStr); // 输出 "AB"
}
控制字符
在处理源程序中的常量字符串和字符常量时,反斜杠()是编译器的控制字符。某些符号,例如单引号(‘),双引号(“),反斜杠()和控制字符可以表示为以反斜杠()开头的符号组合,如下表所示:
字符名称 | 符号代码或图像 | 在MQL4中的记录 | 数值 |
---|---|---|---|
换行符 | LF | ‘\n’ | 10 |
水平制表符 | HT | ‘\t’ | 9 |
回车 | CR | ‘\r’ | 13 |
反斜杠 | \ | ‘\’ | 92 |
单引号 | ‘ | ‘\” | 39 |
双引号 | “ | ‘\”‘ | 34 |
十六进制代码 | hhhh | ‘\xhhhh’ | 1至4个十六进制字符 |
十进制代码 | d | ‘\d’ | 0至65535的十进制数 |
如果反斜杠后面跟的字符不是上表中描述的那些字符,结果是未定义的。
以下是使用这些控制字符的示例:
void OnStart()
{
int n='\n'; // 换行符
int t='\t'; // 制表符
string testStr="";
StringSetCharacter(testStr,0,n);
Print(testStr);
StringSetCharacter(testStr,0,t);
Print(testStr);
}
字符常量的值
字符常量(或变量)的值是字符表中的索引。索引是整数,可以以不同的方式编写。
void OnStart()
{
int s1=0x24; // 美元符号 $
int s2=0x40; // 符号 @
Print(s1,s2);
string testStr="";
StringSetCharacter(testStr,0,s1);
Print(testStr);
StringSetCharacter(testStr,0,s2);
Print(testStr);
}
总结,MQL4的字符常量是相当灵活的,能够通过整数操作进行处理,可以根据需要转换为整数,也能够成为字符串的一部分。理解字符常量及其操作,可以为MQL4编程带来更大的便利性。