- 显示:
- 1508
- 等级:
- 已发布:
- 2017.01.10 08:42
- 已更新:
- 2017.07.17 17:20
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
这个跨平台库可以方便地对结构和标准数据类型执行逐字节操作。
特点:
- 结构和标准数据类型彼此间的逐字节比较 (== 和 !=) , (在 MQL 中, 省缺情况下缺少结构比较的运算符)。
- 通过名称确定结构字段的字节移位。
- 在源数据中通过字节移位读取任何标准类型的值。
- 通过字节移位将结构和标准类型写入源数据。
- 将结构和标准数据类型转换为字节数组。
一切所述均适用于 简单结构。
附有详细注释的脚本演示了函数库的能力
// MQL4&5-代码 #property strict #include <TypeToBytes.mqh> #define PRINT(A) ::Print(#A + " = " + (string)A); void OnStart( void ) { MqlTick Tick; ::SymbolInfoTick(::Symbol(), Tick); MqlTick CloneTick = Tick; // 结构操作 if (_R(Tick) == CloneTick) // 现在可以比较结构 ::Print("相等"); // 通过移位获取所需类型的结果 PRINT(_R(Tick)[(datetime)0]) // 检查 MqlTick 结构的对象中 0 移位的 'datetime' 值 - 即时报价时间 // 获得结构字段的移位 const int Offset = _OFFSET(Tick, bid); // 找到 MqlTick 对象中的供给价字段的字节移位 PRINT(Tick.bid) // 即时报价供给价的值已检查 _W(Tick, Offset, (double)1.23456); // 在找到的位移处写入 (double)1.098765 值 PRINT(Tick.bid) // 确保 Tick.bid 现在等于 1.098765 PRINT(_R(Tick)[(double)Offset]) // 打印位于偏移位置的 'double' 值 - 这次还是 Tick.bid PRINT(_R(Tick).Bytes[8]) // 在 MqlTick 结构的对象中检查移位为 8 处的字节值 PRINT(_R(Tick)[(uchar)8]) // 同样, 但使用不同的方法 PRINT(CloneTick.bid) // 检查克隆的Tick.bid 值 _W(CloneTick, 0, Tick); // 将 Tick 结构对象的值写到零移位处的 CloneTick PRINT(CloneTick.bid) // 确认 CloneTick.bid == Tick.bid // 使用标准类型操作 color Color = C'241,248,255'; PRINT(_R(Color)[(uchar)1]) // 颜色中的绿色成份 - 248 _W(Color, 2, (uchar)230); // 在移位 2 处写入 (uchar)230 值。 PRINT(Color) // 确认颜色现在是 C'241,248,230' // 混合类型的并发操作 if (_R(Tick) != Color) // 甚至可以比较结构与标准类型 ::Print("不相等"); return; }
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/16280

脚本在图表上显示月线和周线级别。

当价格上升高于 (BUY) 或下跌低于所选角度线 (SELL) 时, PricePosition 指标提供价格位置的角度点数。