CDouble 和 CDoubleVector - MetaTrader 5 库
一个库,用于 MQL 开发中使用的常见舍入方法、类型 (double) 的原始包装类以及 CDouble 对象的向量。 MQL5 和 MQL4 兼容!
版本1.02:(2018.02.18)
CDouble 类将基本类型 double 的值包装在对象中。此外,该类还提供几种方法和静态方法四舍五入双打以及 double 类型的数组/集合。
班级双倍:民众对象
#包括<双.mqh>
继承层次结构
虚拟方法实施/覆盖来自 CObject 类:类型,加载,节省,比较。
CDouble 类型的对象包含五个数据字段:
细绳
m_符号
双倍的
m_值
乌查尔
m_step
乌查尔
m_位
ENUM_PRECISION
模式
在我们进一步了解文档之前,这里有一个包装类的实际示例:
MQTick打钩; 符号信息勾选(_象征,打钩); CDouble 价格 = tick.ask -0.0087263487676283476, sl = 价格 -500*_观点, tp = 价格 +500*_观点, 手数=5.25/3.78789; Mql交易请求r={0}; r.符号=_象征; r.价格 = 价格.AsRoundedTick(); r.sl = sl.AsRoundedTick(); r.tp = tp.AsRoundedTick(); r.volume=lots.AsRoundedLots();...
使用静态库方法的另一个示例:
MQTick打钩; 符号信息勾选(_象征,打钩); Mql交易请求r={0}; r.符号=_象征; r.价格=tick.ask -0.0087263487676283476, r.sl = 价格 -500*_观点, r.tp = 价格 +500*_观点, r.体积=5.25/3.78789; ... CDouble::RoundTradeRequest(r); //自动将价格字段舍入为刻度大小 //以及交易量到手数的步骤
静态方法总结
注意:无需了解 OOP 或使用包装类实例即可使用此库。我们所要做的就是使用 CDouble 作用域解析来调用静态函数。语法如下:
类型变量名 = CDouble::Method(args);
| 修饰符和类型 | 方法 | 描述 | ||||||
|---|---|---|---|---|---|---|---|---|
静态布尔值 |
是否相等(双数1, 双数2, 双步); |
比较两个双精度数,并通过从第一个数字减去第二个数字、将总和四舍五入到“步长”并与 0 进行比较来返回布尔值。 | ||||||
静态布尔值 |
是否相等(双数1, 双数2, 整数数字); |
比较两个双精度数,并通过从第一个数字减去第二个数字、将总和四舍五入到“数字”并与 0 进行比较来返回 an。 | ||||||
静态整型 |
比较(双数1, 双数2, 双步) |
比较两个双精度数并返回一个整数:
|
||||||
静态双 |
回合到步骤(常量双数, 双步) |
返回最接近步精度的舍入值(例如 0.0025)。 | ||||||
静态双 |
舍入到数字(常量双数, 整数数字) |
返回四舍五入到最接近数字的值(与规范化双精度)。 | ||||||
静态双 |
回合到升压(常量双数, 双步) |
返回向上舍入到步精度的值。 | ||||||
静态双 |
舍入降级(常量双数, 双步) |
返回向下舍入到步精度的值。 | ||||||
静态双 |
圆形刻度(常量双数, 字符串符号=NULL) |
返回最接近的四舍五入值刻度大小当前符号 (symbol=NULL) 或指定符号象征范围。 | ||||||
静态双 |
回合制手数(常量双数, 字符串符号=NULL, 布尔always_return_valid = true) |
返回向下舍入到最接近的值批次步骤当前符号 (symbol=NULL) 或指定符号象征范围。 always_return_valid == true:将始终返回有效手数(min_lots <= return_value <= max_lots) 静态无效 (MQL5) |
回合交易请求(MqlTradeRequest 和请求) |
通过请求中标识的代码修改价格、止损、止盈和成交量字段。 将价格、SL 和 TP 舍入为最接近的价格变动单位。 将交易量向下舍入到最近的手数步长。 静态无效 |
圆数组到步 |
圆数组到步 |
获取数字(双浮点数) |
返回双精度型中直到尾随零为止的位数。 (例如 0.0002500...将返回 5 位数字)。 |
静态双 |
获取点(整数) |
返回指定数字的双精度值。 (例如 3 将返回 0.001)。 | ||||||
静态字符串 |
转字符串 |
注意:没有必要显式调用构造函数,因为参数已在调用方中初始化。也没有必要指定精度方法,因为有一些方法可以根据方法调用返回舍入值。 枚举精度: 双倍(const Cdouble &other) |
复制构造函数:将其他对象的所有私有字段复制到此对象。 |
示例:
C双数; C双倍出价(PRECISION_TICK_SIZE,_象征); C双重要价(买价) CDouble Ask2 = 出价; C双倍批次(PRECISION_LOT_STEP,_象征);
作业摘要 - 重载的作业运算符
空白
放(常量双精度值)
空白
放(const Cdouble &other)
空白
笔记:= 赋值运算符可以在与声明相同的行中调用。
C双标; bid.Set(tick.bid); CDouble Ask = tick.ask; C双倍圆周率 =3.14; C双因子 =2; pi*=因子;打印(pi.ToString());//6.28
重载算术运算符总结
双倍的
笔记:仅有的一每个语句都可以使用算术运算符。
重载运算符算术的语法:
type_double_result <-- CDouble_object <--操作员<--双倍的 //CDouble对象总是位于操作符的左侧type_double_result <-- CDouble_object1 <--操作员<-- CDouble_object2//使用两个 CDouble 对象时顺序并不重要。
示例:
C双foo =3.14; C双杠 =10; CDouble foobar = 酒吧 + foo; //13.14CDouble err = bar + foo + foobar;//错误-非法操作使用 双倍的 变量= 酒吧 / 富;
重载比较运算符总结
布尔值
可以接受 double 或 CDouble 类型的对象作为参数。返回值比较的布尔值。
注意:这是使用
C双foo =3.14, 条 =3.139999999999999999999; 打印(富==酒吧);//真的 打印(foo <= 酒吧);//真的 打印(foo > 酒吧);//错误的
实例方法总结
精度控制(默认):digits = 8;步骤 = 1e-08
空白
精确模式(const ENUM_PRECISION 模式)
设置舍入计算和 ToString 的默认模式。覆盖现有的步长和数字设置。注:也可以在构造函数中设置。
枚举精度:
ENUM_PRECISION
精确模式()
空白
步(常量双步或点)
双倍的
步()
空白
数字(常量整型数字)
整数
数字()
双倍的
AsRawDouble()
双倍的
圆形()
返回最接近的指定步长的舍入值。默认 = 1e-08。
当 PRECISION_TICK_SIZE 时,步长被锁定为刻度大小。
当 PRECISION_LOT_STEP 时,步骤被锁定到批次步骤。
双倍的
围捕()
双倍的
向下取整()
双倍的
圆角刻度()
双倍的
圆形地块(布尔always_return_valid = true)
整数
至整数()
长的
土龙()
细绳
字符串精度()
细绳
转字符串()
细绳
象征()
细绳
象征(常量字符串符号)
示例:
C双 pi2 =3.14159265359; // 获取值... 双倍的raw_double = pi2.AsRawDouble(); 双倍的round_double_to_step = pi2.AsRounded(); 双倍的tick_size_double = pi2.AsRoundedTick(); 双倍的lot_step_double = pi2.AsRoundedLots(); 双倍的rounded_up = pi2.AsRoundedUp(); 双倍的rounded_down = pi2.AsRoundedDown(); 整数 double_to_int = pi2.ToInt(); 长的 double_to_long = pi2.ToLong(); 细绳precision_str = pi2.ToStringPrecision(); π2 =3.140000000009; pi2。数字(8); 细绳truncated_str = pi2.ToString();
虚拟方法总结
从 CObject 重写的方法:
虚拟整数
比较(常量 CObject *节点, 常量整型模式=0)
虚拟整数
类型()
虚拟布尔
节省(常量 int 文件句柄)
虚拟布尔
加载(常量 int 文件句柄)
有关示例,请参阅下面的 CDoubleVector。
CDoubleVector 类是专门用于 CDouble 动态实例的对象指针集合。
班级CD双向量:民众CArray对象
#包括<双.mqh>
继承层次结构
虚拟方法实施/覆盖来自 CArrayObj 类:创建元素。
实例方法总结
**看CArray对象对于继承的公共方法。
C双*
操作员[] (常量整型索引)
布尔值
添加(常量双精度值)
布尔值
分配双数组(常量双精度数组[])
布尔值
复制输出(双&arr[])
布尔值
复制输出(CArrayDouble &arr)
虚拟布尔
节省(常量 int 文件句柄)
虚拟布尔
加载(常量 int 文件句柄)
示例:
附件下载
📎 doubletests.mq5 (5.47 KB)
📎 double.mqh (28.61 KB)
Source: MQL5 #19727
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
