综合交易系统 第一次运行
来源:互联网 发布:淘宝二次认证不通过 编辑:程序博客网 时间:2024/04/30 00:41
http://blog.sina.com.cn/s/blog_62715e790100ghrz.html
VC2008 的环境配置好了之后,交易系统终于可以运行了。当按下程序,看着一个黑框蹦出来了的那一刻,心里不禁无穷的欢喜。
当然不知道这个输出的结果是个什么意思,要仔细研究也要花上不少的精力。内心里还是很想弄明白程序的整个操作过程,但此时天色已经很晚了,脑袋昏昏的,看那些文字材料不知道要看到什么时候。看到《综合交易平台交易API特别说明》后面有一段代码挺不错的,很想将代码的实现过程弄清楚。可能硬着头皮看,不知道什么时候能看完。于是我打算一边打代码,一边揣摩每段代码的含义。花了差不多一个小时的时间,我敲完了代码,并对代码要实现的东西进行了一些总结。
现将代码贴出如下:
// tradeapitest.cpp
// 一个简单的例子, 介绍CThostFtdcTraderApi和CThostFtdcTraderSpi接口的使用
//本例将演示一个报单录入操作的过程
// 一个简单的例子, 介绍CThostFtdcTraderApi和CThostFtdcTraderSpi接口的使用
//本例将演示一个报单录入操作的过程
//CThostFtdcTraderApi : Api对象
//CThostFtdcTraderSpi : 事件处理对象
//CThostFtdcTraderSpi : 事件处理对象
#include <stdio.h>
#include <windows.h>
#include ".\ThostTraderApi\ThostFtdcTraderApi.h"
#include <windows.h>
#include ".\ThostTraderApi\ThostFtdcTraderApi.h"
//保单录入操作是否完成的标志
//Create a manual resetevent with no signal
HANDLE g_hEvent = CreateEvent(NULL,true,false,NULL);
//Create a manual reset
HANDLE g_hEvent = CreateEvent(NULL,true,false,NULL);
//会员代码
TThostFtdcBrokerIDType g_chBrokerID;
//交易用户代码
TThostFtdcUserIDType g_chUserID;
TThostFtdcBrokerIDType g_chBrokerID;
//交易用户代码
TThostFtdcUserIDType g_chUserID;
class CSimpleHandler : public CThostFtdcTraderSpi
{
public:
//构造函数,需要一个有效的指向CThostFtdcMduserApi实例的指针
CSimpleHandler(CThostFtdcTraderApi *pUserApi) : m_pUserApi(pUserApi){}
~CSimpleHandler(){}
{
public:
};
int main()
{
//产生一个CThostFtdcTraderApi实例
CThostFtdcTraderApi *pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi();
//产生一个事件处理的实例
CSimpleHandler sh(pUserApi); //相当于将sh依附于pUserApi
//注册一个事件处理的实例
pUserApi->RegisterSpi(&sh); //pUserApi发生的一切事件都会调用sh中的处理函数
{
}
整个函数的重点在于新建立的CSimpleHandler是如何实现CThostFtdcTraderSpi的各个虚函数的,正是这种个性话的操作才让程序化控制交易流程得以实现. 这些虚函数和回调函数很像,有点像是模拟窗口程序的特点。
另外main函数实现了这样一个流程:创建Api对象(pUserApi)-> 注册事件处理对象 (sh)-> 订阅共有流(SubscribePublicTopic)-> 订阅私有流(SubscribePrivateTopic)-> 注册前置机(RegisterFront)-> 初始化Api(Init)。至于初始化过程后面的内容,以后再慢慢研究了^_^
通过对CSimpleHandler的观察,不难得出交易系统处理报单大致是这样一个流程:
另外从网上流传的一个交易开发流程的实例里面可以看出CThostFtdcTraderSpi应该不止这样六个虚函数,从网上收集了一下,至少有这些虚函数需要去实现:
1. OnFrontConnected : 当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
2. OnRspUserLogin : 登录请求响应, 当连接成功之后会调用这个函数
3. OnRspSettlementInfoConfirm: 投资者结算结果确认响应
4. OnRspQryInstrument: 请求查询合约响应
5. OnRspQryTradingAccount: 请求查询资金账户响应
6. OnRspQryInvestorPosition: 请求查询投资者持仓响应
7. OnRspOrderInsert : 报单录入请求响应, 可以在OnRspUserLogin后面就下单,当然什么时候下单都可以,看程序怎么调了。程序员可以自行安排下单的时间和顺序。
8. OnRspOrderAction : 报单操作请求响应
9. OnRspError : 错误应答
10. OnFrontDisconnected : 当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,API会自动重新连接,客户端可不做处理。
11. OnHeartBeatWarning : 心跳超时警告。当长时间未收到报文时,该方法被调用。
12. OnRtnOrder : 报单通知,也叫报单回报。 应该是交易所回传过来的报单信息
13. OnRtnTrade : 成交通知
- 综合交易系统 第一次运行
- 交易系统
- 第一次运行JADE平台
- ios 判断 第一次 运行
- 第一次运行Java程序
- 程序第一次运行判断
- 第一次运行Hadoop Streaming
- 第一次运行Android Studio
- 判断程序第一次运行
- ActiveMQ第一次运行错误
- CDP交易系统
- 第一次在vs2010 运行rawos
- android 判断是否第一次运行
- 判断程序是否第一次运行
- app第一次运行滑动视图
- hadoop第一次运行的问题
- Marvell MW300第一次运行出错
- 初入物联网与第一次运行
- MySQL中进行树状所有子节点的查询 . mysql根据父id 查询所有的子id
- LOG4CXX
- MySQL插入时间戳用函数:UNIX_TIMESTAMP()
- BOOST::Regex
- UIButton
- 综合交易系统 第一次运行
- launcher4.0加载
- jquery自定义函数之extend
- ASP.NET GDI
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- js 输入乱码问题
- 网页写验证码
- 面试1,2,3
- SQL