1)资金账号状态变化主推 account_callback()
*注:成交回报实时主推函数仅在实盘运行模式下生效。
# 1)资金账号状态变化主推 account_callback()
用法: account_callback(ContextInfo, accountInfo)
释义: 当资金账号状态有变化时,运行这个函数
参数:
ContextInfo:特定对象
accountInfo:资金账号对象,可对应查看[5.4. 附录4 交易函数内含属性说明](#5.4. 附录4 交易函数内含属性说明)
返回: 无
示例:
```py
def init(ContextInfo):
# 设置对应的资金账号
ContextInfo.set_account('6000000058')
def handlebar(ContextInfo):
pass
def account_callback(ContextInfo, accountInfo):
print('accountInfo')
print(accountInfo.m_strStatus) # m_strStatus 为资金账号的属性之一,表示资金账号的状态
```
## 5.4.1. account 资金账号对象
m_dMaxMarginRate: 保证金比率,股票的保证金率等于 1,股票不需要
m_dFrozenMargin: 冻结保证金,外源性,股票的保证金就是冻结资金,股票不需要
m_dFrozenCash: 冻结金额,内外源冻结保证金和手续费四个的和
m_dFrozenCommission: 冻结手续费,外源性冻结资金源
m_dRisk: 风险度,风险度,冻结资金 / 可用资金,股票不需要
m_dNav: 单位净值
m_dPreBalance: 期初权益,股票不需要,也叫静态权益
m_dBalance: 总资产,动态权益,即市值
m_dAvailable: 可用金额
m_dCommission: 手续费,已经用掉的手续费
m_dPositionProfit: 持仓盈亏
m_dCloseProfit: 平仓盈亏,股票不需要
m_dCashIn: 出入金净值
m_dCurrMargin: 当前使用的保证金,股票不需要
m_dInitBalance: 初始权益
m_strStatus: 状态
m_dInitCloseMoney: 期初平仓盈亏,初始平仓盈亏
m_dInstrumentValue: 总市值,合约价值,合约价值
m_dDeposit: 入金
m_dWithdraw: 出金
m_dPreCredit: 上次信用额度,股票不需要
m_dPreMortgage: 上次质押,股票不需要
m_dMortgage: 质押,股票不需要
m_dCredit: 信用额度,股票不需要
m_dAssetBalance: 证券初始资金,股票不需要
m_strOpenDate: 起始日期,股票不需要
m_dFetchBalance: 可取金额
m_strTradingDate: 交易日
m_dStockValue: 股票总市值,期货没有
m_dLoanValue: 债券总市值,期货没有
m_dFundValue: 基金总市值,包括ETF和封闭式基金,期货没有
m_dRepurchaseValue: 回购总市值,所有回购,期货没有
m_dLongValue: 多单总市值,现货没有
m_dShortValue: 单总市值,现货没有
m_dNetValue: 净持仓总市值,净持仓市值 = 多 - 空
m_dAssureAsset: 净资产
m_dTotalDebit: 总负债
m_dEntrustAsset: 可信资产,用于校对
m_dInstrumentValueRMB: 总市值(人民币),沪港通
m_dSubscribeFee: 申购费,申购费
m_dGoldValue: 库存市值,黄金现货库存市值
m_dGoldFrozen: 现货冻结,黄金现货冻结
m_dMargin: 占用保证金,维持保证金
m_strMoneyType: 币种
m_dPurchasingPower: 购买力,盈透购买力
m_dRawMargin : 原始保证金
m_dBuyWaitMoney: 买入待交收金额(元),买入待交收
m_dSellWaitMoney: 卖出待交收金额(元),卖出待交收
m_dReceiveInterestTotal: 本期间应计利息
m_dRoyalty: 权利金收支,期货期权用
m_dFrozenRoyalty: 冻结权利金,期货期权用
m_dRealUsedMargin: 实时占用保证金,用于股票期权
m_dRealRiskDegree: 实时风险度
2)账号委托状态变化主推 order_callback()
# 2)账号委托状态变化主推 order_callback()
用法: order_callback(ContextInfo, orderInfo)
释义: 当账号委托状态有变化时,运行这个函数
参数:
ContextInfo:特定对象
orderInfo:委托账号对象,可对应查看[5.4. 附录4 交易函数内含属性说明](#5.4. 附录4 交易函数内含属性说明)
返回: 无
示例:
```py
def init(ContextInfo):
# 设置对应的资金账号
ContextInfo.set_account('6000000058')
def handlebar(ContextInfo):
pass
def order_callback(ContextInfo, orderInfo):
print('orderInfo')
```
## 5.4.2. order 委托对象
m_strExchangeID: 证券市场
m_strExchangeName: 交易市场
m_strProductID: 品种代码
m_strProductName: 品种名称
m_strInstrumentID: 证券代码
m_strInstrumentName: 证券名称,合约名称
m_nTaskId:任务号
m_strOrderRef: 内部委托号,下单引用等于股票的内部委托号
m_nOrderPriceType: EBrokerPriceType 类型,例如市价单、限价单
m_nDirection: EEntrustBS 类型,操作,多空,期货多空,股票买卖永远是 48,其他的 dir 同理
m_nOffsetFlag: EOffset_Flag_Type 类型,操作,期货开平,股票买卖其实就是开平
m_nHedgeFlag: EHedge_Flag_Type 类型,投保
m_dLimitPrice: 委托价格,限价单的限价,就是报价
m_nVolumeTotalOriginal: 委托量,最初委托量
m_nOrderSubmitStatus: EEntrustSubmitStatus 类型,报单状态,提交状态,股票中不需要报单状态
m_strOrderSysID: 合同编号,委托号
m_nOrderStatus: EEntrustStatus,委托状态
m_nVolumeTraded: 成交数量,已成交量
m_nVolumeTotal: 委托剩余量,当前总委托量,股票的含义是总委托量减去成交量
m_nErrorID: 状态信息
m_dFrozenMargin: 冻结金额,冻结保证金
m_dFrozenCommission: 冻结手续费
m_strInsertDate: 委托日期,报单日期
m_strInsertTime: 委托时间
m_dTradedPrice: 成交均价(股票)
m_dCancelAmount: 已撤数量
m_strOptName: 买卖标记,展示委托属性的中文
m_dTradeAmount: 成交金额,成交额,期货 = 均价 * 量 * 合约乘数
m_eEntrustType: EEntrustTypes,委托类别
m_strCancelInfo: 废单原因
m_strUnderCode: 标的证券代码
m_eCoveredFlag: ECoveredFlag,备兑标记 ‘0’ - 非备兑,’1’ - 备兑
m_strCompactNo: 合约编号
m_strRemark:投资备注
3)账号成交状态变化主推 deal_callback()
# 3)账号成交状态变化主推 deal_callback()
用法: deal_callback(ContextInfo, dealInfo)
释义: 当账号成交状态有变化时,运行这个函数
参数:
ContextInfo:特定对象
dealInfo:资金账号对象,可对应查看[5.4. 附录4 交易函数内含属性说明](#5.4. 附录4 交易函数内含属性说明)
返回: 无
示例:
```py
def init(ContextInfo):
# 设置对应的资金账号
ContextInfo.set_account('6000000058')
def handlebar(ContextInfo):
pass
def deal_callback(ContextInfo, dealInfo):
print('dealInfo')
```
## 5.4.3. deal 成交对象
m_strExchangeID: 证券市场,交易所代码
m_strExchangeName: 交易市场,交易所名称
m_strProductID: 品种代码
m_strProductName: 品种名称
m_strInstrumentID: 证券代码
m_strInstrumentName: 证券名称
m_strTradeID: 成交编号
m_nTaskId:任务号
m_strOrderRef: 下单引用,等于股票的内部委托号
m_strOrderSysID: 合同编号,报单编号,委托号
m_nDirection: EEntrustBS,买卖方向
m_nOffsetFlag: EOffset_Flag_Type,开平,股票的买卖
m_nHedgeFlag: EHedge_Flag_Type,投保,股票不需要
m_dPrice: 成交均价
m_nVolume: 成交量,期货单位手,股票做到股
m_strTradeDate: 成交日期
m_strTradeTime: 成交时间
m_dComssion: 手续费
m_dTradeAmount: 成交额,期货 = 均价 * 量 * 合约乘数
m_nOrderPriceType: EBrokerPriceType 类型,例如市价单、限价单
m_strOptName:买卖标记,展示委托属性的中文
m_eEntrustType: EEntrustTypes 类型,委托类别
m_eFutureTradeType: EFutureTradeType 类型,成交类型
m_nRealOffsetFlag: EOffset_Flag_Type 类型,实际开平,主要是区分平今和平昨
m_eCoveredFlag: ECoveredFlag类型,备兑标记 ‘0’ - 非备兑,’1’ - 备兑
m_nCloseTodayVolume: 平今量,不显示
m_dOrderPriceRMB: 委托价格(人民币),目前用于港股通
m_dPriceRMB: 成交价格(人民币),目前用于港股通
m_dTradeAmountRMB:成交金额(人民币),目前用于港股通
m_dReferenceRate: 汇率,目前用于港股通
m_strXTTrade: 是否是本终端交易
m_strCompactNo: 合约编号
m_dCloseProfit: 平仓盈亏 ,目前用于外盘
m_strRemark:投资备注
4)账号持仓状态变化主推 position_callback()
# 4)账号持仓状态变化主推 position_callback()
用法: position_callback(ContextInfo, positonInfo)
释义: 当账号持仓状态有变化时,运行这个函数
参数:
ContextInfo:特定对象
positonInfo:资金账号对象,可对应查看[5.4. 附录4 交易函数内含属性说明](#5.4. 附录4 交易函数内含属性说明)
返回: 无
示例:
```py
def init(ContextInfo):
# 设置对应的资金账号
ContextInfo.set_account('6000000058')
def handlebar(ContextInfo):
pass
def position_callback(ContextInfo, positonInfo):
print('positonInfo')
```
## 5.4.4. position 持仓对象
m_strExchangeID: 证券市场
m_strExchangeName: 市场名称
m_strProductID: 品种代码
m_strProductName: 品种名称
m_strInstrumentID: 证券代码
m_strInstrumentName: 证券名称
m_nHedgeFlag: EHedge_Flag_Type 类型,投保 ,股票不需要
m_nDirection: EEntrustBS 类型,买卖 ; 股票不需要
m_strOpenDate: 成交日期
m_strTradeID: 成交号,最初开仓位的成交
m_nVolume: 当前拥股,持仓量
m_dOpenPrice: 持仓成本
m_strTradingDay: 在实盘运行中是当前交易日,在回测中是股票最后交易过的日期
m_dMargin: 使用的保证金,历史的直接用 ctp 的,新的自己用成本价 * 存量 * 系数算,股票不需要
m_dOpenCost: 开仓成本,等于股票的成本价 * 第一次建仓的量,后续减持不影响,不算手续费,股票不需要
m_dSettlementPrice: 最新价,结算价,对于股票的当前价
m_nCloseVolume: 平仓量,等于股票已经卖掉的 股票不需要
m_dCloseAmount: 平仓额,等于股票每次卖出的量 * 卖出价 * 合约乘数(股票为 1)的累加 股票不需要
m_dFloatProfit: 浮动盈亏,当前量 * (当前价 - 开仓价) * 合约乘数(股票为 1)
m_dCloseProfit: 平仓盈亏,平仓额 - 开仓价 * 平仓量 * 合约乘数(股票为 1) 股票不需要
m_dMarketValue: 市值,合约价值
m_dPositionCost: 持仓成本,股票不需要
m_dPositionProfit: 持仓盈亏,股票不需要
m_dLastSettlementPrice: 最新结算价,股票不需要
m_dInstrumentValue: 合约价值,股票不需要
m_bIsToday: 是否今仓
m_strStockHolder: 股东账号
m_nFrozenVolume: 冻结数量,冻结持仓,期货不用这个字段,冻结数量
m_nCanUseVolume: 可用余额,可用持仓,期货不用这个字段,股票的可用数量
m_nOnRoadVolume: 在途股份,在途持仓,期货不用这个字段,股票的在途数量
m_nYesterdayVolume: 昨夜拥股,期货不用这个字段,股票的股份余额
m_dLastPrice: 最新价,结算价,对于股票的当前价
m_dProfitRate: 盈亏比例,持仓盈亏比例
m_eFutureTradeType: EFutureTradeType,成交类型
m_strExpireDate: 到期日,逆回购用
m_strComTradeID: 组合成交号 ,套利成交 ID
m_nLegId: 组合序号 ,组合 ID
m_dTotalCost: 累计成本,自定义累计成本,股票信用用到
m_dSingleCost: 单股成本,自定义单股成本,股票信用用到
m_nCoveredVolume: 备兑数量,用于个股期权
m_eSideFlag: ESideFlag 持仓类型 ,用于个股期权,标记 ‘0’ - 权利,’1’ - 义务,’2’ - ‘备兑’
m_dReferenceRate: 汇率,目前用于港股通
m_dStructFundVol: 分级基金可用(可分拆或可合并)
m_dRedemptionVolume: 分级基金可赎回量
m_nPREnableVolume: 申赎可用量(记录当日申购赎回的股票或基金数量)
m_dRealUsedMargin: 实时占用保证金,用于期权
m_dRoyalty: 权利金
5)账号异常下单主推 orderError_callback()
# 5)账号异常下单主推 orderError_callback()
用法: orderError_callback(ContextInfo,orderArgs,errMsg)
释义: 当账号下单异常时,运行这个函数
参数:
ContextInfo:特定对象
orderArgs:下单参数,可对应查看[5.4. 附录4 交易函数内含属性说明]
errMsg:错误信息
返回: 无
示例:
```py
def init(ContextInfo):
# 设置对应的资金账号
ContextInfo.set_account('6000000058')
def handlebar(ContextInfo):
pass
def position_callback(ContextInfo, orderArgs,errMsg):
print('orderArgs')
print(errMsg)
```