MQL4数据类型转换函数详解与使用示例

在MQL4编程中,数据类型转换函数扮演着重要角色,它们能够在不同格式之间进行灵活的转换,满足交易策略开发中的各种需求。

特别要注意 NormalizeDouble() 函数,它能够确保价格数据的准确性。在实际交易过程中,MT4平台无法接受非标准价格,即便价格的小数位数多出一位,超出了交易服务器所要求的精度,也是不被允许的。

CharToStr() – 将ASCII码转换为字符串

DoubleToStr() – 将浮点型数据转换为字符串

NormalizeDouble() – 标准化双精度型数值

StrToDouble() – 将字符串型数据转换为浮点型

StrToInteger() – 将字符串数据转换为整型数值

StrToTime() – 将字符串数据转换为日期时间

TimeToStr() – 将日期时间型数据转换为字符串

CharToStr() – 将ASCII码转换为字符串

函数原型:string CharToStr(int char_code),其功能是将给定的ASCII码转换成对应的字符串。

参数说明:

char_code - 需要转换的字符ASCII码。 示例:

string str="WORL" + CharToStr(44); // 44是字母'D'的ASCII码,因此str的结果为"WORLD"。

DoubleToStr() – 将浮点型数据转换为字符串

函数原型:string DoubleToStr(double value, int digits),该函数用于将双精度浮点型数值转换为指定精度(即小数点后位数)的字符串。

参数说明:

value - 需要转换的数值。 digits - 精度要求,即小数点后的位数(0-8)。 示例:

string value=DoubleToStr(1.28473418, 5); // 返回结果为"1.28473"。

NormalizeDouble() – 标准化双精度型数值

函数原型:double NormalizeDouble(double value, int digits),该函数将浮点型数值四舍五入到指定的精度,并返回标准化后的双精度型数值。

在计算止损值、盈利值、挂单交易以及即时交易的价格时,都要求将价格进行标准化处理,即小数点位数不能超过服务器所要求的精度。这个精度要求可以通过预定义的 digits 变量获得。

注意:NormalizeDouble() 函数在确保价格准确性方面十分关键。在交易过程中,MT4平台无法使用非标准价格,如果价格的小数位数多出一位,超出了交易服务器的精度要求,就会导致交易失败。

参数说明:

value - 需要转换的数值。 digits - 精度要求,即小数点后的位数(0-8)。 示例:

double var1=0.123456789; Print(DoubleToStr(NormalizeDouble(var1,5),8)); // 输出的结果为: 0.12346000

StrToDouble() – 将字符串数据转换为浮点型数值

函数原型:double StrToDouble(string value),该函数将数值形式的字符串转换为双精度型数值。

参数说明:

value - 数字形式的字符串。 示例:

double var=StrToDouble("103.2812"); // 返回浮点值103.2812。

StrToInteger() – 将字符串数据转换为整型数值

函数原型:int StrToInteger(string value),该函数将数值形式的字符串转换为整型数值。

参数说明:

value - 数字形式的字符串。 示例:

int var1=StrToInteger("1024"); // 返回整型值1024。

StrToTime() – 将字符串数据转换为日期时间

函数原型:datetime StrToTime(string value),该函数将数值形式的字符串转换为日期时间数据,输入格式为 "yyyy.mm.dd hh:mm"。

参数说明:

value - "yyyy.mm.dd hh:mm" 形式的字符串。 示例:

datetime var1; var1=StrToTime("2003.8.12 17:35"); // 返回2003年8月12日17:35。 var1=StrToTime("17:35"); // 返回当前日期,时间为指定的17:35。 var1=StrToTime("2003.8.12"); // 返回日期时间为"2003.8.12 00:00"。

TimeToStr() – 将日期时间型数据转换为字符串

函数原型:string TimeToStr(datetime value, void mode),该函数将日期时间型数据(即从1970年1月1日起经过的秒数)转换为 "yyyy.mm.dd hh:mm" 形式的字符串。

参数说明:

value - 从1970年1月1日00:00所经过的秒数。 mode - 数据输出形式,可以是以下一个或多个常量的组合:TIME_DATE 结果格式为 "yyyy.mm.dd",TIME_MINUTES 结果格式为"hh:mm",TIME_SECONDS 结果格式为"hh:mm:ss"。 示例:

string var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); // 返回类似"2023.10.05 14:30:25"的字符串。