MT5 EA交易期货-盘口
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交易期货-盘口相关推荐
- MT5 EA交易期货-挂单撤单
本例子演示在买一价往上10个跳的价格上挂空单, 挂单后10秒后撤单. 与外汇交易不同,为了防止盘口愰骗,各交易所都将频繁撤单列入异常交易管理规范请注意. EA是通过调用mt5ctp.dll进行期货交易 ...
- MT5 EA交易期货-EA编程接口
为什么MT5可以交易期货? 如下图MT5 EA是通过调用mt5ctp.dll接口函数进行期货交易的.该DLL在MQL5\Libraries目录下.外汇EA只需要修改报单部分的程序即可使用在期货上面. ...
- MT5 EA交易期货-市价单开仓平仓
该例子演示了EA如何报期货市价单开仓,开仓后10秒钟报市价单平仓. 在外汇交易里没有市价单,而期货交易有市价单, 市价单报单时不指定价格,让交易所自行成交,就是做多无论多贵都买,做空无论多便宜都卖,不 ...
- MT5 EA交易期货-限价单开仓平仓
期货的订单类型和外汇不一样,国内期货交易所只有限价单和市价单. 限价单就是比如交易者报限价单4000做多螺纹钢,则交易所只会在4000或4000以下撮合该多单,所以如果能成交,成交价格只会在4000或 ...
- MT5 EA交易期货-报单部分成交
期货的交易机制会出现报单部分成交的情况. EA是通过调用mt5ctp.dll进行期货交易,该DLL提供了接口函数可以指定如何处理报单部分成交的情况, 开发者可以根据自己的策略去选择如何处理不同的报单部 ...
- MT5 EA交易期货-查询资金
本例子演示了EA如何获得期货账号下的权益.手续费.占用保证金.平仓盈亏.持仓盈亏和可用资金. EA是通过调用mt5ctp.dll进行期货交易,所以EA需要先引用mt5ctp.dll,该DLL头文件mt ...
- 聚合交易、盘口数据、逐笔数据、Ticker数据、聚合行情
研究量化交易时遇到一些概念:K线数据.盘口数据.逐笔数据.Ticker数据.聚合行情 就对K线数据很了解,其他几个大概知道是什么,具体却又搞不太清楚. 盘口数据1 盘口,指在交易过程中实时盘面数据窗口 ...
- 股票实时盘口数据获取-东方财富
新浪实时数据接口改了后,速度巨慢,限制很大. 故现在从东方财富网获取实时数据,速度还可以. 代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*-imp ...
- 使用EA交易应该注意哪些问题?
随着科技和社会的进步,人工智能技术越来越走进我们的生活中.自从AlphaGo围棋以绝对的优势战胜了世界排名第一的柯洁,是不是感觉人类真的会向电影中讲的那样最终会沦陷在自己的手中.但是,今天的话题并不是 ...
最新文章
- 【C++】C++11 STL算法(八):对未初始化内存的操作(Operations on uninitialized memory)、C库(C library)
- 计算机基础高一,2013高一计算机基础期末考试题
- 【Java】6.9 枚举类
- WWW 2020 | 信息检索中基于上下文的文本词项权重生成
- MVC2验证(自定义异常)
- axios的数据请求方式及跨域
- 如何理解 Graph Convolutional Network(GCN)?
- 射线检测(Summary)
- 操作系统swap对redis的性能的影响以及解决方案
- 有人说JavaScript是未来的编程语言?这是为什么?
- Windows Sockets网络编程读书笔记(及简单C/S实现)
- Icode编程>>>图形化编程>>>1级训练场>>>重复执行入门
- 洛谷 P1338 末日的传说
- 微步在线:半年融资8亿,综合型网络安全“新贵”诞生
- 关于Mysql 的时区问题
- 史上最全的各类奖学金、各种称号、各种职位中英文对照
- Docker安装配置教程
- 云计算中Region、AZ、POD的三角关系
- pointofix 全局快捷键_pointofix输入文字怎么调整大小
- Python爬虫:AGE动漫下载之 requests 版