MT5期货里提供了上期所和能源中心的五档盘口(卖5,卖4,卖3,卖2,卖1,买1,买2,买3,买4,买5),中金所、大商所和郑商所的一档盘口(卖1,买1),这样我们就可以开发基于盘口的策略了

下面的例子源代码讲解了如何把期货盘口显示在图表上, 即是“期货盘口指标MarketDepth”指标的源代码。

int OnInit(){
//--- indicator buffers mappingchartSymbol=Symbol();string isin=SymbolInfoString(Symbol(), SYMBOL_ISIN);if(StringLen(isin)>0){chartSymbol=isin;}bool isMarketBookAdd=MarketBookAdd(chartSymbol);printf("MarketBookAdd %s", chartSymbol);if(isMarketBookAdd==false){printf("MarketBookAdd error %d", GetLastError());}//setOrderBook(Symbol());
//---return(INIT_SUCCEEDED);}

通过MQL的MarketBookAdd函数,将期货合约传入该函数, 就可以订阅和接收到该期货合约的盘口。

void OnBookEvent(const string &symbol)
{if(symbol==Symbol()){ MqlBookInfo book[];bool isGetBook=MarketBookGet(symbol, book);if(isGetBook==true){            //上期所和能源中心是五档盘口行情 SHFE and INE provide five levels market depthif(ArraySize(book)==10){for(int i=0;i<ArraySize(book);i++){double price=book[i].price; double volume=book[i].volume_real;string type="";color priceColor=clrLimeGreen;color volColor=clrOrange;if(i<5){priceColor=clrGreen;}else{priceColor=clrFireBrick;}int fontSize2=fontSize;if(i==4){priceColor=clrLawnGreen;fontSize2=fontSize+5;   volColor=clrYellow;}if(i==5){priceColor=clrRed;fontSize2=fontSize+5;   volColor=clrYellow;}              //setText(prefix+"type"+(string)i, type, priceColor, y, x+40*i, fontSize2);setText(prefix+"price"+(string)i, DoubleToString(price, Digits()), priceColor, y-gap, x+40*i, fontSize2);setText(prefix+"volume"+(string)i, (string)(int)volume, volColor, y-120, x+40*i, fontSize2);   }                       }else     //中金所、大商所、郑商所是一档盘口行情 CFFEX,DCE and CZCE are one level market depth{setText(prefix+"price0", DoubleToString(book[0].price, Digits()), clrLawnGreen, y-gap, x, fontSize);setText(prefix+"volume0", (string)(int)book[0].volume, clrYellow, y-120, x, fontSize);   setText(prefix+"price1", DoubleToString(book[1].price, Digits()), clrRed, y-gap, x+40, fontSize);setText(prefix+"volume1", (string)(int)book[1].volume, clrYellow, y-120, x+40, fontSize); }}else{printf("Failed load market book price. Reason: %d", GetLastError());return;}}
}

当合约的盘口发生变化的时候,MQL的OnBookEvent事件函数会被触发。

当OnBookEvent事件函数触发的时候,先定义一个MQL MqlBookInfo结构体数组book[],通过MQL的MarketBookGet得到盘口并保存到book[]。

MT5期货里上期所和能源中心的盘口是五档,中金所、大商所和郑商所的盘口是一档。所以如果book[]的数组长度是10的话, 就显示五档行情,如果book[]的数组长度是2的话,就显示一档行情。

通过MqlBookInfo结构体book[]的price属性获得各档盘口对应的价格, 通过MqlBookInfo结构体的volume属性获得各档盘口对应的手数。

最后记得在EA退出的时候调用MQL的MarketBookRelease函数取消订阅该合约的盘口。

void OnDeinit(const int reason){
//---  if(!MarketBookRelease(chartSymbol)){ printf("%s: MarketBookRelease(%s) returned false! GetLastError()=%d",chartSymbol,GetLastError()); }   for(int i=ObjectsTotal(0, -1, -1)-1; i>=0; i--){        string name=ObjectName(0, i, -1, -1);if(StringFind(name, prefix)>-1){           ObjectDelete(0,name);}}   ChartRedraw();}

MT5 EA交易期货-盘口相关推荐

  1. MT5 EA交易期货-挂单撤单

    本例子演示在买一价往上10个跳的价格上挂空单, 挂单后10秒后撤单. 与外汇交易不同,为了防止盘口愰骗,各交易所都将频繁撤单列入异常交易管理规范请注意. EA是通过调用mt5ctp.dll进行期货交易 ...

  2. MT5 EA交易期货-EA编程接口

    为什么MT5可以交易期货? 如下图MT5 EA是通过调用mt5ctp.dll接口函数进行期货交易的.该DLL在MQL5\Libraries目录下.外汇EA只需要修改报单部分的程序即可使用在期货上面. ...

  3. MT5 EA交易期货-市价单开仓平仓

    该例子演示了EA如何报期货市价单开仓,开仓后10秒钟报市价单平仓. 在外汇交易里没有市价单,而期货交易有市价单, 市价单报单时不指定价格,让交易所自行成交,就是做多无论多贵都买,做空无论多便宜都卖,不 ...

  4. MT5 EA交易期货-限价单开仓平仓

    期货的订单类型和外汇不一样,国内期货交易所只有限价单和市价单. 限价单就是比如交易者报限价单4000做多螺纹钢,则交易所只会在4000或4000以下撮合该多单,所以如果能成交,成交价格只会在4000或 ...

  5. MT5 EA交易期货-报单部分成交

    期货的交易机制会出现报单部分成交的情况. EA是通过调用mt5ctp.dll进行期货交易,该DLL提供了接口函数可以指定如何处理报单部分成交的情况, 开发者可以根据自己的策略去选择如何处理不同的报单部 ...

  6. MT5 EA交易期货-查询资金

    本例子演示了EA如何获得期货账号下的权益.手续费.占用保证金.平仓盈亏.持仓盈亏和可用资金. EA是通过调用mt5ctp.dll进行期货交易,所以EA需要先引用mt5ctp.dll,该DLL头文件mt ...

  7. 聚合交易、盘口数据、逐笔数据、Ticker数据、聚合行情

    研究量化交易时遇到一些概念:K线数据.盘口数据.逐笔数据.Ticker数据.聚合行情 就对K线数据很了解,其他几个大概知道是什么,具体却又搞不太清楚. 盘口数据1 盘口,指在交易过程中实时盘面数据窗口 ...

  8. 股票实时盘口数据获取-东方财富

    新浪实时数据接口改了后,速度巨慢,限制很大. 故现在从东方财富网获取实时数据,速度还可以. 代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*-imp ...

  9. 使用EA交易应该注意哪些问题?

    随着科技和社会的进步,人工智能技术越来越走进我们的生活中.自从AlphaGo围棋以绝对的优势战胜了世界排名第一的柯洁,是不是感觉人类真的会向电影中讲的那样最终会沦陷在自己的手中.但是,今天的话题并不是 ...

最新文章

  1. 【C++】C++11 STL算法(八):对未初始化内存的操作(Operations on uninitialized memory)、C库(C library)
  2. 计算机基础高一,2013高一计算机基础期末考试题
  3. 【Java】6.9 枚举类
  4. WWW 2020 | 信息检索中基于上下文的文本词项权重生成
  5. MVC2验证(自定义异常)
  6. axios的数据请求方式及跨域
  7. 如何理解 Graph Convolutional Network(GCN)?
  8. 射线检测(Summary)
  9. 操作系统swap对redis的性能的影响以及解决方案
  10. 有人说JavaScript是未来的编程语言?这是为什么?
  11. Windows Sockets网络编程读书笔记(及简单C/S实现)
  12. Icode编程>>>图形化编程>>>1级训练场>>>重复执行入门
  13. 洛谷 P1338 末日的传说
  14. 微步在线:半年融资8亿,综合型网络安全“新贵”诞生
  15. 关于Mysql 的时区问题
  16. 史上最全的各类奖学金、各种称号、各种职位中英文对照
  17. Docker安装配置教程
  18. 云计算中Region、AZ、POD的三角关系
  19. pointofix 全局快捷键_pointofix输入文字怎么调整大小
  20. Python爬虫:AGE动漫下载之 requests 版

热门文章

  1. vivo会使用鸿蒙系统吗,以后oppo或者vivo以及小米有没有机会用使用华为鸿蒙系统...
  2. Excel表格数据转为json格式数据
  3. 微信官方分享demo 成功运行并分享
  4. 谷歌气球 simplekml 入门《二》
  5. 一些常用的hive sql函数
  6. windows软连接简单建立删除
  7. 电信路由器获取超级管理员的方法
  8. PHP输出缓冲(Output Buffering)
  9. Java 静态方法与非静态方法的调用
  10. css3五角星绘制,如何用CSS3画五角星