Les ressources ont été chargées... Je charge...

exchange.GetPositions


```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 échangesLe code du contratLes fonctionnalités communes sont définies par la fonction {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}. DansGetPositionsDans 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: BTC_USDT.swap 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 -

DansGetPositionsDans 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é.GetPositionavecGetPositionsL'utilisation est parfaitement homogène.

Lorsque l'objet de la bourseexchangeLe 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