This is an old revision of the document!
Table of Contents
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
PPro8 TMS PPro API
警告
在使用API的时候,请记得:
- API产生的所有交易的盈亏,仍由交易员承担
- API产生的订单和人工输入的订单所受到的检查和监控是一样的
- 交易员有义务监控实时的交易活动
- 如果发现有问题的API活动,我们将暂时冻结API的使用权,直到交易员表明已经改正了错误
有限的支持:
我们默认API的用户有基本的编程知识,并且了解如何把URL的Call命令和其他工具整合。因此,我们仅仅提供有限的API支持服务。基本上仅限于本文档的内容。
用户可以自行选择如何使用API接口,用户可以用URL的Call命令,利用任何一种编程语言来处理CSV格式的数据。
概览
PPro8 TMS交易系统API是一个网页服务,当启动后,将允许用户利用URL格式发送命令,收到XML格式的数据,写入.log文件到本地硬盘,再经过第三方的程序来进一步处理。
要启动PProAPI,用户需要利用这个命令启动PPro8的客户端:
PPro8.exe -pproapi_port=8080
请注意,您可以用任何端口,8080只是举一个例子。如果您选择其他的端口,我们建议用 1000 - 65535 端口,因为低于 1000 的端口很可能被操作系统已经预先定义了。
登录到PPro8以后,用户可以通过这个链接连接到API的主页:
这个端口将显示当前支持的命令的基本信息。
注意:本文档中,以下的URL链接都忽略 http://localhost:8080,因此,请记住下面的命令前面要加
UDP功能
要确保UDP的正常运行,请在编写您的程序的时候,确保它积极地收听端口。只有有一个主动收听的对象的时候,端口才会发送数据。
如果您只是想测试UDP的功能,我们建议您使用NetCat,以及附的 常见命令页 。
要使用NetCat,用下面的命令行启动它,举例:
-ul -p4135
…注意:
-u 代表 UDP
-l 代表 “listening to”收听
-p 代表port端口,后面的数字按注册的端口不同而不同
…连起来,这个命令就是 “UDP的4135端口正在积极收听”
然后您可以用这个命令来注册并且发送数据到您指定的端口。
举例:
注册代码ZXZZT.NQ的Level1数据,发送数据到UDP的4135端口
http://localhost:8080/Register?symbol=ZXZZT.NQ&feedtype=L1&output=4135
数据类型Data Types
API允许用户对下面的数据类型进行注册/注销。下面的例子展示如何注册或者注销数据类型,更多的信息,请见API的主页(http://localhost:8080)
Register注册
Register注册命令用来注册各类的数据。
每次注册的时候,写入单个的文档是通过命令中的 bykey句法 ,按照下面的方法完成的:
Register?symbol=<symbol.extension> & region=[1|2|3] & feedtype=[L1|TOS|L2|IMBALANCE|OSTAT|ORDEREVENT|PAPIORDER] & output=[bykey]
另一方面, bytype句法将把注册的代码的数据写入到指定的文档。句法如下:
Register?symbol=<symbol.extension> & region=[1|2|3] & feedtype=[L1|TOS|L2|IMBALANCE|OSTAT|ORDEREVENT|PAPIORDER] & output=[bytype]
如果 指定的文档包含了 TOS, L1, L2, OSTAT, 用户可以选择哪个代码的数据写入指定的文档 (bytype), 或者他们可以把代码的数据写入一个新的文档 (bykey) 。
Deregistration注销也是一样。
注册命令
随着PPro8 TMS系统SevenSisters 1.8版本的推出,注册命令Register一分为三:GetSnapshot获取截图, Register注册, 和SetOutput发送输出。
利用这些命令,您可以设置输出,并且通过状态on还是off来启动或者关闭,或者选择写入仅仅截图,仅仅实时数据,或者两个都写入。
GetSnapshot获取截图
用这个命令获取代码当前的数据 (过去的100个记录,但不包含更新的数据)。
句法:
GetSnapshot?symbol=ZVZZT.NQ&feedtype=TOS
Register注册
和原先的命令一样,用这个命令获取代码实时的数据,以及更新的数据。
句法:
Register?symbol=ZVZZT.NQ&feedtype=TOS
SetOutput设置输出
用这个命令设置代码输出的信息,定义数据写到哪里,可以是bykey 或者 bytype。
句法:
SetOutput?symbol=ZVZZT.NQ&feedtype=TOS&output=bytype&status=on
Deregister注销
Deregister命令是用来注销各类数据的。这将命令API停止向log文件写入数据,或者关闭Level1的Call命令。
句法:
Deregister?symbol=<symbol.extension> & region=[1|2|3] & feedtype=[L1|TOS|L2|IMBALANCE|OSTAT|ORDEREVENT|PAPIORDER] & output=[bykey|bytype]
各类数据的命令例子如下:
Level 1 (L1)
举例:
Register?symbol=ZVZZT.NQ&feedtype=L1 & output=[bykey|bytype]
API将注册来接受代码ZVZZT.NQ所有的Level 1的价格/订单大小的更新。这些更新将被写入PPro8的运行目录,文件名的格式为:L1_1_ZVZZT.NQ.log,中间的数字代表市场所在的区域。
L1的消息必须包含代码这个参数。
每一次的L1更新,就是一行逗号隔开的数据行,包含了下面的栏目:
- LocalTime=09:07:29.349 ← 代表更新抵达交易员本地电脑的时间,并按本地电脑的时间显示
- MarketTime=09:07:30.379 ← 代表市场的更新时间
- Symbol=XIU.TO ← 代表更新的代码,格式是 <代码>.<市场缩写>
- BidPrice=19.19 ← 代表L1更新后的Bid最优买价
- BidSize=8000 ← 代表L1更新后的Bid最优买价上的订单数量
- AskPrice=19.24 ← 代表L1更新后的Ask最优卖价
- AskSize=16000 ← 代表L1更新后的Ask最优卖价上的订单数量
- Tick=? ← 代表市场上这次更新意味着价格上涨还是下跌
Time of Sales (TOS)成交记录
举例:
Register?symbol=ZVZZT.NQ&feedtype=TOS & output=[bykey|bytype]
API将接受代码ZVZZT.NQ所有的成交记录的数据。更新的数据将被写入PPro8的登录目录的一个文档,文件名为:TOS_1_ZVZZT.NQ.log
TOS的消息必须包含代码这个参数
TOS的数据,每个代码单独写入一个文档。
每个TOS的更新,是一个按逗号分隔的数据行,栏目包括:
- LocalTime=09:30:15.375 ← 代表数据到达本地电脑的时间,按本地电脑的时间显示
- MarketTime=09:30:14.887 ← 代表市场数据更新的时间
- Type=1 ← 代表写入的截图的数据类型
- Price=8.63 ← 代表成交的价格
- Size=100 ← 代表成交的股数
- Source=17 ← 这是内部使用的报价来源的代码
- Condition=? ← 显示成交的条件标签
- Tick=? ← 代表这笔交易意味着价格上涨还是下跌
- MmId=C ← 代表成交发生的交易中心缩写
- SubMarketId= ← 代表成交中心的子版块的缩写
Type的数字各代表:
Type 0 = live feed实时数据
Type 1 = start of snapshot截屏开始
Type 2 = snapshot record截屏记录
Type 3 = end of snapshot截屏停止
举例:
LocalTime=21:32:59.193,MarketTime=00:00:00.000,Symbol=WBC.AX,Type=1,Price=0,Size=0,Source=0
LocalTime=21:34:52.322,MarketTime=11:33:15.929,Symbol=WBC.AX,Type=2,Price=34.445,Size=59,Source=0,Condition=?,Tick=?,Mmid=C,SubMarketId=
LocalTime=21:32:59.209,MarketTime=00:00:00.000,Symbol=WBC.AX,Type=3,Price=0,Size=0,Source=0
LocalTime=21:34:42.916,MarketTime=11:34:41.913,Symbol=WBC.AX,Type=0,Price=34.44,Size=64,Source=42,Condition=?,Tick=?,Mmid=A,SubMarketId=
完整的TOS的缩写表(Market Center市场中心缩写, Sub Market ID子版块缩写,和Sales Conditions成交条件缩写),可以在这里找到
Market Depth (L2)市场深度
举例:
Register?symbol=ZVZZT.NQ&feedtype=L2 & output=[bykey|bytype]
API将接收代码ZVZZT.NQ的Level 2的所有报价更新。这些更新将被写入PPro8登录目录的文档,文档名为:L2_1_ZVZZT.NQ.log
L2的数据必须包含代码这个参数。
L2的数据,每个代码分别写入一个文档。
每个Level 2的更新,是一个按逗号分隔的数据行,栏目包括:
- LocalTime=08:39:43.114 ← 代表数据到达本地电脑的时间,按本地电脑的时间显示
- MarketTime=08:39:42.601 ← 市场更新时间
- Mmid=ANON ← 代表本次更新的市场参与者代码MMID
- Side=B ← 代表更新的订单的方向
- Price=8.6 ← 代表更新的订单的价格
- Volume=100 ← 代表更新的订单的股数
- Depth=1 ← 代表订单的价位数
- SequenceNumber=27003 ← 这个序列号,是按每个市场参与者代码MMID、Price订单价格、和方向Side分配的,可以用来排除错乱的数据。
每一次的更新,要么 (a) 创建一个新的价位,要么 (b) 对指定的市场参与者代码MMID, 方向Side和价格Price组合作出更新。
举例:如果您当前有一个在ANON市场参与者代码中的400股,定价在每股8.6美元的买单,上面的例子将把ANON的8.6价位的买单股数调整到100股。
Market Depth Snapshot市场深度截图
当API在一个代码上注册Level 2的数据源的时候,它将首先获取一个截图。截图代表了这个代码目前的报价状态,并且将随着实时的更新消息不断更新。
截图的数据从Side=s开始。举例:
“LocalTime=08:37:31.908,MarketTime=00:00:00.000,Mmid=,Side=s,Price=0,Volume=0,Depth=0,SequenceNumber=0”.
所有截图的数据都显示SequenceNumber=0.
截图的数据从Side=e结束,举例:
“LocalTime=08:37:31.908,MarketTime=00:00:00.000,Mmid=,Side=e,Price=0,Volume=0,Depth=0,SequenceNumber=0”.
Imbalance (IMBALANCE)尾额数据
举例:
Register?region=1&feedtype=IMBALANCE & output=[bykey|bytype]
API将注册接收所有Region 1(NCSA区域)市场的尾额数据。数据将被写入PPro8登录目录的一个文档,文件名为:IMBLO_1_ALL.log
IMBALANCE尾额数据必须包括Region区域参数。
每一个Imbalance尾额数据更新,是一个由逗号隔开的数据行,栏目包括:
- LocalTime=15:57:15.113 ← 代表数据到达本地电脑的时间,按本地电脑的时间显示
- MarketTime=15:57:15.072 ← 代表市场的更新时间
- Side=S ← 代表尾额的方向
- Type=O ← 代表尾额的种类
- Status= ← 代表当前尾额的状态
- Symbol=LKQ.NQ ← 代表尾额的代码
- Price=32.875 ← 代表股票当前的价格
- Volume=3578 ← 代表尾额的订单股数
- Mmid=Q ← 代表尾额的市场 (Q=NASDAQ, N=NYSE, A=AMEX, T=Toronto, V=Venture).
- AuctionPrice=32.84 ← 代表理论的竞价价格
- ContinuousPrice=32.86 ← 代表连续交易的市场的股票报价
- PairedVolume=67428 ← 代表已经匹配好的订单的股数
每一个Imbalance的更新代表当前的代码上的尾额大小,原先的Imbalance数据可以忽略。
Order Status (OSTAT)订单状态
举例:
Register?region=1&feedtype=OSTAT & output=[bytype]
注意: OSTAT的注册只能用bytype。
API将注册接收Region1(NCSA区域)市场的订单状态Order Status (OSTAT)消息。数据将被写入到PPro8的登录文件夹的一个文档,文件名为:OSTAT_1_<userID>.log
OSTAT的数据必须包含Region这个参数。
每个Region创建一个文档。为了查看所有的订单状态更新 - 包括内部拒绝的订单,用户需要监控OSTAT 和 ORDEREVENT 日志。
每个OSTAT更新是由逗号分隔的数据行,栏目包括:
- LocalTime=09:35:34.237 ← 代表数据到达本地电脑的时间,按本地电脑的时间显示
- MarketDateTime=20131011-09:35:34.048 ← 代表市场的更新时间
- Currency=CAD ← 代表订单的货币种类
- Symbol=TD ← 代表订单的代码
- Gateway=2028 ← 代表订单发送的通道代码GatewayID
- Side=B ← 代表订单的方向
- OrderNumber=TESTTEST00000024M1713F3100000 ← 代表订单号码
- Price=92.72 ← 代表更新了的订单价格。新订单的话,就是订单价格,如果是订单成交/部分成交的消息,代表订单的成交价格
- Shares=100 ← 代表和这次更新有关的订单股数。新订单的话,就是订单的股数,如果是订单成交/部分成交消息,则是成交的股数
- Position=2 ← 代表这个订单相关的更新消息数。1就是第一条消息,2就是第二条消息
- OrderState=Filled ← 代表订单的状态
- MarketID=2 ← 代表订单发送去的市场
- CurrencyChargeGway=CAD ← 代表通道收取费用的币种
- ChargeGway=-0.31 ← 代表这次更新相关的通道费用
- CurrencyChargeAct=CAD ← 代表交易的手续费用的币种
- ChargeAct=0.011 ← 代表这次更新的手续费用
- CurrencyChargeSec=CAD ← 代表SEC和监管部门费用的币种
- ChargeSec=0 ← 代表这次更新的SEC和监管部门的费用
- CurrencyChargeExec=CAD ← 代表成交费用的币种
- ChargeExec=0.16 ← 代表这次更新的成交费用
- CurrencyChargeClr=CAD ← 代表清仓费用的币种
- ChargeClr=0.008 ← 代表这次更新的清仓费用
- OrderFlags=128 ← 代表订单祥光的标签,仅作内部使用,用来识别订单是通过PPro8还是API发送的
- CurrencyCharge=10 ← 内部参数。
- Account=1TESTOF001TNVTESTTESTCAD1 ← 代表和订单相关的资金账号
- InfoCode=255 ← 内部使用来追踪OSTAT的代码,无外部分析用途
- InfoText= LiqFlags=^Tag6888=20^Tag31=92.720^Tag9730=A ← 代表这次更新相关的其他信息
注意:如果OrderFlags 的值在128和255之间,它意味着订单是从API发出的。
用户可以用OSTAT log文件,加上ORDEREVENT log文件,来监控订单的状态,追踪订单成交和相关的费用。这个消息同时也被客户端用来更新Summary和HistoryLog窗口。
Order Event (ORDEREVENT)订单事件
举例:
Register?region=1&feedtype=ORDEREVENT & output=[bykey|bytype]
API将注册接收Region 1 (NCSA区域)市场的订单的事件消息。数据将写入PPro8登录文件夹,文件名为:ORDEREVENT_1_<userID>.log
ORDEREVENT订单事件的消息必须包括Region这个参数。
每个区域都有单独的文件。这个日志文件可以和OSTAT log文件一块,用来监控订单状态更新。ORDEREVENT log文件包含了内部拒绝的消息(例如:Buying Power不足,或者无法找到可以交易的股票),这些信息是OSTAT消息没有的。
ORDEREVENT log文件的主要用户是在一个订单没有在OSTAT记录中出现的时候,确认这个订单是内部拒绝的。
每个ORDEREVENT 更新是由逗号分隔的数据行,栏目包括:
- LocalTime=08:39:45.442 ← 代表数据到达本地电脑的时间,按本地电脑的时间显示
- MarketDateTime=20131025-08:39:45.208 ← 代表市场的更新时间
- EventMessageType=1 ← 代表事件的性质: 1=NewOrder新订单, 2=CancelOrder撤销订单, 3=ManualOrderConf手动订单修改, 4=OrderFlagsChange订单标签改变, 5=LastOrderEventType上次订单事件性质
- EventFlavour=2 ← 代表内部的订单状态: 1=Accepted订单接收, 2=Rejected订单拒绝, 3=PendingServer等待服务器, 4=NoConnection没有连接, 5=LastOrderEventType上次订单事件性质
- EventOriginatorId=1 ← 代表订单事件发出方 1=Client客户端, 2=OPC, 3=GS通道服务器, 4=SS程序订单服务器
- OriginatorSeqId=0 ← 代表订单事件发出方的订单事件序号
- Size=100 ← 代表订单的股数
- Price=861000000 ← 代表订单发送的价格。这里用PPro8内部的价格表达格式,要除以10的8次方(100000000)显示真实的价格
- OrderNumber=TESTTEST00000003M171401100000 ← 代表订单的号码
- InfoText= ← 代表订单事件的其他相关信息,例如拒绝理由
订单事件(ORDEREVENT)的性质解释如下:
- 0 NoOrderEventFlavour没有性质,
- 1 RequestPending - 报告命令对现有的订单没有造成任何变化
- 2 Accepted - 订单被市场接收
- 3 PartFill - 订单仍存在 (转成或者保持部分成交PartFilled的状态)
- 4 Filled - 订单不存在 (转成Filled订单成交状态)
- 5 Cancel - 订单不存在 (转成PartCancelled剩余订单撤销,或者Cancelled订单撤销状态)
- 6 RejectedOrderClosed - 命令被拒绝,订单号码不存在/无效
- 7 RejectedOrderOpen - 命令被拒绝,但是订单仍然在市场上
- 8 RejectedNoConnection - 命令被拒绝,网络问题
- 9 CancelReplace - (订单状态不变,要么是Accepted订单接收,要么是PartFilled订单部分成交)
- 10 Holding - 等待,PPro8在等待一个订单事件,然后才会把订单发出 (状态→Holding)
- 11 LastOrderEventFlavour 上一次订单事件的性质
注意: 当价格和订单股数在OPC服务器检查的时候,将显示一个无效的数值。我们预计将在下一个OSM订单状态管理服务器推出时解决这个问题。如果您认为这可能影响您的交易,用户可以很容易地筛选出这些数值,因为它的值是 “-1”。说明中也会注明:'New order, OPC Pending'新订单,OPC等待。
PProAPI Index to Order # (PAPIORDER)API的订单号码目录
举例:
Register?region=1&feedtype=PAPIORDER & output=[bykey|bytype]
API将注册接收每次订单申请相关的订单号码的信息。数据将写入PPro8的登录文件夹的文档,文件名为: PAPIORDER_1_<userID>.log
PAPIORDER的消息必须包含Region这个参数
这个Log文件的用途是让用户可以限制'GetOrderNumber'的申请命令的发送次数,而通过程序监控Log文件中的这个信息。
每个PAPIORDER更新是由逗号隔开的数据行,栏目包括:
- LocalTime=10:10:07.006 ← 代表数据到达本地电脑的时间,按本地电脑的时间显示
- PProApiIndex=3 ← 代表和一个XML格式发送的ExecuteOrder事件有关的申请号码RequestID
- OrderNumber=DV10600503000002M171407100000 ← 代表和申请号码RequestID相关的订单号码
Lv1 & Tos
这些功能减弱了,但是仍然提供,利用TOS和L1命令。
GetLv1获取Level 1数据
用GetLv1命令获取Level 1数据的截图
句法:
GetLv1?symbol=<symbol.extension>
举例:
GetLv1?symbol=TD.TO
这将得到以下反馈:
<Level1Data Message=“L1DB” MarketTime=“15:22:47.100” Symbol=“TD.TO” BidPrice=“55.4600” AskPrice=“55.4700” BidSize=“11000” AskSize=“700” Volume=“798304” MinPrice=“55.1100” MaxPrice=“55.5000” LowPrice=“55.1100” HighPrice=“55.5000” FirstPrice=“55.4000” OpenPrice=“55.4000” ClosePrice=“55.3400” MaxPermittedPrice=“0” MinPermittedPrice=“0” LotSize=“100” LastPrice=“55.4600” InstrumentState=“Open” AssetClass=“Equity” TickValue=“0” TickSize=“0.00500000” Currency=“CAD” Tick=“D”/>
这是Level 1数据的更新,由逗号隔开的数据行,栏目包括:
- Volume=798304 ← 代表代码当天的成交量
- LowPrice=55.1100 ← 代表代码当天的最低价
- HighPrice=55.5000 ← 代表代码当天的最高价
- OpenPrice=55.4000 ← 代表代码当天的开盘价
- ClosePrice=55.3400 ← 代表代码当天的收盘价
- MaxPermittedPrice=0 ← 代表代码当天可以允许的最高价
- MinPermittedPrice=0 ← 代表代码当天可以允许的最低价
- LotSize=100 ← 代表最小订单股数
- LastPrice=55.1100 ← 代表最近一次成交价格
- InstrumentState=Open ← 代表代码的状态
- AssetClass=Equity ← 代表代码的资产类别
- TickValue=0 ← 代表最小跳价单位代表的金额
- TickSize=0.00500000 ← 代表最小跳价单位
- Currency=CAD ← 代表代码的交易币种
GetTransactions获取交易记录
用GetTransactions命令获取所有用户的订单/执行记录。该命令不再返回Market参数,而是在返回的Symbol参数中附带市场代码,例如ZVZZT.NQ。
句法:
GetTransactions?user=<userId>
举例:
GetTransactions?user=GODOT
反馈:
<Trader name=“GODOT”> <Region id=“1” name=“NCSA”> <Transaction Message=“OrderStatus” MarketDateTime=“20141121-09:25:10.252” Currency=“USD” Symbol=“BRK/A.NY” Gateway=“1” Side=“B” OrderNumber="GODOT___00000001M172461100000" Price="0.01" Shares="1" Position="2" OrderState="Partially Filled" MarketID="18" CurrencyChargeGway="USD" ChargeGway="0.004" CurrencyChargeAct="UNK" ChargeAct="0" CurrencyChargeSec="UNK" ChargeSec="0" CurrencyChargeExec="UNK" ChargeExec="0" CurrencyChargeClr="UNK" ChargeClr="0" OrderFlags="8" CurrencyCharge="0" Account="1ORBX00001OR1GODOT___USD1" InfoCode=“0” InfoText=“Great stock. Great Price”/> </Region> </Trader>
订单相关的命令
API为用户提供几个和订单互动的方法。要了解更多的信息,请访问API的主页 (http://localhost:8080)
ExecuteOrder执行订单
重要
当您准备用API来发送订单时,您要按照下面的步骤操作:
1. 用热键设置工具为订单设置热键
2. 在报价窗口,调出订单编辑器OrderEditBox
3. 注意在订单编辑器中的栏目OrderEditBox。您要用这些栏目来定义通过API发送的订单命令参数。
ExecuteOrder命令有一系列的参数,根据要发送的订单类型不同您需要提供这些参数的值:
- symbol=<symbol.ext>
- limitprice=<float> (必须是正数)
- ordername=<从热键设置工具中复制粘贴>
- shares=<int> (必须是正整数)
- priceadjust=<float> (可以是正数也可以是负数)
- stopprice=<float> (必须是正数)
- pegdifference=<float>
- displaysize=<int> (必须是正数)
- displayrange=<int>
- minexecsize=<int> (必须是正数)
句法:
ExecuteOrder?symbol=<symbol.ext> & limitprice=<float> & ordername=<copied from KeyboardSetup> & shares=<int> & priceadjust=<float> & stopprice=<float> & pegdifference=<float> & displaysize=<int> & displayrange=<int> & minexecsize=<int>
举例:
ExecuteOrder?symbol=BB.TO&limitprice=6.90&ordername=TSX Buy SweepSOR Limit ANON DAY Reserve&shares=1000&displaysize=100
这个例子将发送一个Reserve(部分隐藏)订单到TSX通道,订价为限价每股6.90加元,买入1000股(显示100股)。
GetOstats
ExecuteBasketOrder执行一篮子订单
用这个命令发送一篮子订单 (在PPro8客户端设置好的)。
句法:
ExecuteBasketOrder?basketname=<basketName>
举例:
ExecuteBasketOrder?basketname=basket1
ExecuteListOrder执行列表订单
句法:
ExecuteListOrder?symbol=<symbol.ext>&orderlistname=<orderListName>&shares=<int>
举例:
ExecuteListOrder?symbol=ZVZZT.NQ&orderlistname=myList&shares=100
这个命令将把'myList'订单列表中的订单依次按每个订单100股ZVZZT.NQ发送到市场。
CancelOrder撤销订单
CancelOrder 命令让用户可以完成原先可以通过报价窗口按键完成的撤单功能。
句法:
CancelOrder?type=ordernumber|all|oldest|newest|closest|furthest & ordernumber=<orderNumber> & symbol=<symbol.ext> & side=order|bid|offer
举例:
CancelOrder?type=all&symbol=ZVZZT.NQ
这个命令将撤销所有ZVZZT.NQ已经被接受的订单。
OrderCancelReplace订单撤销/取代
举例:
OrderCancelReplace?ordernumber=<orderNumber> & shares=target number of shares
这个命令修改指定的订单的股数。这个命令只能用来降低订单的股数。
GetOrderNumber获取订单号码
这个命令将让用户可以获取通过ExecuteOrder命令发送的请求中相关的订单号码。
注意: 新推出PAPIORDER数据源类型后,用户也可以仅仅通过那个命令获得各个Region区域的文档来获得这个实时的信息,而不需要不停地从网路服务器读取。
句法:
GetOrderNumber?requestid=<requestID>
举例:
GetOrderNumber?requestid=3
这个命令将返回申请号码3对应的订单号码。
GetOrderState获取订单状态
重要: 我们已经发现GetOrderState有一个问题,并且正在调查。在此期间,请通过观察OSTAT 和 OrderEvent 数据源了解订单信息。
这个命令将让用户可以获取订单当前的状态。
注意: 随着OSTAT 和 OrderEvent 数据源类型的推出,用户也可以通过观察这两个命令产生的文档来获取实时的数据,而不需要不断地从网络服务器获取数据。
句法:
GetOrderState?ordernumber=<order#>
举例:
GetOrderState?ordernumber=GODOT04503000008M1711F7000000
这个命令将获得订单GODOT04503000008M1711F7000000当前的状态
以下数字代表的订单状态将返还。数字代表的状态分别为:
- 0 = eUninitialised\\没有命令
- 1 = eHolding, //!< Holding 等待(盘前订单 - 尚未发送到市场)
- 2 = ePending, //!< pre accepted / rejected 提前接收/拒绝(盘前订单 - 发送给了市场,没有收到回复)
- 3 = eAccepted, //!< Accepted 订单接收(订单存在)
- 4 = eAP, //!< Part Filled 订单部分接收(订单存在)
- 5 = eAPC, //!< Part Cancelled 剩余订单撤销(终极 eAP)
- 6 = eAPF, //!< Multi Filled 订单多次成交(终极 eAP)
- 7 = eAF, //!< Filled 订单成交(终极 eA)
- 8 = eAC, //!< Cancelled 订单撤销(终极 eA)
- 9 = eRejected, //!< Rejected 订单被拒绝
- 10 = eJunked, //!< Junked 订单作废
GetOpenOrders获得已经接收的订单
举例:GetOpenOrders?
这个命令返回订单的状态给用户。包括下面的几种状态:
- Accepted已接受
- Rejected已拒绝
- Cancelled已撤销
- Holding等待
仓位相关的命令
GetOpenPositions获得公开仓位
用GetOpenPositions命令获取用户所有的当前仓位。该命令不再返回Market参数,而是在返回的Symbol参数中附带市场代码,例如ZVZZT.NQ。
举例:
GetOpenPositions?user=USERID
这个命令将反馈当前的所有仓位状态给用户。
Flatten平仓
句法:
Flatten?symbol=<symbol.extension>
举例:
Flatten?symbol=ZVZZT.NQ
这个指令将发送平仓命令,为用户在指定的代码上的仓位平仓。
也可以用于多个代码
举例:
Flatten?symbol=ZVZZT.NQ,ZWZZT.NQ,ZXZZT.NQ
用户也可以用下面的命令平掉所有的仓位
举例:
Flatten
Get (Summary)获取概览
句法:
Get?type=tool&tool=<summary instance>&key=<layer & row combination>
举例:
Get?type=tool&tool=Summary_1&key=NCSA Equity^GODOT^F.NY
这个命令将输出一个CSV文档,文件名为 <用户名>_<工具名>.log。本例中将把交易员GODOT的Summary_1工具中,按Trader:Symbol层设置显示的在F.NY上的仓位输出。