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
/*
注意: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)
}
}
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"])
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}
Account exchange.SetMarginLevel