国外期货程序化交易之报单流程讲解
![](/assets/blank.gif)
![](/assets/blank.gif)
IEsunnyTradeApi *pTradeApi = CreateEsunnyForeignTradeApi(szCertInfo, &result, szLogFilePath, szAppId);
if (pTradeApi == NULL)
{LOG_INFO << "创建trade api实例失败,错误码:" << result;return;
}
通过调用CreateEsunnyForeignTradeApi()创建api实例——pTradeApi,随后调用该实例发起各种请求,比如连接服务器、用户登录、报单、撤单、查询持仓、查询资金等等。
EsunnyTradeSpi *pTradeSpi = new EsunnyTradeSpi(pTradeApi, this);
pTradeApi->SetSpi(pTradeSpi);
pTradeSpi->connect(serverAddr, port, username, password);
void EsunnyTradeSpi::connect(string serverAddr, uint16_t port, string username, string password)
{// 保存登录信息serverAddr_ = serverAddr;port_ = port;username_ = username;password_ = password;// 设置服务器IP、端口, 并发起连接TEsAddressField addrField;strcpy(addrField.Ip, serverAddr_.c_str());addrField.Port = port_;bool ret = (pTradeApi_ != NULL) ? pTradeApi_->Open(addrField) : false;if (!ret){LOG_INFO << username_ << " 请求: 连接服务器出错" << Err_Unknown;}
}
请求发出后,OnOpen()会被回调以响应上述请求,可以在OnOpen()函数内编写用户登录逻辑,调用pTradeApi_->Login()发起登录后,OnLogin()及OnInitFinished()会依次响应上述请求,根据返回的信息,可以确定是否完成登录,以及API是否初始化完成。一旦出错,也会有相应错误码返回,方便查找问题。
void __cdecl EsunnyTradeSpi::OnOpen()
{
}void __cdecl EsunnyTradeSpi::OnLogin(const TEsLoginRspField *rsp, int errCode, const int iReqID)
{
}void __cdecl EsunnyTradeSpi::OnInitFinished(int errCode)
{
}
4. 期货报单:
TEsOrderInsertReqField reqField;
memset(&reqField, 0, sizeof(TEsOrderInsertReqField));
......
......
pTradeApi_->OrderInsert(reqField, reqId);
报单参数很多,需要正确填写买卖/方向、开仓/平仓、市价/限价、委托数量、委托价格等等。这个需要查询文档及易盛提供的示例demo,填写完毕就可以调用OrderInsert()报单了。
void __cdecl EsunnyTradeSpi::OnRspOrderInsert(const TEsOrderInsertRspField *rsp, int errCode, const int iReqID)
{
}
报单成功后,该函数就会被回调,会明确通知是否委托成功,便于开发者处理业务逻辑。
void __cdecl EsunnyTradeSpi::OnRtnOrderState(const TEsOrderStateNoticeField &rsp)
{
}
当委托状态发生变化时,会被回调。一般常见的委托状态主要有:正在排队、部分成交、完全成交,一次报单,如果数量比较多,一般不会一次全部成交,而是会分多批次成交,所以该函数会不断被回调。
void __cdecl EsunnyTradeSpi::OnRtnMatchState(const TEsMatchStateNoticeField &rsp)
{
}
感觉该函数与(5)有重复之嫌,所以我在处理时,直接在该函数内调用函数(5),没有编写太多逻辑。
void __cdecl EsunnyTradeSpi::OnRtnMatchInfo(const TEsMatchInfoNoticeField &rsp)
{
}
void __cdecl EsunnyTradeSpi::OnQryHold(const TEsHoldQryRspField *rsp, TEsIsLastType islast, int errCode, const int iReqID)
{
}
该函数需要由开发者自己重写,比较麻烦的是持仓数据不会一次全部返回,而是一批一批返回,需要自己做一次汇总计算才行。
void __cdecl EsunnyTradeSpi::OnQryMoney(const TEsMoneyQryRspField *rsp, TEsIsLastType islast, int errCode, const int iReqID)
{
}
同样,该函数需要开发者自己重写,这个比较简单,会一次返回帐户资金相关信息,如:可用资金、今资金、昨资金、手续费、帐户市值等。
国外期货程序化交易之报单流程讲解相关推荐
- 国外期货程序化交易之行情获取讲解
本来是做图像算法,后来稀里糊涂的被拉进期货程序化交易这个方向.刚接触时真是一头雾水,什么合约.保证金.开仓.平仓.看多.看空等等完全不懂,对期货的了解仅仅停留在新闻报道里,各种期货知识一顿恶补后,思路 ...
- 基于CTP的国内期货程序化交易之报单流程讲解
相比国外期货交易开发,国内期货交易开发就有些繁琐了,坑比较多.第一就是交易时间段多,像国外期货美原油,全天23小时连续交易,而国内期货沪金,全天分四个时间段交易,分别为9:00至10:1 ...
- python期货自动化交易_Python API面纱下的函数——基于CTP的国内期货程序化交易之报单流程讲解...
很多用户已经阅读了真格量化的Python API文档,知道了其是对一些交易柜台,比如CTP C++ API的封装.这里我们可以看看这些API在C++中的原始面貌. 我们还是以CTP柜台为例.与海外市场 ...
- 通达信期货程序化交易接口是什么?
通达信期货程序化交易接口是什么?期货办理手续交易先讲期货的程序化交易. 联接国内四大期货交易所的期货交易系统软件关键是前高新科技综合交易服务平台(CTP ).金仕达.易盛(关键联接郑商所)等. 在其中 ...
- 放弃文华财经,自己编程实现期货程序化交易
一.目前期货程序化现状: 由于有免费的CTP接口,期货程序化交易目前比较普遍,很多人都尝试过在文华财经.金字塔之类的软件上回测和编写实盘策略. 期货程序化交易有很多优点:程序会按照设计自动执行,不受任 ...
- 期货程序化交易之期货入门知识摘录整理
开发期货程序化交易程序,首先要熟悉期货交易术语,否则不熟悉业务,开发的程序将会漏洞百出.下面是我在学习过程中摘录的一些期货相关知识,还是比较零散,可以作为入门时的资料看看.由于是陆续从网 ...
- python期货程序化交易高手心得_11位顶级高手谈期货心得
位,再多钱也是没有用的. 外盘的价 格变化是国外交易商的预期,跟国内的预期不完全吻合. 我不会去使用程序化交易,我认为程序化交易是有局限性的. 价格是变化的,你很难用一个框子来框它! 有时候期货交易它 ...
- 基于CTP的国内期货程序化交易之行情获取讲解
前面两篇文章主要讲了国外期货相关程序开发,使用的是郑州易盛的行情及交易api,而国内期货相关程序开发易盛貌似也是有sdk的,不过项目中使用的是上期技术的sdk,即大家经常提到的CTP a ...
- python期货程序化交易高手心得_位顶级高手谈期货心得
位顶级高手谈期货心得 王向洋 14 年期货生涯,多次获得全国期货实盘大赛冠军,曾创造的最高收益率为 5 个 月 54 倍. 期货中国网访谈精彩语录: 比赛时操盘的冒险精神强很多. 在和高手过招中你会思 ...
最新文章
- 【学习笔记】超简单的多项式除法(含完整证明)
- Report_报表中Ref Cursor数据源的概念和用法(案例)
- 【李超树】李超线段树维护凸包(凸壳) (例题:blue mary开公司+线段游戏+ZZH的旅行)
- Spring MVC 4快速入门Maven原型已改进
- H.264算法的DSP移植与优化
- SpringBoot项目整合Retrofit最佳实践,这才是最优雅的HTTP客户端工具!
- ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题
- python图片转视频加特效_使用Python opencv实现视频与图片的相互转换
- .html(),.text()和.val()的差异总结:
- iOS开发之Xcode项目文件自动展开问题的解决办法
- spring学习4-bean配置文件
- Maven中央仓库地址和Nexus 下载地址
- OpenKM文档管理系统开源源码v6.3.9
- 晶振选型需要注意哪些事项?-台湾TST嘉硕
- 订单里面有多个商品的问题怎么解决
- 区块链技术开发公司谈区块链如何优化产业链
- 滚!你的程序员同事才没空抛弃你,他在…
- 他是这么解决视频版权的,南京小伙做视频剪辑,一个月赚了7k多
- ThinkPad E520 win7 64 无线网卡无法开启
- oracle分页查询SQL模板
热门文章
- leetcode 层序遍历之我要打十个(上)
- R语言ggplot2可视化:通过在element_text函数中设置标签字体大小列表和标签字体形式列表自定义标签可视化效果
- 基于自然语言处理的灾难预警
- Android 音乐播放器的开发教程(二)反编译apk ----- 小达
- C语言 统计输入任意多数字的偶数和奇数的个数,并输出相应的内容
- 畅谈绿色数据库的应用
- Fully Convolutional Networks for Semantic Segmentation(FCN)阅读理解
- linux设备驱动——andriod平台wlan驱动,招聘丨新年招新季,加入Qualcomm连接世界!...
- 图书馆管理系统 (C语言)
- 分享一个自己做的截图小工具(基于Windows平台的批处理文件实现)