```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;
}
Utilisez les objets d'un échange de contrats à terme pour rechercher des titres de plusieurs paires de transactions différentes, des listes de prix sous-jacentes de variétés de codes de contrats.
Les contrats à terme de crypto-monnaie diffèrent des contrats à terme de crypto-monnaie, qui ne sont que des concepts de détention logiques. Dans le système de la plate-forme de négociation quantitative FMZ, les contrats à terme de crypto-monnaie sont des variétés spécifiques de contrats à terme de crypto-monnaie.Les échanges、Le code du contratLes fonctionnalités communes sont définies par la fonction {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}.
DansGetPositions
Dans les fonctions, les scénarios d'utilisation des paramètres symbol sont résumés:
Classification des objets | Paramètres de symboles | Portée de la requête | Nom de l'auteur |
---|---|---|---|
Le futur | Pas de paramètre de symbole | Consultez toutes les variétés de transactions dans les paires de transactions en cours, dans la gamme de codes de contrats | Si la paire en cours est BTC_USDT, le code du contrat est swap, c'est-à-dire qu'il interroge tous les contrats permanents en USDT.GetPositions("USDT.swap") |
Le futur | Indiquez la variété de transaction, le paramètre de symbole est: |
Enquête sur les contrats à durée indéterminée USDT pour BTC désigné | Pour les objets des échanges à terme, le format de symbole des paramètres est:Les échangesavecLe code du contratLes combinaisons, avec des caractères"." Il y a une différence. |
Le futur | 指定交易品种范围,symbol参数为:”USDT.swap” | Voir tous les contrats permanents de USDT | - |
Les marchés à terme qui soutiennent les options | Pas de paramètre de symbole | Consultez tous les contrats d'options actuellement négociés sur la gamme de dimensions | Si la paire en cours est BTC_USDT, le contrat est configuré comme un contrat d'options, par exemple un contrat d'options Binance: BTC-240108-40000-C |
Les marchés à terme qui soutiennent les options | Indiquer une variété de transaction spécifique | Enquête sur les contrats d'options désignés | Par exemple, pour les échanges à terme de Bitcoin, le paramètre de symbole est: BTC_USDT.BTC-240108-40000-C |
Les marchés à terme qui soutiennent les options | 指定交易品种范围,symbol参数为:”USDT.option” | Voir tous les contrats d'options locaux USDT | - |
DansGetPositions
Dans la fonction, la portée de la dimension de requête de l'objet de l'échange de contrats à terme est résumée:
Paramètres de symboles | Définition de la portée de la demande | Nom de l'auteur |
---|---|---|
USDT.swap | La USDT est une société de services financiers basée à Tokyo. | Pour les dimensions qui ne sont pas prises en charge par l'API de l'échange, l'erreur est de retourner une valeur nulle lors de l'appel. |
USDT.futures | Le taux d'échange USDT est approximatif. | - |
USD.swap | Le projet de loi a été adopté par le Parlement européen. | - |
USD.futures | Le taux d'échange de la monnaie locale est approximatif. | - |
USDT.option | La portée des contrats d'options sur USDT. | - |
USD.option | Les contrats d'options sur le marché monétaire. | - |
USDT.futures_combo | Les différences de prix dans la gamme de contrats. | Le marché des futures Deribit est en train de se développer. |
USD.futures_ff | Les taux de change de garantie mixtes sont approximatifs. | Les futures_Kraken échange |
USD.swap_pf | Les contrats de garantie mixtes sont définitifs. | Les futures_Kraken échange |
Compatibilitéexchange.GetPosition()
Il a appelé.GetPosition
avecGetPositions
L'utilisation est parfaitement homogène.
Lorsque l'objet de la bourseexchange
Le compte du représentant est auDans le cadre de la requêteouVariétés de négociation désignéesQuand il n'y en a pasexchange.GetPositions()
Une fonction renvoie une matrice vide, par exemple:[]
。
{@struct/Position Position}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}
Compte exchange.SetMarginLevel