Skip to main content

账户与交易

账户信息查询

获取已登入账户列表-getaccountlist

accoutlist=api.getaccountlist()
print(accoutlist)

获取已登入账户列表-getgroupaccount

grouplist=api.getgroupaccount()
print(grouplist)

获取账户资金信息-getaccmargin

参数 类型 默认 注释
basecurrency基币 bool True 默认只返回基础币别资金信息,填False时,返回所有币别资金信息
if accoutlist:
    print(api.getaccmargin(accoutlist[0]['AccMask']))

订阅账户资金信息-submargin

订阅资金信息后,实时资金信息变动会通过onmargin(self,accmask,data)返回数据

参数 类型 默认 注释
basecurrency基币 bool True 默认只订阅基础币别资金信息,填False时,返回所有币别资金信息
api.submargin()

获取账户持仓-getposition

print(api.getposition("CTP_NHGPQQ_SIM-8050-90096859"))

订阅账户持仓-subposition

订阅持仓信息后,实时持仓信息变动会通过事件onposition(self,accmask,data)返回数据

api.subposition()

获取期权持仓监控-getpositionmoniter

print(api.getpositionmoniter())

订阅期权持仓监控-subpositionmoniter

订阅期权持仓监控后,实时期权持仓监控信息变动会通过事件onpositionmoniter(self,data)返回数据

api.subpositionmoniter()

获取当天全部委托-getorderreport

print(api.getorderreport())

获取当天全部挂单,尚未成交的挂单-getactiveorder

print(api.getactiveorder())

获取当天全部成交回报-getfilledreport

filled=api.getfilledreport()
print(len(filled),"  ",filled)

获取当天全部成交回报明细-getdetailfilledreport

detailfilled=api.getdetailfilledreport()

组合合约操作

查询组合报单记录-getcombinationorder

comborderreport=api.getcombinationorder(strAccountMask)
print(comborderreport)

查询组合持仓-getcombposition

combposition=api.getcombposition(strAccountMask)
print(combposition)

订阅组合持仓-subcombposition

订阅组合持仓信息后,实时组合持仓信息变动会通过事件oncombposition(self,accmask,data)返回数据

api.api.subcombposition()

拆分组合持仓-optcombsplit

参数 类型 默认 注释
Account账户 string "CTP_NHGPQQ_SIM-8050-90096859"
Symbol组合持仓合约代码 string "TC.O.SSE.510050.202303.C.2.65&TC.O.SSE.510050.202303.C.2.7"
Quantity拆分数量 int 1
CombinationType组合类型 int 1
OptCombID组合持仓ID string "2023020300003226"
api.optcombsplit(strAccountMask,combposition[0]['Symbol'],combposition[0]['Quantity'],combposition[0]['CombinationType'],combposition[0]['OptCombID'])

建组合持仓-optcomb

参数 类型 默认 注释
Account账户 string "CTP_NHGPQQ_SIM-8050-90096859"
SymbolA组合A合约代码 string "TC.O.SSE.510050.202303.C.2.65"
SymbolB组合B合约代码 string "TC.O.SSE.510050.202303.C.2.7"
Quantity组合数量 int 1
CombinationType组合类型 int //CombinationType
1:认购牛市价差
2:认沽熊市价差
3:认沽牛市价差
4:认购熊市价差
5:跨式空头or期权跨式(大商所)
6:宽跨式空头or期权宽跨式(大商所)
7:认购期权保证金转备兑
8:认购期权备兑转保证金
9:期货同合约对锁(大商所)
10:期货跨期套利(大商所)
11:期货跨品种(大商所)
12:卖出期货期权(大商所)
13:买入期货期权(大商所)
14:期权同品种对锁(大商所)
15:日历日价差大商所)
api.optcomb(strAccountMask,'TC.O.SSE.510050.202303.C.2.65','TC.O.SSE.510050.202303.C.2.7',1,4)

委托单操作

新增委托单-neworder

api.neworder(OrderStruct)

  • 下单参数
字段 类型 默认 注释
Account string 下单账户
BrokerID string 账户的 BrokerID
Symbol string 下单合约
Side OrderSide 买卖别 (复式单为整体买卖方向) 1:Buy 2:Sell
OrderQty int 下单数量
OrderType OrderType 1 : Market 市价单
2 : Limit 限价单
3 : Stop 停损单
4 : StopLimit 停损限价单
5 : 追踪停损价
6 : 追踪停损限价
7 : 触价发市价单
8 : 触价发limit限价单
9 : 追踪限价
10 : 对方价
11 : 本方价
15: 中间价
20 : 最优价
21 : 最优价转限价 (BSTL)
22 : 五档市价 (5LvlMKT)
23 : 五档市价转限价 (5LvlMTL)
24 : 市价转限价 (MTL)
25 : 一定范围市价
TimeInForce TimeInForce 0 : None None
1 : ROD 日内有效
2 : IOC 立即成交否则取消
3 : FOK 全部成交否则取消
PositionEffect PositionEffect 0 : 开仓
1 : 平仓
2 : 平今
3 : 平昨
4 : 自动判断开平
10 : 备兑开仓
11 : 备兑平仓
SymbolA string 复式单脚1商品TCore代码
SymbolB string 复式单脚2商品TCore代码
Price float 0 委托价格
or
字段 + or - 价格
字段 + or - 跳数T(加减跳 大写的T)
Ex : ASK+1T,ASK+2T , BID-2T
字段為固定字,可为 LAST or BID or ASK or FILLED
FILLED为OTO, OTOCO使用, 其他单不可使用FILLED
ex. FILLED-150000000000
StopPrice float 0 停损价
or
字段 + or - 价格
字段 + or - 跳数T(加减几跳 大写的T)
Ex : ASK+1T,ASK+2T , BID-2T
字段为固定字, 可为LAST or BID or ASK or MID or FILLED
FILLED为OTO, OTOCO使用, 其他单不可使用FILLED
Side1 float 0 买卖别(复式单脚1) 1:Buy 2:Sell
Side2 float 0 买卖别(复式单脚2) 1:Buy 2:Sell
ContingentSymbol string 追踪Symbol
仅Synthetic = 1
OrderType=7 或 OrderType=8使用
TrailingAmount float 0 仅Synthetic = 1且OrderType=5 或 OrderType=6使用
TrailingType=1时, TrailingAmount为百分比
TrailingType=2时, TrailingAmount为点数
TrailingType=3时, TrailingAmount为几跳
TrailingField float 0 仅Synthetic = 1且OrderType=7 或 OrderType=8使用
触发价
or 字段 + or - 价格
字段 + or - 跳数T(加减几跳 大写的T)Ex : ASK+1T,ASK+2T , BID-2T
字段为固定字, 可为LAST or BID or ASK or FILLED FILLED为OTO, OTOCO使用, 其他单不可使用FILLED
TrailingType float 0 仅Synthetic = 1且OrderType=5 或 OrderType=6使用
0 : None
1 : 依价格
2 : 依TrailingPrice百分比
3 : 依TickSize几跳
TouchCondition float 0 仅Synthetic = 1且OrderType=7 或 OrderType=8使用
0 : touch or 穿价
1 : Greater
2 : GreaterEqual
3 : Equl
4 : LessEqual
5 : Less
TouchField float 0 仅Synthetic = 1且OrderType=7 或 OrderType=8使用
0 : None
1 : Last
2 : Bid
3 : Ask
TouchPrice string 仅Synthetic = 1且OrderType=7 或 OrderType=8使用
触发价
or 字段 + or - 价格
字段 + or - 跳数T(加减几跳 大写的T)
Ex : ASK+1T,ASK+2T , BID-2T
字段为固定字, 可为LAST or BID or ASK or FILLED FILLED为OTO, OTOCO使用, 其他单不可使用FILLED
Synthetic float 0 0 : None
1 : Synthetic
GroupID string GroupID or OCOID or OTOID or OTOCOID
GroupType float 0 0 : None
1 : Normal
2 : OCO
3 : OTO
4 : OTOCO
GrpAcctOrdType float 0
ChasePrice string 追价 格式为[每次增加价格or跳数|追价几次|每次追价几秒|最后下市价或删单(M or C)]
PS:增加价格若为跳数尾端带入T,EX:1T(1跳)
Strategy string 策略名称
UserKey1 string 将可在回报的UserKey1字段得到相同的字符串
SlicedPriceField float 0 0 : None
1 : Last
2 : Bid
3 : Ask
4 : 对方价
5 : 本方价
SlicedTicks float 0 SlicedPriceField 非零使用
TickSize几跳
SlicedType float 0 不支援群组单
0 : None
1 : Iceberg
2 : TimeSliced
3 : VolumeSliced
4 : AllSliced
5 : AllSliced After PriceTrigger
DiscloseQty float 0 逐笔揭露数量
Variance float 0 逐笔变动比例% 仅SlicedType =1 或 SlicedType =2或 SlicedType =3使用
Interval float 0 仅SlicedType =2或 SlicedType =3使用 SlicedType =2 : 间隔时间,ms SlicedType =3 : 间隔成交量
LeftoverAction float 0 仅SlicedType =2或 SlicedType =3使用
0 : Leave 继续挂着(默认)
1 : Merge 取消该笔,剩余数量加入下笔下单
2 : Market 转市价单
SelfTradePrevention float 0 0 : 或是不带入该参数,不启用自成交侦测
1 : 所有委托时间条件带IOC用来规避自成交
2 : 所有委托时间条件带FOK用来规避自成交
3 : 侦测到自成交时,直接拒绝送出委托,并提示委托错误
ExtCommands string 延伸下单参数
一. 下单前 将平仓挂单都删单 CancelCloseWorking=1 or 2
平净仓 CancelCloseWorking=2
全平
1. stock CancelCloseWorking=2
2. future/option
a. 多空并存 CancelCloseWorking=1
b. 只有单边 CancelCloseWorking=2
二. 下单速度自适应於交易安全设定值
FitOrderFreq=1
TradeType float 0 0 : Normal
1 : Purchase on Margin
2 : ShortSell
OrderStruct.Symbol="TC.F.CZCE.SR.HOT"
OrderStruct.BrokerID=accoutlist[0]['BrokerID']
OrderStruct.Account=accoutlist[0]['Account']
OrderStruct.Price=4044
#OrderStruct.StopPrice=4044
OrderStruct.TimeInForce=TimeInForce.IOC
OrderStruct.Side=OrderSide.Sell
OrderStruct.OrderType=OrderType.Limit
OrderStruct.OrderQty=100
OrderStruct.PositionEffect=PositionEffect.Auto
OrderStruct.Synthetic=0
OrderStruct.SelfTradePrevention=3
ordkey,msg=api.neworder(OrderStruct)
print(ordkey,msg)
if ordkey!=None:
	while True:
	if api.getorderinfo(ordkey):
		print("#####################新增委托:",api.getorderinfo(ordkey)[-1]['ReportID'])#,TCoreAPI.QryReport()[-1]['ReportID'])
		break

改单-replaceorder

api.replaceorder(api.getorderinfo(ordkey)[-1]['ReportID'],price=839)

删单-cancelorder

api.cancelorder(api.getorderinfo(ordkey)[-1]['ReportID'])

价差交易-newspreadorder

orderinfo=SpreadOrderStruct(
# BrokerIDA="CTP_SIMNOWSE662",
# BrokerIDB="CTP_SIMNOWSE662",
# AccountA="9999-063845",
# AccountB="9999-044491",
# PositionEffectA="4",
# PositionEffectB="4",
SymboolName="aa",
Side="1",
Price="6000",
OrderQty="1"
)
rid=api.newspreadorder(orderinfo)
print(rid)
  • 下单参数 -SpreadOrderStruct
字段 类型 默认 注释
SymboolName string 必填 价差策略名称
Side string 必填 下单方向,买卖别 1:Buy 2:Sell
OrderQty string 必填 下单数量
Price string 必填 下单价差价格
BrokerIDA string "" 价差A腿账号的BrokerID,不填时自动带入UI设定账号
BrokerIDB string "" 价差B腿账号的BrokerID,不填时自动带入UI设定账号
BrokerIDC string "" 价差C腿账号的BrokerID,不填时自动带入UI设定账号
BrokerIDD string "" 价差D腿账号的BrokerID,不填时自动带入UI设定账号
BrokerIDE string "" 价差E腿账号的BrokerID,不填时自动带入UI设定账号
AccountA string "" 价差A腿账号的Account,不填时自动带入UI设定账号
AccountB string "" 价差B腿账号的Account,不填时自动带入UI设定账号
AccountC string "" 价差C腿账号的Account,不填时自动带入UI设定账号
AccountD string "" 价差D腿账号的Account,不填时自动带入UI设定账号
AccountE string "" 价差E腿账号的Account,不填时自动带入UI设定账号
MaxOrderQty string "0" 不填时自动带入UI设定
OrderInterval string "" 不填时自动带入UI设定
PositionEffect string "" 不填时自动带入UI设定
PositionEffectA string "" 价差A腿开平,不填时自动带入UI设定账号,默认为自动单
PositionEffectB string "" 价差B腿开平,不填时自动带入UI设定账号,默认为自动单
PositionEffectC string "-1" 价差C腿开平,不填时自动带入UI设定账号
PositionEffectD string "-1" 价差D腿开平,不填时自动带入UI设定账号
PositionEffectE string "-1" 价差E腿开平,不填时自动带入UI设定账号
TakeProfit string ""
StopLoss string ""
TrailingAmount string ""
Consecutive string ""
OCOsUpTicks string ""
OCOsDownTicks string ""
OCOsTime string ""
StartTime string "" 设定价差触发的时间段的起始时间
EndTime string "" 设定价差触发的时间段的结束时间
ActiveChasePrice ""
ChasePrice string "" 追单参数,不填时自动带入UI设定追单信息
TransferPosType string ""
TransferBasis string ""
GroupID string ""
GroupType string ""
PosSizingID string ""
ExtCommands string ""
Strategy string ""
UserKey1 string ""
UserKey2 string ""

实时交易事件

实时交易事件需要创建继承自TradeEvent的子类,并重写TradeEvent回调方法

交易API连线成功通知

当交易API连线成功被建立时,该事件被触发

    def onconnected(self, strapi):
        pass

交易API断线通知

当交易API断线时,该事件被触发

    def ondisconnected(self, strapi):
        pass

其他交易接口事件通知

    def onsystemmessage(self,MsgType, MsgCode, MsgString):
        pass

交易账户状态更新事件

当连线被建立时,如果已有交易账户时登入状态,或者有交易账户登出或者登入,该事件被触发

#资金账户列表,当有资金账户登出或者登入时
def onaccountlist(self,data,count):
	print(data,count)

群组账户状态更新事件

当连线被建立时,如果群组账户新增更新或删除,或者群组账户中的实际账户状态发生变化时,该事件被触发

    def ongroupaccount(self,grouplist,nCount):
        pass

实时委托信息

    def onordereportreal(self,data):
        print(data)

实时成交信息

    def onfilledreportreal(self,data):
        print(data)

账户登出登入时委托资料需要清理通知

    def onorderreportreset(self):
        print("onorderreportreset")

期权持仓监控信息

    def onpositionmoniter(self,data):
        print(data)

账户资金信息更新

    def onmargin(self,accmask,data):
        pass

持仓更新

    def onposition(self,accmask,data):
        pass

期权组合持仓更新

    def oncombposition(self,accmask,data):
        pass

组合报单更新

    def oncombinationorder(self,accmask,data):
        pass