【发布时间】:2017-03-11 21:31:27
【问题描述】:
在 MQL4 ( MT4, MT5 ) 中,如何获取当前货币对在交易所的空头头寸和多头头寸的总交易量?
【问题讨论】:
在 MQL4 ( MT4, MT5 ) 中,如何获取当前货币对在交易所的空头头寸和多头头寸的总交易量?
【问题讨论】:
您要求获得的东西称为 Level-3 Depth-of-Market,[L3-DoM]。
事实 1: 没有一种通用的方法来聚合 Global DoM,可能只期望每个 Exchange(本地、做市、岛屿)本地 DoM ,所以不要再看到任何接近全球平均外汇交易量数量级的东西了,公布为大约 5,400,000,000,000.00 美元
事实 2: 即使是本地做市机构(FX Trading Venue、LP 提供商、FX Broker 等)也不希望自动收到 Local DoM,因为并非所有机构都在某些公共服务供应的基础上聚合并提供 Local DoM。
事实 3: 鉴于某些流接口可以为交易者提供 DoM 上的更改流,人们应该期望使用高频处理工具来处理 不仅仅是小/大十(hundreds/thousands even tens of thousands in peak hours alike NFP events, etc.)每毫秒发生的变化。鉴于专业交易场所与 Prime 银行、机构 LP(可能还有一些 DarkPool LP)有足够的对等关系,主要交易场所共同执行一个本地 DoM,范围超过 50,000,000.00 美元长边和短边。
事实 4: MetaTrader 终端 4 的一些较旧更新启动了一个附加面板,类似地称为 DoM,但没有编程方式与此类附加面板/数据进行通信。 More details on this part of history are here.
事实 5: 由 Daniel 以他最公平的信念提出的提案本身并不提供 DoM,而仅显示您(交易者)自己的库存位置,放在桌子上,不是真正的 DoM 环境。
如果对更多细节感兴趣,do not hesitate to read more posts on DoM 和其他一些 animated latency graphs 在最高账面价格生命周期中能够将外汇经纪商的时间安排与 LMAX、Currenex 或其他 LP 提供商进行比较。 NFP公告期间/期间L3-DoM变化速度的详细LDG/GDF统计,请欣赏a Table aggregates from FIX-Protocol Stream Processing, presented in this post收集的数据。
【讨论】:
在 mt5 中 - 取决于您的终端,如果您选择非对冲,则每个交易品种的总未平仓头寸。
在 mt4 中 - 如果您对某个特定 EA 的交易感兴趣,请使用以下代码 - 然后检查符号和幻数:
int buys = 0, sells = 0; //number of tickets
double volBuys = 0, volSells = 0; //total volumes
for (int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SEL_BY_POS)){
if(OrderSymbol()==Symbol()){
if(OrderType()==OP_BUY){
buys++;
volBuys += OrderLots();
}else if(OrderType()==OP_SELL){
sells++;
volSells += OrderLots();
}
}
}
}
【讨论】: