MQL4数据类型转换函数详解

这一系列函数主要用于在不同数据格式之间进行转换,帮助交易者更灵活地处理各类数值与字符串。

其中,NormalizeDouble() 函数值得特别留意,它能够确保价格数值满足交易服务器的精度要求。在实际交易中,无论是德璞资本外汇平台还是其他主流平台,都不允许使用非标准的价格格式,即使价格小数位多出一位,超出服务器所规定的精度范围也是无法被接受的。

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()可以有效避免因价格格式不符导致的订单拒绝。

参数说明:

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");

StrToInteger() – 字符串转整型详解

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

参数说明:

value - 包含整数的字符串。

示例:

int var1=StrToInteger("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"); var1=StrToTime("17:35"); // 返回当前日期搭配指定的时间 var1=StrToTime("2003.8.12"); // 返回日期时间为"2003.8.12 00:00"

TimeToStr() – 日期时间转字符串详解

string TimeToStr(datetime value, void mode) 该函数将从1970年1月1日00:00:00开始经过的秒数(时间戳)转换为 "yyyy.mm.dd hh:mm" 格式的字符串。

参数说明:

value - 从1970年1月1日00: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); // 返回当前日期和时间(含秒)