本章节内容很简单,主要让大家认识一下EA编程中经常遇到的一些数据转换函数。在MQL4中,数据类型转换是指将一个数据类型的值转换为另一个数据类型的过程。这种转换可以用于执行不同类型之间的操作或将值从一种类型转换为另一种类型以满足特定的需求。下图为常见的几种用于数据类型转换的函数。
类型转换
- 函数转换:使用特定函数对数据进行转换时,是一种标准的数据转换方式,这种方式的好处是可以指定转换过程中的进度或者形态。在下列图示中,使用DoubleToStr()函数将3.14159转换为保留2位精度的字符串值,转换后的值将根据设定截断显示结果。
- 强制转换:当将一个浮点数强制转换为整数类型(int)时,小数部分将被截断,只保留整数部分。强制转换的时候需要注意,在一些复杂运算中可能会造成数据精度丢失
例如有一个 double 类型的变量 a,其值为 3.14。通过将其强制转换为 int 类型,小数部分将被丢弃,只保留整数部分:
类型转换函数应用
每个函数都有特定的使用格式,可以根据需求在编写逻辑时自由切换,在MQL4中,虽然在不转换格式时也能使用,但这样做出现黄标编译报错大概率会导致计算的结果出现偏差。所以,规范化使用数据转换函数,正确使用数据参与计算是一种良好的编程习惯。
下列为使用频率最高的一些转换函数:
1、NormalizeDouble():将浮点数四舍五入到指定的精度。
2、StringFormat(): 根据预设格式将数字转换为字符串。
3、IntegerToString(): 将整数转换为字符串。
4、DoubleToString()/DoubleToStr(): 将double类型浮点数转换为字符串。
5、StringToDouble()/StrToDouble(): 将数字的字符串转换为double类型。
6、StringToTime()/StrToTime(): 将格式为“yyyy.mm.dd hh:mi”的字符串转换为日期时间类型
7、TimeToString()/TimeToStr(): 将日期时间类型的值转换为“yyyy.mm.dd hh:mi”格式的字符串。
数学函数
数学函数也可以视为另一种数据转换方式,但数学计算函数(例如求绝对值、取整、计算平方根等)和前面提到的类型转换函数在MQL4中具有一些区别,用于参与特定的数学运算。虽然很多数学运算都可以直接使用表达式运算完成,但是通过数学函数直接返回会大大提升效率。
以下是一些常见的数学计算函数示例:
1、 MathAbs():计算绝对值。
2、MathRound():将浮点数四舍五入为最接近的整数。
3、 MathMin()/MathMax():返回两个数中的最小值/最大值。
4、MathSqrt():计算平方根。
5、MathPow():计算给定基数的指定幂次。
函数结构解读
以上函数都是MQL4官方的预定义函数,每一个函数都具有特定的传入参数,在上一期的自定义函数中我们也了解到参数传递与返回的概念,在这些函数中就是一个很好带返回参数的例子,可以直接传入指定参数然后返回你想要的值。为了方便我们认识这些函数的结构,我们以DoubleToString()为例:
当然,MQL4中的这些预定义函数有的具有多样化的使用场景,传入的参数数量也是根据实际需求而定的,比如IntegerToString()函数,这个函数在官方文档中可以传入3个参数,每个参数的位置和功能是固定的,但通常情况下我们很少用到剩余的两个参数,了解即可。