【问题标题】:For a particular pair, how to get a total volume of open Long and Short positions on The Exchage?对于特定货币对,如何在 The Exchage 上获得未平仓多头和空头头寸的总量?
【发布时间】:2017-03-11 21:31:27
【问题描述】:

MQL4 ( MT4, MT5 ) 中,如何获取当前货币对在交易所的空头头寸和多头头寸的总交易量?

【问题讨论】:

    标签: mql4 forex mql5 mt4


    【解决方案1】:

    您要求获得的东西称为 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收集的数据。

    【讨论】:

    • 您分享了很好的信息,但是接下来 iOBV 和 iMFI 是如何从中获取数据的,我们可以在 MT4 基本交易量>>交易量指标中清楚地看到交易量。如果我错了,请纠正我。
    • 这是刻度数。每次出价或要价变化时 - 都会生成一个新的报价并将其发送到您的客户 mt4。此类报价的数量称为 mt4 中的交易量。在 mt5 中 - 您可能有 tick_volume(与 mt4 相同)和实际交易量(对于某些货币对和交易所,但不适用于外汇)。 iVolume 和其他基于交易量的指标是建立在这个对每个经纪商都不同的分时数据之上
    • “Tick”这个词在不同的使用领域有几个不同的含义,是当代时代的常见陷阱。是的,MT4 报价(按柱计数,在称为“成交量”的总和寄存器 (ADD-er) 中计数)表明“只是”账面顶部价格发生了变化。这可以被理解为只是一个原始的观察,L3-DoM 中发生了什么,因为 DoM 包络的结构和内部动态仍然是不可见的。 Tick 表示有人已将 Market 交易的账面顶部容量清零,因此下一个非零 $$$ 水平(低于或高于它)变为 ToB。
    【解决方案2】:

    在 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();
             }
          }
       }
     }
    

    【讨论】:

    • 我认为您需要未平仓头寸的数量而不是实际数量,是的,我的回答对您没有帮助
    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 2021-09-21
    • 2020-10-18
    • 1970-01-01
    • 2018-03-10
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多