- 显示:
- 1238
- 等级:
- 已发布:
- 2018.01.29 09:25
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
交易中的一个重要参数是当前价格的相关性。它取决于很多因素,其中最流行的是终端和交易服务器之间的网络 ping 值。
不过,另一个参数经常被忽略: 所谓的 "内部终端 ping",这是终端(平台)内报价的附加延迟。即使网络 ping 为零,这种滞后也可能很重要。
指标显示该参数的变化动态,计算如下:
#include <TypeToBytes.mqh> // https://www.mql5.com/en/code/16280 // 获得新逐笔报价附加内部报价滞后值(以毫秒为单位) bool SymbolInfoTick( const string &Symb, MqlTick &Tick, double &Ping ) { static const bool IsTester = (MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION)); static MqlTick PrevTick = {0}; static ulong PrevTime = 0; const ulong NowTime = IsTester ? 0 : GetMicrosecondCount(); const bool Res = SymbolInfoTick(Symb, Tick); if ((!IsTester) && Res) { if (_R(Tick) != PrevTick) { Ping = PrevTime ? MathAbs(Tick.time_msc - PrevTick.time_msc - (NowTime - PrevTime) / 1e3) : 0; PrevTime = NowTime; PrevTick = Tick; } else Ping = 0; } return(Res); }
上面的屏幕截图显示,计算的值并不小(干净的终端只有一个图表),在 MetaTrader 5 上进行交易以及某些类型的分析中追求零 ping 可能会受到欺骗。
功能
- 报价的时间差以毫秒计算;
- 指标消耗的最小终端计算资源;
- 当指标复位时(在更改时间帧,品种等之后),累积的数据将丢失(没有数据库维护);
- 删除指标后,其注释留在图表上;
- 无法为 MetaTrader 4 创建类似的指标,因为无法提供具有毫秒精度的逐笔报价数据;
- SymbolInfoTick 指标需要一些 "热身" 才能形成首个 计算事件;
- 指标可以用作任何数值的实时可视化模板,您只需要更换一行即可;
-
指标计算需要一个函数库,当计算滞后时与MqlTick 结构比较:
#include <TypeToBytes.mqh> // https://www.mql5.com/en/code/16280
-
指标有两种显示类型,具体取决于以下行:
#define HISTOGRAM_VIEW // 注释此行以便将指标视图从直方图更改为蜡烛条
当前指标显示与 Calculate 事件相关的价格滞后(ping )。实际上,有很多因素会对 ping 产生重大影响,因此在交易系统和分析中使用任何指标的适当性似乎都是可疑的。当然, NewTick 事件 对负面影响较不敏感, 但是它的 ping 也是相当可观的(如果在智能交易系统中进行衡量的话),有时可以将某些重要的 平台速度特性 降至最低。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/19422