CTP综合交易平台教程word精品文档15页.docx
《CTP综合交易平台教程word精品文档15页.docx》由会员分享,可在线阅读,更多相关《CTP综合交易平台教程word精品文档15页.docx(15页珍藏版)》请在冰豆网上搜索。
CTP综合交易平台教程word精品文档15页
CTP综合交易平台教程
观察内容的选择,我本着先静后动,由近及远的原则,有目的、有计划的先安排与幼儿生活接近的,能理解的观察内容。
随机观察也是不可少的,是相当有趣的,如蜻蜓、蚯蚓、毛毛虫等,孩子一边观察,一边提问,兴趣很浓。
我提供的观察对象,注意形象逼真,色彩鲜明,大小适中,引导幼儿多角度多层面地进行观察,保证每个幼儿看得到,看得清。
看得清才能说得正确。
在观察过程中指导。
我注意帮助幼儿学习正确的观察方法,即按顺序观察和抓住事物的不同特征重点观察,观察与说话相结合,在观察中积累词汇,理解词汇,如一次我抓住时机,引导幼儿观察雷雨,雷雨前天空急剧变化,乌云密布,我问幼儿乌云是什么样子的,有的孩子说:
乌云像大海的波浪。
有的孩子说“乌云跑得飞快。
”我加以肯定说“这是乌云滚滚。
”当幼儿看到闪电时,我告诉他“这叫电光闪闪。
”接着幼儿听到雷声惊叫起来,我抓住时机说:
“这就是雷声隆隆。
”一会儿下起了大雨,我问:
“雨下得怎样?
”幼儿说大极了,我就舀一盆水往下一倒,作比较观察,让幼儿掌握“倾盆大雨”这个词。
雨后,我又带幼儿观察晴朗的天空,朗诵自编的一首儿歌:
“蓝天高,白云飘,鸟儿飞,树儿摇,太阳公公咪咪笑。
”这样抓住特征见景生情,幼儿不仅印象深刻,对雷雨前后气象变化的词语学得快,记得牢,而且会应用。
我还在观察的基础上,引导幼儿联想,让他们与以往学的词语、生活经验联系起来,在发展想象力中发展语言。
如啄木鸟的嘴是长长的,尖尖的,硬硬的,像医生用的手术刀―样,给大树开刀治病。
通过联想,幼儿能够生动形象地描述观察对象。
基本介绍
单靠“死”记还不行,还得“活”用,姑且称之为“先死后活”吧。
让学生把一周看到或听到的新鲜事记下来,摒弃那些假话套话空话,写出自己的真情实感,篇幅可长可短,并要求运用积累的成语、名言警句等,定期检查点评,选择优秀篇目在班里朗读或展出。
这样,即巩固了所学的材料,又锻炼了学生的写作能力,同时还培养了学生的观察能力、思维能力等等,达到“一石多鸟”的效果。
一、系统简介
其实,任何一门学科都离不开死记硬背,关键是记忆有技巧,“死记”之后会“活用”。
不记住那些基础知识,怎么会向高层次进军?
尤其是语文学科涉猎的范围很广,要真正提高学生的写作水平,单靠分析文章的写作技巧是远远不够的,必须从基础知识抓起,每天挤一点时间让学生“死记”名篇佳句、名言警句,以及丰富的词语、新颖的材料等。
这样,就会在有限的时间、空间里给学生的脑海里注入无限的内容。
日积月累,积少成多,从而收到水滴石穿,绳锯木断的功效。
交易托管系统API是一个基于C++的类库,通过使用和扩展类库提供的接口来实现相关交易功能,包括报单与报价的录入、报单与报价的撤销、报单与报价的挂起、报单与报价的激活、报单与报价的修改、报单与报价的查询、成交单查询、投资者查询、投资者持仓查询、合约查询、交易日获取等。
支持MSVC6.0,MSVC2019编译器。
需要打开多线程编译选项/MT。
二、体系结构
交易员API使用建立在TCP协议之上FTD协议与交易托管系统进行通讯,交易托管系统负责投资者的交易业务处理。
2.1.通讯模式
FTD协议中的所有通讯都基于某个通讯模式。
通讯模式实际上就是通讯双方协同工作的方式。
FTD涉及的通讯模式共有三种:
l对话通讯模式l私有通讯模式l广播通讯模式对话通讯模式是指由会员端主动发起的通讯请求。
该请求被交易所端接收和处理,并给予响应。
例如报单、查询等。
这种通讯模式与普通的客户/服务器模式相同。
私有通讯模式是指交易所端主动,向某个特定的会员发出的信息。
例如成交回报等。
广播通讯模式是指交易所端主动,向市场中的所有会员都发出相同的信息。
例如公告、市场公共信息等。
通讯模式和网络的连接不一定存在简单的一对一的关系。
也就是说,一个网络连接中可能传送多种不同通讯模式的报文,一种通讯模式的报文也可以在多个不同的连接中传送。
无论哪种通讯模式,其通讯过程都如图1所示
本接口暂时没有使用广播通信方式。
2.2.数据流
交易托管系统支持对话通讯模式、私有通讯模式、广播通讯模式:
对话通讯模式下支持对话数据流和查询数据流:
对话数据流是一个双向数据流,交易托管系统发送交易请求,交易系统反馈应答。
交易系统不维护对话流的状态。
系统故障时,对话数据流会重置,通讯途中的数据可能会丢失。
查询数据流是一个双向数据流,交易托管系统发送查询请求,交易系统反馈应答。
交易系统不维护查询流的状态。
系统故障时,查询数据流会重置,通讯途中的数据可能会丢失。
私有通讯模式下支持私有数据流:
私有流是一个单向数据流,由交易系统发向交易托管系统,用于传送交易员私有的通知和回报信息。
私有流是一个可靠的数据流,交易系统维护每个交易托管系统的私有流,在一个交易日内,交易托管系统断线后恢复连接时,可以请求交易系统发送指定序号之后的私有流数据。
私有数据流向交易托管系统提供报单状态报告、成交回报更等信息。
广播通讯模式下支持公共数据流:
公共数据流是一个单向数据流,由交易系统发向交易托管系统,用于发送市场公共信息;公共数据流也是一个可靠的数据流,交易系统维护整个系统的公共数据流,在一个交易日内,交易托管系统断线恢复连接时,可以请求交易系统发送指定序号之后的公共数据流数据。
接口模式
交易员API提供了二个接口,分别为CThostFtdcTraderApi和CThostFtdcTraderSpi。
这两个接口对FTD协议进行了封装,方便客户端应用程序的开发。
客户端应用程序可以通过CThostFtdcTraderApi发出操作请求,通继承CThostFtdcTraderSpi并重载回调函数来处理后台服务的响应。
1.对话流和查询流编程接口通过对话流进行通讯的编程接口通常如下:
请求:
intCThostFtdcTraderApi:
:
ReqXXX(CThostFtdcXXXField*pReqXXX,intnRequestID)
响应:
voidCThostFtdcTraderSpi:
:
OnRspXXX(CThostFtdcXXXField*pRspXXX,CThostFtdcRspInfoField*pRspInfo,intnRequestID,boolbIsLast)
其中请求接口第一个参数为请求的内容,不能为空。
第二个参数为请求号。
请求号由客户端应用程序负责维护,正常情况下每个请求的请求号不要重复。
在接收交易托管系统的响应时,可以得到当时发出请求时填写的请求号,从而可以将响应与请求对应起来。
当收到后台服务应答时,CThostFtdcTraderSpi的回调函数会被调用。
如果响应数据不止一个,则回调函数会被多次调用。
回调函数的第一个参数为响应的具体数据,如果出错或没有结果有可能为NULL。
第二个参数为处理结果,表明本次请求的处理结果是成功还是失败。
在发生多次回调时,除了第一次回调,其它的回调该参数都可能为NULL。
第三个参数为请求号,即原来发出请求时填写的请求号。
第四个参数为响应结束标志,表明是否是本次响应的最后一次回调。
2.私有流编程接口私有流中的数据中会员的私有信息,包括报单回报、成交回报等。
通过私有流接收回报的编程接口通常如下:
voidCThostFtdcTraderSpi:
:
OnRtnXXX(CThostFtdcXXXField*pXXX)
或voidCThostFtdcTraderSpi:
:
OnErrRtnXXX(CThostFtdcXXXField*pXXX,CThostFtdcRspInfoField*pRspInfo)
当收到交易托管系统通过私有流发布的回报数据时,CThostFtdcTraderSpi的回调函数会被调用。
回调函数的参数为回报的具体内容。
运行模式
工作线程交易员客户端应用程序至少由两个线程组成,一个是应用程序主线程,一个是交易员API工作线程。
应用程序与交易系统的通讯是由API工作线程驱动的。
CThostFtdcTraderApi提供的接口是线程安全的,可以有多个应用程序线程同时发出请求。
CThostFtdcTraderSpi提供的接口回调是由API工作线程驱动,通过实现SPI中的接口方法,可以从交易托管系统收取所需数据。
如果重载的某个回调函数阻塞,则等于阻塞了API工作线程,API与交易系统的通讯会停止。
因此,在CThostFtdcTraderSpi派生类的回调函数中,通常应迅速返回,可以利用将数据放入缓冲区或通过Windows的消息机制来实现。
本地文件交易员API在运行过程中,会将一些数据写入本地文件中。
调用CreateFtdcTraderApi函数,可以传递一个参数,指明存贮本地文件的路径。
该路径必须在运行前已创建好。
本地文件的扩展名都是".con"。
开发接口通用规则
客户端和交易托管系统的通讯过程分为2个阶段:
初始化阶段和功能调用阶段。
在初始化阶段,程序必须完成如下步骤(具体代码请参考开发实例):
1,产生一个CThostFtdcTraderApi实例
2,产生一个事件处理的实例
3,注册一个事件处理的实例
4,订阅私有流
5,订阅公共流
6,设置交易托管服务的地址
在功能调用阶段,程序可以任意调用交易接口中的请求方法,如ReqOrderInsert等。
同时按照需要响应回调接口中的。
其他注意事项:
1,API请求的输入参数不能为NULL。
2,API请求的返回参数,0表示正确,其他表示错误,详细错误编码请查表。
CThostFtdcTraderSpi接口
CThostFtdcTraderSpi实现了事件通知接口。
用户必需派生CThostFtdcTraderSpi接口,编写事件处理方法来处理感兴趣的事件。
由于回调函数众多,在此不一一举例,只说明几个经典函数的功能与用法,其它函数可举一反三。
1.OnFrontConnected
方法当客户端与交易托管系统建立起通信连接时(还未登录前),该方法被调用。
函数原形:
voidOnFrontConnected();
本方法在完成初始化后调用,可以在其中完成用户登录任务。
2.OnFrontDisconnected方法
当客户端与交易托管系统通信连接断开时,该方法被调用。
当发生这个情况后,API会自动重新连接,客户端可不做处理。
自动重连地址,可能是原来注册的地址,也可能是系统支持的其它可用的通信地址,它由程序自动选择。
函数原形:
voidOnFrontDisconnected(intnReason);
参数:
nReason:
连接断开原因
0x1001网络读失败
0x1002网络写失败
0x2019接收心跳超时
0x2019发送心跳失败
0x2019收到错误报文
3.OnRspUserLogin方法
当客户端发出登录请求之后,交易托管系统返回响应时,该方法会被调用,通知客户端登录是否成功。
函数原形:
voidOnRspUserLogin(
CThostFtdcRspUserLoginField*pRspUserLogin,
CThostFtdcRspInfoField*pRspInfo,
intnRequestID,
boolbIsLast);
参数:
pRspUserLogin:
返回用户登录信息的地址。
用户登录信息结构:
structCThostFtdcRspUserLoginField
{///交易日
TThostFtdcDateTypeTradingDay;
///登录成功时间
TThostFtdcTimeTypeLoginTime;
///经纪公司代码
TThostFtdcBrokerIDTypeBrokerID;
///用户代码TThostFtdcUserIDTypeUserID;
///交易系统名称TThostFtdcSystemNameTypeSystemName;
};
pRspInfo:
返回用户响应信息的地址。
特别注意在有连续的成功的响应数据时,中间有可能返回NULL,但第一次不会,以下同。
错误代码为0时,表示操作成功,以下同。
响应信息结构:
structCThostFtdcRspInfoField
{///错误代码
TThostFtdcErrorIDTypeErrorID;
///错误信息TThostFtdcErrorMsgTypeErrorMsg;
};
nRequestID:
返回用户登录请求的ID,该ID由用户在登录时指定。
bIsLast:
指示该次返回是否为针对nRequestID的最后一次返回。
4.OnRspOrderInsert方法
报单录入应答。
当客户端发出过报单录入指令后,交易托管系统返回响应时,该方法会被调用。
函数原形:
voidOnRspOrderInsert(
CThostFtdcInputOrderField*pInputOrder,
CThostFtdcRspInfoField*pRspInfo,
intnRequestID,
boolbIsLast);
参数:
pInputOrder:
指向报单录入结构的地址,包含了提交报单录入时的输入数据,和后台返回的报单编号。
输入报单结构:
structCThostFtdcInputOrderField
{
///经纪公司代码
TThostFtdcBrokerIDTypeBrokerID;
///投资者代码
TThostFtdcInvestorIDTypeInvestorID;
///合约代码
TThostFtdcInstrumentIDTypeInstrumentID;
///报单引用
TThostFtdcOrderRefTypeOrderRef;
///用户代码
TThostFtdcUserIDTypeUserID;
///报单价格条件
TThostFtdcOrderPriceTypeTypeOrderPriceType;
///买卖方向
TThostFtdcDirectionTypeDirection;
///组合开平标志
TThostFtdcCombOffsetFlagTypeCombOffsetFlag;
///组合投机套保标志
TThostFtdcCombHedgeFlagTypeCombHedgeFlag;
///价格
TThostFtdcPriceTypeLimitPrice;
///数量
TThostFtdcVolumeTypeVolumeTotalOriginal;
///有效期类型
TThostFtdcTimeConditionTypeTimeCondition;
///GTD日期
TThostFtdcDateTypeGTDDate;
///成交量类型
TThostFtdcVolumeConditionTypeVolumeCondition;
///最小成交量
TThostFtdcVolumeTypeMinVolume;
///触发条件
TThostFtdcContingentConditionTypeContingentCondition;
///止损价
TThostFtdcPriceTypeStopPrice;
///强平原因
TThostFtdcForceCloseReasonTypeForceCloseReason;
///自动挂起标志
TThostFtdcBoolTypeIsAutoSuspend;
///业务单元TThostFtdcBusinessUnitTypeBusinessUnit;
///请求编号TThostFtdcRequestIDTypeRequestID;};
pRspInfo:
指向响应信息结构的地址。
响应信息结构:
structCThostFtdcRspInfoField{
///错误代码
TThostFtdcErrorIDTypeErrorID;
///错误信息TThostFtdcErrorMsgTypeErrorMsg;
};
nRequestID:
返回报单录入操作请求的ID,该ID由用户在报单录入时指定。
bIsLast:
指示该次返回是否为针对nRequestID的最后一次返回。
5.OnRspOrderAction方法
///报单操作请求响应
virtualvoidOnRspOrderAction(CThostFtdcInputOrderActionField*pInputOrderAction,CThostFtdcRspInfoField*pRspInfo,intnRequestID,boolbIsLast){};
6.///请求查询交易通知响应
virtualvoidOnRspQryTradingNotice(CThostFtdcTradingNoticeField*pTradingNotice,CThostFtdcRspInfoField*pRspInfo,intnRequestID,boolbIsLast){};
7.///请求查询交易通知响应
virtualvoidOnRspQryTradingNotice(CThostFtdcTradingNoticeField*pTradingNotice,CThostFtdcRspInfoField*pRspInfo,intnRequestID,boolbIsLast){};
CThostFtdcTraderApi接口
CThostFtdcTraderApi接口提供给用户的功能包括,报单与报价的录入、报单与报价的撤销、报单与报价的挂起、报单与报价的激活、报单与报价的修改、报单与报价的查询、成交单查询、会员客户查询、会员持仓查询、客户持仓查询、合约查询、合约交易状态查询、交易所公告查询等功能。
以下简单举些例子说明函数的用法,其它函数可举一反三。
1.CreateFtdcTraderApi方法
产生一个CThostFtdcTradeApi的一个实例,不能通过new来产生。
函数原形:
staticCThostFtdcTradeApi*CreateFtdcTradeApi(constchar*pszFlowPath="");
参数:
pszFlowPath:
常量字符指针,用于指定一个文件目录来存贮交易托管系统发布消息的状态。
默认值代表当前目录。
返回值:
返回一个指向CThostFtdcTradeApi实例的指针。
2.ReqUserLogin方法
用户发出登陆请求。
函数原形:
intReqUserLogin(CThostFtdcReqUserLoginField*pReqUserLoginField,intnRequestID);
参数:
pReqUserLoginField:
指向用户登录请求结构的地址。
用户登录请求结构:
structCThostFtdcReqUserLoginField
{
///交易日
TThostFtdcDateTypeTradingDay;
///经纪公司代码
TThostFtdcBrokerIDTypeBrokerID;
///用户代码
TThostFtdcUserIDTypeUserID;
///密码
TThostFtdcPasswordTypePassword;
///用户端产品信息
TThostFtdcProductInfoTypeUserProductInfo;
///接口端产品信息
TThostFtdcProductInfoTypeInterfaceProductInfo;
///协议信息
TThostFtdcProtocolInfoTypeProtocolInfo;
};
nRequestID:
用户登录请求的ID,该ID由用户指定,管理。
用户需要填写UserProductInfo字段,即客户端的产品信息,如软件开发商、版本号等,例如:
SFITTraderV100。
InterfaceProductInfo和ProtocolInfo只须占位,不必有效赋值。
0,代表成功。
-1,表示网络连接失败;
-2,表示未处理请求超过许可数;
-3,表示每秒发送请求数超过许可数。
3.ReqOrderAction方法
客户端发出报单操作请求,包括报单的撤销、报单的挂起、报单的激活、报单的修改。
函数原形:
intReqOrderAction(CThostFtdcOrderActionField*pOrderAction,intnRequestID);
参数:
pOrderAction:
指向报单操作结构的地址。
报单操作结构:
///报单操作
structCThostFtdcOrderActionField
{
///经纪公司代码
TThostFtdcBrokerIDTypeBrokerID;
///投资者代码
TThostFtdcInvestorIDTypeInvestorID;
///报单操作引用
TThostFtdcOrderActionRefTypeOrderActionRef;
///报单引用
TThostFtdcOrderRefTypeOrderRef;
///请求编号
TThostFtdcRequestIDTypeRequestID;
///前置编号
TThostFtdcFrontIDTypeFrontID;
///会话编号
TThostFtdcSessionIDTypeSessionID;
///交易所代码
TThostFtdcExchangeIDTypeExchangeID;
///报单编号
TThostFtdcOrderSysIDTypeOrderSysID;
///操作标志
TThostFtdcActionFlagTypeActionFlag;
///价格
TThostFtdcPriceTypeLimitPrice;
///数量变化
TThostFtdcVolumeTypeVolumeChange;
///操作日期
TThostFtdcDateTypeActionDate;
///操作时间
TThostFtdcTimeTypeActionTime;
///交易所交易员代码
TThostFtdcTraderIDTypeTraderID;
///安装编号
TThostFtdcInstallIDTypeInstallID;
///本地报单编号
TThostFtdcOrderLocalIDTypeOrderLocalID;
///操作本地编号
TThostFtdcOrderLocalIDTypeActionLocalID;
///会员代码
TThostFtdcParticipantIDTypeParticipantID;
///客户代码
TThostFtdcClientIDTypeClientID;
///业务单元
TThostFtdcBusinessUnitTypeBusinessUnit;
///报单操作状态
TThostFtdcOrderActionStatusTypeOrderActionStatus;
///用户代码
TThostFtdcUserIDTypeUser