MT5 EA交易期货-查询资金
本例子演示了EA如何获得期货账号下的权益、手续费、占用保证金、平仓盈亏、持仓盈亏和可用资金。
EA是通过调用mt5ctp.dll进行期货交易,所以EA需要先引用mt5ctp.dll,该DLL头文件mt5ctp.mqh在\MQL5\Include目录下。
#property copyright "www.wewin28.com 1145412@qq.com"#property link "http://www.wewin28.com"
#property version "1.1"
#include <mt5ctp.mqh> //引用MT5CTP头文件
MT5通过mt5ctp.dll得到交易所的各种回调(如报单回调,成交回调,撤单回调,错误回调,仓位回调,资金回调),之后会把这些回调作为MQL图表事件(ChartEvent)发送给当前打开的全部图表,EA 则通过MQL图表事件响应函数OnChartEvent得到这些回调。
MT5期货发送的MQL图表事件ID都是3000,EA需要在OnChartEvent函数中只处理ID是3000的事件。
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{if(id==3000) //只处理MT5 CTP的chart event process MT5 CTP event only{
EA通过OnChartEvent函数的sparam参数获得MQL图表事件中的资金回调。
资金回调是一个字符串,格式如下:
OnRspQryTradingAccount, 期货公司编码, 期货交易账号, 上次结算准备金, 占用保证金, 手续费, 平仓盈亏, 浮动盈亏, 动态权益, 可用资金,e
把sparam参数对应的字符串按逗号拆分后保存到字符数组chartEvents[],处理后chartEvents[0]就等于"OnRspQryTradingAccount"。
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{if(id==3000) //只处理MT5 CTP的chart event process MT5 CTP event only{ //printf(sparam);string chartEvents[]; int n=StringSplit(sparam,splitCommma,chartEvents); //CTP成交回调中的各个数据用逗号分隔 callback string split by commaif(n>0){
因为在OnChartEvent函数中ID是3000的事件包括了各种的交易所回调(如报单回调,成交回调,撤单回调,错误回调,仓位回调,资金回调), 所以EA需要先根据chartEvents[0]=OnRspQryTradingAccount找出其中的资金回调,
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{ if(id==3000) //只处理MT5 CTP的事件 process MT5 CTP event only{ string chartEvents[]; int n=StringSplit(sparam,splitCommma,chartEvents); //CTP查询仓位回调中的各个数据用逗号分隔if(n>0) {string eventType=chartEvents[0]; //查询账号资金回调 query account asset callbackif(eventType=="OnRspQryTradingAccount") //CTP查询资金回调 query account callback{
然后遍历chartEvents数组,得到资金回调中的各项数据:
chartEvents[1]就是期货公司编码,
chartEvents[2]就是期货交易账号,
chartEvents[3]就是上次结算准备金,
chartEvents[4]就是占用保证金,
chartEvents[5]就是手续费,
chartEvents[6]就是平仓盈亏,
chartEvents[7]就是浮动盈亏,
chartEvents[8]就是动态权益,
chartEvents[9]就是可用资金,
最后把资金回调的各项数据按指定的格式打印出来。
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{ if(id==3000) //只处理MT5 CTP的事件 process MT5 CTP event only{ string chartEvents[]; int n=StringSplit(sparam,splitCommma,chartEvents); //CTP查询仓位回调中的各个数据用逗号分隔if(n>0) {string eventType=chartEvents[0]; //查询账号资金回调 query account asset callbackif(eventType=="OnRspQryTradingAccount") //CTP查询资金回调 query account callback{//0OnRspQryTradingAccount,1期货公司编码,2期货交易账号,3上次结算准备金,4占用保证金,5手续费,6平仓盈亏,7浮动盈亏,8动态权益,9可用资金,e//printf(sparam);string brokerId=chartEvents[1]; //经纪公司代码 brokerIdstring accountId=chartEvents[2]; //投资者帐号 accountIddouble prevBalance=(double)chartEvents[3]; //上次结算准备金 previous balancedouble currentMargin=(double)chartEvents[4]; //占用保证金 margindouble commission=(double)chartEvents[5]; //手续费 commissiondouble closeProfit=(double)chartEvents[6]; //平仓盈亏 close profitdouble positionProfit=(double)chartEvents[7]; //持仓盈亏 position profitdouble equity =(double)chartEvents[8]; //动态权益 equitydouble available=(double)chartEvents[9]; //可用资金 available printf("上次结算准备金 preBalance %.2f 手续费 commission %.2f 占用保证金 currentMargin %.2f 平仓盈亏 closeProfit %.2f 持仓盈亏 positionProfit %.2f 动态权益 equity %.2f 可用资金 available %.2f ", prevBalance, commission, currentMargin, closeProfit, positionProfit, equity , available);}}}
}
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交易期货-盘口
MT5期货里提供了上期所和能源中心的五档盘口(卖5,卖4,卖3,卖2,卖1,买1,买2,买3,买4,买5),中金所.大商所和郑商所的一档盘口(卖1,买1),这样我们就可以开发基于盘口的策略了. 下面的 ...
- 量化交易期货ctp使用说明(企业版,穿透式监管)(值得收藏)
1.代码说明 本文章中的期货ctp代码来自分布式高频量化交易系统 联系作者,获取源码:高频量化交易系统的学习交流群 - 简书 (jianshu.com) 2.期货ctp介绍, 2.1 期货账户 要连接 ...
- python网格交易_网格交易(期货)
网格交易(期货) 分享 阅读 30668 更新 2020-12-03 15:44:39 网格交易法(期货) 1. 原理 什么是网格交易法? 网格交易法是一种利用行情震荡进行获利的策略.在标的价格不断震 ...
- 用 MQL5 向导创建您自己的 EA 交易
编程语言知识不再是创建自动交易的一个先决条件.以前,缺乏编程技能是实现自己的交易策略的不可逾越的障碍,但是随着 MQL5 向导的出现,这种情况迅速改变了.交易新手能够不再因为缺乏编程经验而担心 - 使 ...
最新文章
- 百万美元技术大奖,雷军颁给了秒充和隐私保护技术团队
- oracle临时表空间大小查询,查看oracle 系统临时表空间、undo表空间、SGA和PGA大小...
- python二维数组操作_Python二维数组应用与操作
- ABP入门系列(11)——编写单元测试
- 主站系统服务器选择,配电网自动化主站系统的结构_功能及操作系统的选择.doc...
- flutter GridView 九宫格
- EEPlat 主子表和对象引用配置实例
- 【C++ Primer】第十三章 类继承
- MYSQL select ....outfile.....from.....
- 使用Mac电脑内置的屏幕共享功能,进行远程桌面管理
- 简道云-第5章-流程
- oppo android root工具箱,oppo R11(全网通 安卓8.1)手机完美获取root教程,最强root工具,亲测可用!...
- 内网穿透神器frp之进阶配置——stcp及p2p模式
- 开涛 SpringMVC
- 【PostgreSQL-15的 \watch命令】
- 【JS】1162- 90% 的前端都会使用 ES6 来简化代码,你都用过哪些?
- Cesium本地加载地形(dem高程)数据
- Video标签播放视频(动态视频URL)
- 人民日报探店联想安定门店,联想智慧零售变革现成效
- ACM-ICPC 2018 南京赛区网络预赛(ABCDEFGHIJKL所有题题解大全)