基于MT4平台通过CTP操作期货(一) -- 行情

通过MT4平台来由ctp接口操作期货,首先需要处理好商品和行情

1.期货商品品种

由于期货商品代号会随着时间变化,且商品品种较多,手动维护商品的话太繁琐。比较简单的处理方式
是做一个服务端的插件,在插件的启动事件

int APIENTRY MtSrvStartup(CServerInterface *server)

去检查并新增商品代号
这里主要用到了MT4接口的这两个个方法,取商品信息和新增商品

int         __stdcall SymbolsGet(LPCSTR symbol,ConSymbol *security);
int         __stdcall SymbolsAdd(ConSymbol *sec);

期货的品种种类是相对固定的,变化的只是月份,所以可以考虑常量定义相关种类,也可以考虑直接从四大期货的网站去爬。
我是直接用常量定义种类,然后根据当前月份计算目前的期货品种。

SymbolDefine Defines[SYMBOL_DEF_COUNT] = {//中国金融期货交易所 CFFEX{ "沪深300", "IF", 1, 1, {0}, 0},//当月、下月及随后两个季月(如当前为3月,则为4","5","6","9}},{ "上证50", "IH", 1, 1, {0}, 0},//当月、下月及随后两个季月{ "中证500", "IC", 1, 1, {0}, 0},//当月、下月及随后两个季月{ "5年期国债", "TF", 3, 2, {0}, 0},//最近的三个季月(3月、6月、9月、12月中的最近三个月循环)(当前为3月 则为6","9","12}},{ "10年期国债", "T", 3, 2, {0}, 0},//最近的三个季月(3月、6月、9月、12月中的最近三个月循环)//上海期货交易所  SHFE{ "铜", "cu", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "铝", "al", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "锌", "zn", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "铅", "pb", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "镍", "ni", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "锡", "sn", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "黄金", "au", 2, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "白银", "ag", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "螺纹钢", "rb", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "线材", "wr", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "热轧卷板", "hc", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "燃料油", "fu", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "沥青", "bu", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},{ "天然橡胶", "ru", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 1},//大连商品交易所  DCE{ "玉米", "c", 0, 0, { 1, 3, 5, 7, 9, 11 }, 2},{ "玉米淀粉", "cs", 0, 0, { 1, 3, 5, 7, 9, 11 }, 2},{ "黄大豆1号", "a", 0, 0, { 1, 3, 5, 7, 9, 11 }, 2},{ "黄大豆2号", "b", 0, 0, { 1, 3, 5, 7, 9, 11 }, 2},{ "豆粕", "m", 0, 0, { 1, 3, 5, 7, 8, 9, 11, 12 }, 2},{ "豆油", "y", 0, 0, { 1, 3, 5, 7, 8, 9, 11, 12 }, 2},{ "棕榈油", "p", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "纤维板", "fb", 2, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "胶合板", "bb", 2, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "鸡蛋", "jd", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "聚乙烯(塑料}},", "l", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "聚氯乙烯(PVC}},", "v", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "聚丙烯", "pp", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "焦炭", "j", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "焦煤", "jm", 1, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},{ "铁矿石", "i", 1, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 2},//郑州商品交易所 CZCE{ "强麦", "WH", 0, 0, { 1, 3, 5, 7, 9, 11 }, 3},{ "普麦", "PM", 0, 0, { 1, 3, 5, 7, 9, 11 }, 3},{ "棉花", "CF", 0, 0, { 1, 3, 5, 7, 9, 11 }, 3},{ "白糖", "SR", 0, 0, { 1, 3, 5, 7, 9, 11 }, 3},{ "PTA", "TA", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 3},{ "菜籽油", "OI", 0, 0, { 1, 3, 5, 7, 9, 11 }, 3},{ "早籼稻", "RI", 0, 0, { 1, 3, 5, 7, 9, 11 }, 3},{ "甲醇", "MA", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 3},{ "玻璃", "FG", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 3},{ "菜籽", "RS", 0, 0, { 7, 8, 9, 11 }, 3},{ "菜粕", "RM", 0, 0, { 1, 3, 5, 7, 8, 9, 11 }, 3},{ "动力煤", "ZC", 1, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 3},{ "粳稻", "JR", 0, 0, { 1, 3, 5, 7, 9, 11 }, 3},{ "晚籼稻", "LR", 0, 0, { 1, 3, 5, 7, 9, 11 }, 3},{ "硅铁", "SF", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 3},{ "锰硅", "SM", 0, 0, { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12 }, 3}
};

然后通过插件方便的新增所有的期货品种到MT4中
这里写图片描述

这里写图片描述

2.行情数据

处理好品种问题,接下来就是行情数据。
行情数据主要是两个事情,一个是用CTP接口取到数据,另一个是把数据写入MT4

1)取CTP的行情数据

只需要用到CTP的行情接口CThostFtdcMdApi

    // 初始化UserApipUserApi = CThostFtdcMdApi::CreateFtdcMdApi();          // 创建UserApiCThostFtdcMdSpi* pUserSpi = new CMdSpi();pUserApi->RegisterSpi(pUserSpi);                        // 注册事件类pUserApi->RegisterFront(FRONT_ADDR);                    // connectpUserApi->Init();pUserApi->Join();
//  pUserApi->Release();

在连接成功后,调用登录并订阅行情即可。

pUserApi->ReqUserLogin(&req, ++iRequestID);
SubscribeMarketData();
SubscribeForQuoteRsp();

CTP都有比较详细的接口说明,相关文档都很健全,这里就不多说了。

2)数据写入MT4
数据写入MT4有两个方式 都可以做到。
一个方式是使用DataFeed接口,做一个行情插件,关于行情插件有在此文(http://blog.csdn.net/mt4develop/article/details/51251465)简单介绍,这里的话,就是在行情插件中去调用CTP接口取报价数据即可。
另一个方式是使用普通插件接口,用接口的扩展事件

int   APIENTRY       MtSrvTelnet(char *buf, const int maxlen)

此接口可用于 向MT4发送任意自定义的数据,插件在此事件中处理即可。
那么此处可以做一个外部程序调用CTP接口取得数据,然后把数据发给MT4的扩展接口,然后在此事件中调用MT4新增报价的方法即可。

void        __stdcall HistoryAddTick(FeedData *tick);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16926.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量化交易如何通过函数获取行情数据?

我们可以把量化交易称之为工具, 在交易市场,用于股票交易的工具,也在不断升级。 1,股市诞生之初,只能在交易所大厅交易,那个时候用的纸质股票; 2,随后股市诞生了电话下单&#xf…

TradingView

官网:https://cn.tradingview.com 申请图表库 用本地服务器打开 二:文件目录 三:基础概念 3.1 UDF:通用数据饲料(Universal Data Feed) 通过HTTP协议向图标库提供数据 使用方法:创建一个能从数据库获取数据并且响应图表库请…

JS邮箱验证_手机号码验证_电话号码验证-正则验证

一、正则表达式 //对电子邮件的验证:^[a-z0-9]([._\\-]*[a-z0-9])*([a-z0-9][-a-z0-9]*[a-z0-9].){1,63}[a-z0-9]$ //对手机号码的验证: /^((13[0-9]{1})|159|153)\d{8}$/或 /^(13\d{9})|(159\d{8})|(153\d{8})$/ //对电话号码的验证:/^\d{7,8}$/ //对电话区号的验证:/^\d{…

ChatGPT拿下AI修bug顶级成绩!31个Bug修复率领先

文|金磊 衡宇 源|量子位 ChatGPT到底有多会修bug?这事终于有人正儿八经地搞研究了——来自德国、英国的研究人员,专门搭了个“擂台”来检验ChatGPT的这项本领。除了ChatGPT之外,研究人员还找来了其它三位修bug的“AI猛…

ChatGPT击败代码BUG:AI实力震撼全球

修改代码Bug的步骤 设定身份> 指明BUG > 测试验证(自己手动验证) > 再指明BUG > 验收完成 问题说明 下面是一段有问题的代码,我们尝试让chatGPT帮我们修复。 有BUG的代码在线演示: https://codesandbox.io/s/you-b…

ChatGPT OpenAI系统 AI文本创作 模板自定义创作模型 文案模板

最新版的1.9.2数据库AI文本创作是不带自定义创作模型模板的,很多会员问我有没有现成的,整理了一个老版本至新版本的模板文字供大家参考,同时为了方便大家更省事,提供数据表下载, 把数据表直接导入替换原来的即可 fox_…

Midjourney 玩上瘾了,免费AI 绘图指令一键产生精美图片

文章目录 Midjourney 是什么?1. 注册 Discod2. 登入 Midjourney 聊天室频道3. 透过 Midjourney 指令产生 AI 图片4. Midjourney 指令怎么输入?5. Midjourney 图片版权问题 全球 ChatGPT 聊天机器人和 AI绘图话题非常火夯,不管是否懂电脑绘图或…

投资、理财、炒股记事

http://blog.csdn.net/pipisorry/article/details/45677173 同花顺模拟炒股软件的使用 下载同花顺模拟炒股软件 软件下载以后 ,会先提示注册 用户名 密码 邮箱地址登陆 菜单栏 > 委托 > 模拟炒股 > 炒股首页 > 找到自己的账号 > 我的模拟炒股 >…

利用AI炒股开挂!这届程序员真会玩

用深度学习预测股票价格想过去有些不明觉厉,但已经不是什么新鲜事了,今天猿妹和大家分享一个股票预测模型,收集了机器学习和股票预测的深度学习模型,包括交易机器人和(股票)模拟。 想要准确预测股票市场是一…

炒股的策略方法

炒股的策略方法 炒股常见问题 你炒股的时候有没有遇到这样的问题? (1)需要时刻盯着大盘和个股的走势,一分心,一走神,就错过了机会?工作时没有时间和精力去看大盘走势和个股的走势,…

炒股的最高境界:炒股就是炒心态,耐心看完受益匪浅!

其实炒股也是分为很多境界的,像我们大多数投资者可能还停留在最低级别的境界当中,那么炒股最高境界是什么? “不以涨喜,不以跌悲”这就是炒股的最高境界,也就是我们常说的心态! 有很多人炒了很多年股&…

怎样配置炒股用的计算机,炒股专用电脑配置

炒股专用电脑配置 一、显卡 1、欲购六屏且囊中羞涩的股民朋友,显卡可以选择AMD的六屏显卡,为避广告嫌疑,此处便不列举具体型号了。而预算稍充足一些的便推荐更加稳定的英伟达图形工作站系列显卡(如Nvidia Quadro P620)。 2、对于四屏及以下或…

最近很火的吃垃圾猫猫回收站。

最近很火的吃垃圾猫猫回收站。 演示图1 蓝奏:pop猫图标素材.zip - 蓝奏云 图标修改教程: 方法1:找到pop猫图片素材(这里我直接给大家提供了,上方蓝奏云链接,点击直接下载)。 1)下…

如何搭建你的私人专属ChatGPT等系列文章

「 静静地做自己,让世界发现你 」 科技毒瘤君将不定时分享优质工具,大家可以把科技毒瘤君公众号设为★星标,第一时间获取最新推送,以防错过优质内容。 官方网站:www.beiwangshan.com 百度搜索:北忘山 网站目…

chatgpt 源码

本系统包含 后台、前端、H5、小程序 超级管理端 管理员端 AI访问端 需要扫码

揭秘RLHF;可商用开源LLM列表;领域编译器的前世今生

1. GPT创造者:第二次改变AI浪潮的方向 那么,从推动这一系列变革的科学家角度,他究竟如何看待当先ChatGPT、GPT-4模型的发展?他对AI的思考和坚定信念从何而来?OpenAI下一步研究方向是什么?他又如何看待AI对社…

物理学又不存在了?ChatGPT:室温超导是物理学的一个梦想

大家好,我是小彭。 就在前天,一组微信聊天记录突然开始在各大群中流传: 随后,这一新闻直接引爆各大社交媒体,物理学又双叒叕不存在了吗? 到底是什么重磅消息呢? 原来在美国物理学会的三月会议…

赣货通全球桥接江西制造全球开花,贸易强国供应链出海江西在奋进

“赣货通全球”平台是什么? “赣货通全球”平台是江西制造进入全球供应链的数字贸易平台,平台免费为江西制造打造永不落幕线上国际化“赣品展”。核心的后台功能为企业用户提供大数据获客及营销功能,同时为企业提供贸易全流程的第三方外贸综合服务&…

从ChatGPT谈AI发展方向:全力助推乡村振兴事业快速发展

随着人工智能技术的不断发展,以ChatGPT为代表的颠覆性AI应用破圈,标志着人工智能领域的重大突破,引发全球共振。不少人将ChatGPT的问世比喻为“蒸汽机”,人工智能就此走向“工业时代”。 ChatGPT相较于之前市面上的所有同类产品&a…

催眠入門指導手冊

作者 迪兰摩根 介绍 第一章 言语能引发妳心中的图像 第二章 关掉肌肉系统 第三章 想象的探索 第四章 引导并控制想象 第五章 探索「诱导」 第六章 催眠后暗示 第七章 抗拒及亲和感 第八章 统合 这本书有如书名所言,主要针对初学者─也就是想要学习如何…