exchange.GetPositions
获取所有合约的当前持仓信息。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);
}
}返回值
| 类型 | 描述 |
| 成功时返回 |
参数
| 名称 | 类型 | 必填 | 描述 |
symbol | string | 否 | 请求持仓数据的合约代码。不传该参数时,默认请求所有合约的持仓数据。 |
参考
备注
商品期货的持仓需要注意以下几点:
- 回测系统
回测系统不区分今仓、昨仓。GetPositions函数返回的持仓数据Position结构数组中,Position结构的Type属性仅为PD_LONG或者PD_SHORT。 - 实盘
有些交易所区分今仓、昨仓,例如上期所。
有些交易所虽然也区分,但是不能指定平今仓还是平昨仓,存在今仓时优先平今仓。例如IF等一些品种只能先平今仓,因此今仓、昨仓的仓位信息合并为一个并且不予区分。
兼容exchange.GetPosition()调用。
exchange.GetPositions()函数不依赖于当前设置的合约代码。不传symbol参数时获取所有合约的当前持仓信息;传入symbol参数时获取指定合约的持仓信息。