exchange.GetPositions

exchange.GetPositions()函数用于获取所有合约当前持仓信息。GetPositions()函数是交易所对象{@var/EXCHANGE exchange}的成员函数。

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

exchange.GetPositions()函数请求数据成功时返回{@struct/Position Position}结构数组,请求数据失败时返回空值。没有持仓则返回空数组,即[]。 {@struct/Position Position}数组 / 空值

exchange.GetPositions() exchange.GetPositions(symbol)

参数symbol用于指定请求的持仓数据的合约代码。不传该参数时默认请求所有合约的持仓数据。 symbol false string

”`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"])```

”`cpp void main() { while(exchange.IO(“status”) == 0) { Sleep(1000); }

auto info = exchange.SetContractType("rb888");
auto ticker = exchange.GetTicker();
exchange.SetDirection("buy");
exchange.Buy(ticker.Last + info["PriceTick"].get<double>() * 20, 2);
auto position = exchange.GetPositions();
if(position.size() > 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);
}

}“`

商品期货的持仓需要注意: - 回测系统 回测系统不区分今仓、昨仓。GetPositions函数返回的持仓数据{@struct/Position Position}结构数组中,Position结构的Type属性仅为PD_LONG或者PD_SHORT。 - 实盘 有交易所区分今仓、昨仓,例如上期所。 有些交易所虽然也区分,但是不能指定平今还是平昨,有今仓优先平今仓。例如IF等一些品种只能先平今仓,所以今仓、昨仓仓位信息合并为一个并且不予区分。 兼容exchange.GetPosition()调用。 exchange.GetPositions()函数不依赖于当前设置的合约代码,不传symbol参数时获取所有合约当前持仓信息。传入symbol参数时获取指定合约的持仓信息。

{@struct/Position Position}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}