输入/搜索内容
内置函数
Global
Log
Market
Trade
Account
Futures
exchange.GetPositions
exchange.SetMarginLevel
exchange.SetDirection
exchange.SetContractType
exchange.GetContractType
StrDecode
Threads
TA
Talib
OS
结构体
内置变量

获取所有合约的当前持仓信息。GetPositions()函数是交易所对象exchange的成员函数。

GetPositions()函数获取交易所对象exchange所绑定的交易所账户的持仓信息。exchange对象的成员函数(方法)的用途仅与exchange相关,文档之后不再赘述。

exchange.GetPositions()
exchange.GetPositions(symbol)

示例

开多仓后查询持仓。

javascript
/* 注意:GetPositions 函数获取的是所有持仓品种的持仓信息,如果没有持仓则返回空数组,因此在使用该接口返回的数据前,需先判断返回的数据是否为空数组 */ function main(){ // 由于是测试代码,不使用商品期货策略的一般架构,这里仅判断 exchange.IO("status") 函数,在成功连接期货公司前置机后立即执行测试代码。股票证券无需使用 exchange.IO("status") 判断连接状态 while(!exchange.IO("status")) { Sleep(1000) } var info = exchange.SetContractType("rb888") var ticker = exchange.GetTicker() exchange.SetDirection("buy") exchange.Buy(ticker.Last + info.PriceTick * 20, 2) var position = exchange.GetPositions() if(position.length>0){ Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:", position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type, "ContractType:", position[0].ContractType, "Symbol:", position[0].Symbol) } }
python
def main(): while not exchange.IO("status"): Sleep(1000) info = exchange.SetContractType("rb888") ticker = exchange.GetTicker() exchange.SetDirection("buy") exchange.Buy(ticker["Last"] + info["PriceTick"] * 20, 2) position = exchange.GetPositions() if len(position) > 0: Log("Amount:", position[0]["Amount"], "FrozenAmount:", position[0]["FrozenAmount"], "Price:", position[0]["Price"], "Profit:", position[0]["Profit"], "Type:", position[0]["Type"], "ContractType:", position[0]["ContractType"], "Symbol:", position[0]["Symbol"])
rust
fn main() { // 由于是测试代码,不使用商品期货策略的一般架构,这里仅判断 exchange.IO("status") 函数,在成功连接期货公司前置机后立即执行测试代码。股票证券无需使用 exchange.IO("status") 判断连接状态 while !exchange.IO("status").is_ok_and(|v| v.as_i64() == Some(1)) { Sleep(1000); } let info = exchange.SetContractType("rb888").unwrap(); let ticker = exchange.GetTicker(None).unwrap(); // 注意:Rust 中不推荐使用 SetDirection,优先使用 CreateOrder 直接指定方向 exchange.SetDirection("buy").unwrap(); exchange.Buy(ticker.Last + info["PriceTick"].as_f64().unwrap_or(0.0) * 20.0, 2).unwrap(); let position = exchange.GetPositions(None).unwrap(); if position.len() > 0 { Log!("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:", position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type, "ContractType:", position[0].ContractType, "Symbol:", position[0].Symbol); } }

返回值

类型描述

Position数组 / 空值

成功时返回Position结构数组;失败时返回空值。若没有持仓,则返回空数组,即[]。

参数

名称类型必填描述

symbol

string

否

请求持仓数据的合约代码。不传该参数时,默认请求所有合约的持仓数据。

参考

备注

商品期货的持仓需要注意以下几点:

  • 回测系统
    回测系统不区分今仓、昨仓。GetPositions函数返回的持仓数据Position结构数组中,Position结构的Type属性仅为PD_LONG或者PD_SHORT。
  • 实盘
    有些交易所区分今仓、昨仓,例如上期所。
    有些交易所虽然也区分,但是不能指定平今仓还是平昨仓,存在今仓时优先平今仓。例如IF等一些品种只能先平今仓,因此今仓、昨仓的仓位信息合并为一个并且不予区分。

兼容exchange.GetPosition()调用。

exchange.GetPositions()函数不依赖于当前设置的合约代码。不传symbol参数时获取所有合约的当前持仓信息;传入symbol参数时获取指定合约的持仓信息。