本例子演示了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交易期货-查询资金相关推荐

  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交易期货-盘口

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

  7. 量化交易期货ctp使用说明(企业版,穿透式监管)(值得收藏)

    1.代码说明 本文章中的期货ctp代码来自分布式高频量化交易系统 联系作者,获取源码:高频量化交易系统的学习交流群 - 简书 (jianshu.com) 2.期货ctp介绍, 2.1 期货账户 要连接 ...

  8. python网格交易_网格交易(期货)

    网格交易(期货) 分享 阅读 30668 更新 2020-12-03 15:44:39 网格交易法(期货) 1. 原理 什么是网格交易法? 网格交易法是一种利用行情震荡进行获利的策略.在标的价格不断震 ...

  9. 用 MQL5 向导创建您自己的 EA 交易

    编程语言知识不再是创建自动交易的一个先决条件.以前,缺乏编程技能是实现自己的交易策略的不可逾越的障碍,但是随着 MQL5 向导的出现,这种情况迅速改变了.交易新手能够不再因为缺乏编程经验而担心 - 使 ...

最新文章

  1. 百万美元技术大奖,雷军颁给了秒充和隐私保护技术团队
  2. oracle临时表空间大小查询,查看oracle 系统临时表空间、undo表空间、SGA和PGA大小...
  3. python二维数组操作_Python二维数组应用与操作
  4. ABP入门系列(11)——编写单元测试
  5. 主站系统服务器选择,配电网自动化主站系统的结构_功能及操作系统的选择.doc...
  6. flutter GridView 九宫格
  7. EEPlat 主子表和对象引用配置实例
  8. 【C++ Primer】第十三章 类继承
  9. MYSQL select ....outfile.....from.....
  10. 使用Mac电脑内置的屏幕共享功能,进行远程桌面管理
  11. 简道云-第5章-流程
  12. oppo android root工具箱,oppo R11(全网通 安卓8.1)手机完美获取root教程,最强root工具,亲测可用!...
  13. 内网穿透神器frp之进阶配置——stcp及p2p模式
  14. 开涛 SpringMVC
  15. 【PostgreSQL-15的 \watch命令】
  16. 【JS】1162- 90% 的前端都会使用 ES6 来简化代码,你都用过哪些?
  17. Cesium本地加载地形(dem高程)数据
  18. Video标签播放视频(动态视频URL)
  19. 人民日报探店联想安定门店,联想智慧零售变革现成效
  20. ACM-ICPC 2018 南京赛区网络预赛(ABCDEFGHIJKL所有题题解大全)

热门文章

  1. 天池机器训练营笔记04
  2. 红米5PLUS安装xposed
  3. linux命令行下清空回收站
  4. 听说满满的负能量的语句
  5. 怎么给iPhone手机上的待办事项软件加上密码锁
  6. oracle 修改序列 next number,oracle序列详解
  7. Java的double向上/下取整
  8. linux 的软连接创建删除
  9. TS之类的继承与super
  10. 防火墙、CDN、WAF等防御CC攻击的几种方式