EATC

 找回密码
 立即注册
查看: 1038|回复: 2

MQL4数据类型转换函数

[复制链接]

196

主题

1168

帖子

8003

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8003
发表于 2022-8-27 11:29:07 | 显示全部楼层 |阅读模式

本组函数提供从一种格式到另一种格式的数据转换功能。

特别要注意 NormalizeDouble() 函数,它确保了表示价格所需的准确性。在交易过程中,MT4不可能使用非标准价格,即使价格的小数位数多出一位,超出了交易服务器的要求的精度也是不能接受的。

  • CharToStr() – ASCII码转换成字符串
  • DoubleToStr() – 浮点型数据转换成字符串
  • NormalizeDouble() – 标准化双精度型数值
  • StrToDouble() – 字符串型数据转换成浮点型
  • StrToInteger() – 字符串数据转换成整型数值
  • StrToTime() – 字符串数据转换成日期时间
  • TimeToStr() – 日期时间型数据转换成字符串

CharToStr() – ASCII码转换成字符串string CharToStr(int char_code)

该函数将ASCII码转换成字符串。

参数:

char_code - 字符的ACSII码。

示例:

  string str="WORL" + CharToStr(44); // 44 是 'D' 的ASCII码。  // str的结果为WORLDDoubleToStr() – 浮点型数据转换成字符串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.12346000StrToDouble() – 字符串数据转换成浮点型数值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日起经过的秒数)转换为 "yyyy.mm.dd hh:mm" 形式的字符串。

参数:

value - 从1970年1月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);
回复

使用道具 举报

1865

主题

4425

帖子

1万

积分

交易元老

Rank: 8Rank: 8

积分
16489
发表于 2022-9-3 11:32:22 | 显示全部楼层
哇,谢谢你的分享,让我在自动交易的认知上更进一步
回复

使用道具 举报

494

主题

1658

帖子

4071

积分

交易元老

Rank: 8Rank: 8

积分
4071
发表于 2024-3-17 11:08:46 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

收藏本站|法律声明|Archiver|小黑屋|support@ea198.com|EATC ( 桂ICP备2022005787号 )

风险提示与免责声明:擅自从事外汇保证金交易的双方不受法律保护!社区内展示内容,均为网友自发分享,不构成投资建议,社区无法全面监控由第三方上传至社区的资源,因此不保证资源的合法性、安全性、完整性、真实性或品质等。您下载时,同意自行判断并承担所有风险。社区内的资源,仅限用于学习和研究目的,不得将用于商业或者非法用途,否则,一切后果请用户自负。社区信息来自网络,版权争议与社区无关,您下载后须在24个小时之内进行删除。如果您喜欢该内容,请支持正版。如有侵权请邮件与我们联系处理。