```exchange.GetPositions()```函数请求数据成功时返回{@struct/Position Position}结构数组,请求数据失败时返回空值。
{@struct/Position Position}数组、空值
exchange.GetPositions()
exchange.GetPositions(symbol)
参数```symbol```用于设置所要查询的**交易品种**或者**交易品种的范围**。
不传```symbol```参数时,默认以当前交易对、合约代码所在维度范围请求所有品种的持仓数据。
symbol
false
string
```javascript
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for (var symbol of arrSymbol) {
exchange.CreateOrder(symbol, "buy", -1, 1)
exchange.CreateOrder(symbol, "sell", -1, 1)
}
var defaultPositions = exchange.GetPositions()
var swapPositions = exchange.GetPositions("USDT.swap")
var futuresPositions = exchange.GetPositions("USDT.futures")
var btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")
var tbls = []
var arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
var tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
for (var index in arr) {
var positions = arr[index]
var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], rows: [] }
for (var pos of positions) {
tbl.rows.push([pos.Symbol, pos.MarginLevel, pos.Amount, pos.FrozenAmount, pos.Price, pos.Profit, pos.Type, pos.ContractType, pos.Margin])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
// 打印输出一次信息后返回,防止后续回测时订单成交,影响数据观察
return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for symbol in arrSymbol:
exchange.CreateOrder(symbol, "buy", -1, 1)
exchange.CreateOrder(symbol, "sell", -1, 1)
defaultPositions = exchange.GetPositions()
swapPositions = exchange.GetPositions("USDT.swap")
futuresPositions = exchange.GetPositions("USDT.futures")
btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")
tbls = []
arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
for index in range(len(arr)):
positions = arr[index]
tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], "rows": []}
for pos in positions:
tbl["rows"].append([pos["Symbol"], pos["MarginLevel"], pos["Amount"], pos["FrozenAmount"], pos["Price"], pos["Profit"], pos["Type"], pos["ContractType"], pos["Margin"]])
tbls.append(tbl)
LogStatus("`" + json.dumps(tbls) + "`")
return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
for (const auto& symbol : arrSymbol) {
exchange.CreateOrder(symbol, "buy", -1, 1);
exchange.CreateOrder(symbol, "sell", -1, 1);
}
auto defaultPositions = exchange.GetPositions();
auto swapPositions = exchange.GetPositions("USDT.swap");
auto futuresPositions = exchange.GetPositions("USDT.futures");
auto btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap");
json tbls = R"([])"_json;
std::vector<std::vector<Position>> arr = {defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions};
std::string tblDesc[] = {"defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"};
for (int index = 0; index < arr.size(); index++) {
auto positions = arr[index];
json tbl = R"({
"type": "table",
"cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"],
"rows": []
})"_json;
tbl["title"] = tblDesc[index];
for (const auto& pos : positions) {
json arrJson = R"([])"_json;
arrJson.push_back(pos.Symbol);
arrJson.push_back(pos.MarginLevel);
arrJson.push_back(pos.Amount);
arrJson.push_back(pos.FrozenAmount);
arrJson.push_back(pos.Price);
arrJson.push_back(pos.Profit);
arrJson.push_back(pos.Type);
arrJson.push_back(pos.ContractType);
arrJson.push_back(pos.Margin);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
使用期货交易所对象,对多个不同交易对、合约代码的品种下市价单。按多种方式查询持仓。
加密货币期货合约与加密货币现货不同,现货只有逻辑上的持仓概念。在FMZ量化交易平台的系统中加密货币期货合约具体品种是由交易对、合约代码共同标识的。 可以参看{@fun/Account/exchange.SetCurrency exchange.SetCurrency}、{@fun/Futures/exchange.SetContractType exchange.SetContractType}函数。
在GetPositions
函数中,symbol参数的使用场景归纳:
交易所对象分类 | symbol参数 | 查询范围 | 备注 |
---|---|---|---|
期货 | 不传symbol参数 | 查询当前交易对、合约代码维度范围的所有交易品种 | 假如当前交易对为BTC_USDT,合约代码为swap,即查询所有的USDT本位永续合约。等价于调用GetPositions("USDT.swap") |
期货 | 指定交易品种,symbol参数为:”BTC_USDT.swap” | 查询指定的BTC的USDT本位永续合约 | 对于期货交易所对象,参数symbol格式为:FMZ平台定义的交易对与合约代码组合,以字符"." 间隔。 |
期货 | 指定交易品种范围,symbol参数为:”USDT.swap” | 查询所有USDT本位永续合约 | - |
支持期权的期货交易所 | 不传symbol参数 | 查询当前交易对维度范围的所有期权合约 | 假如当前交易对为BTC_USDT,合约设置为期权合约,例如币安期权合约:BTC-240108-40000-C |
支持期权的期货交易所 | 指定具体交易品种 | 查询指定的期权合约 | 例如对于币安期货交易所,symbol参数:BTC_USDT.BTC-240108-40000-C |
支持期权的期货交易所 | 指定交易品种范围,symbol参数为:”USDT.option” | 查询所有USDT本位期权合约 | - |
在GetPositions
函数中,期货交易所对象查询维度范围归纳:
symbol参数 | 请求范围定义 | 备注 |
---|---|---|
USDT.swap | USDT本位永续合约范围。 | 对于交易所API接口不支持的维度,调用时会报错返回空值。 |
USDT.futures | USDT本位交割合约范围。 | - |
USD.swap | 币本位永续合约范围。 | - |
USD.futures | 币本位交割合约范围。 | - |
USDT.option | USDT本位期权合约范围。 | - |
USD.option | 币本位期权合约范围。 | - |
USDT.futures_combo | 差价组合合约范围。 | Futures_Deribit交易所 |
USD.futures_ff | 混合保证金交割合约范围。 | Futures_Kraken交易所 |
USD.swap_pf | 混合保证金永续合约范围。 | Futures_Kraken交易所 |
兼容exchange.GetPosition()
调用,GetPosition
与GetPositions
使用完全一致。
当交易所对象exchange
代表的账户在查询范围内或指定的交易品种没有持仓时exchange.GetPositions()
函数返回空数组,例如:[]
。
{@struct/Position Position}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}
Account exchange.SetMarginLevel