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

Les contrats à terme

exchange.GetPositions

Leexchange.GetPositions()La fonction est utilisée pour obtenir les informations de position;GetPositions()fonction est une fonction membre de l'objet d'échange {@var/EXCHANGE exchange}.GetPositions()fonction obtient les informations de position du compte de change lié à l'objet de changeexchangeLe but des fonctions (méthodes) des membres duexchangel'objet est uniquement lié àexchangeet ne se reproduira pas ici.

Leexchange.GetPositions()la fonction renvoie un tableau de structures {@struct/Position Position} si la demande de données est réussie, et elle renvoie une valeur nulle si la demande de données échoue. {@struct/Position Position} les tableaux, les valeurs nulles

Je suis en train de changer de position. Je suis en train d'écrire une lettre.

Le paramètresymbolest utilisé pour régler lesymbole de négociationougamme de symboles de négociationPour être interrogé. Si lesymbolsi le paramètre n'est pas passé, la valeur par défaut est de demander les données de position de tous les symboles dans la gamme de dimensions de la paire de négociation en cours et du code du contrat.

le symbole faux chaîne

/*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) + "`")

    // Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
    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 des objets d'échange de contrats à terme pour passer des ordres de marché pour plusieurs paires de transactions et codes de contrats différents.

Les contrats à terme de crypto-monnaie diffèrent des contrats à terme de crypto-monnaie, qui n'ont que le concept logique d'une position.paires de négociation, code du contratVeuillez vous référer aux fonctions {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}. Dans leGetPositionsfonction, les scénarios d'utilisation du paramètre symbole sont résumés comme suit:

Classification des objets Exchange Symbole Paramètres Portée de la requête Nom de l'entreprise
Les contrats à terme Ne pas passer le paramètre de symbole Rechercher tous les produits de négociation dans la gamme de dimensions de la paire de négociation et du code du contrat en cours Si la paire de trading actuelle est BTC_USDT et que le code du contrat est swap, tous les contrats perpétuels basés sur USDT seront interrogés.GetPositions("USDT.swap")
Les contrats à terme Indiquez le produit de négociation, le paramètre du symbole est: BTC_USDT.swap Rechercher le contrat perpétuel basé sur USDT d'un BTC spécifié Pour les objets d'échange de contrats à terme, le format du symbole de paramètre est:paire de négociationetcode du contratdéfinies par la plateforme FMZ, séparées par les caractères"..
Les contrats à terme Spécifier la gamme de produits de négociation, le paramètre du symbole est: USDT.swap Rechercher tous les contrats perpétuels basés sur USDT -
Échanges de contrats à terme qui prennent en charge les options Ne pas passer le paramètre de symbole Rechercher tous les contrats d'options dans la plage de dimension de la paire de négociation en cours Si la paire de négociation actuelle est BTC_USDT, le contrat est défini sur un contrat d'option, par exemple, le contrat d'option Binance: BTC-240108-40000-C
Échanges de contrats à terme qui prennent en charge les options Spécifier le produit commercial spécifique Rechercher le contrat d' option spécifié Par exemple, pour Binance Futures Exchange, le paramètre du symbole est le suivant: BTC_USDT.BTC-240108-40000-C
Échanges de contrats à terme qui prennent en charge les options Spécifiez la gamme de produits de négociation, le paramètre du symbole est: USDT.option Rechercher tous les contrats d'options basés sur USDT -

Dans leGetPositionsfonction, l'objet de l'échange à terme la gamme de dimensions de requête est résumée comme suit:

Symbole Paramètres Définition de la portée de la demande Nom de l'entreprise
USDT.swap la valeur de l'échange est la valeur de l'échange à terme. Pour

les dimensions qui ne sont pas prises en charge par l'interface API d'échange, une erreur sera signalée et une valeur nulle sera renvoyée lorsque Je vous appelle.

Une gamme de contrats de livraison basés sur USDT.

L'ampleur de l'échange perpétuel basé sur la monnaie Des contrats.

L'ampleur de la livraison basée sur la monnaie Des contrats.

Une gamme d'options basée sur USDT.

L'option USD est basée sur la monnaie.

  • |

Une gamme de combinaisons de CFD. Les échanges de dérivés futures.

L'ampleur des contrats de livraison de marge mixte. Je suis en train d'écrire un livre.

Une marge mixte pour un contrat perpétuel. Je suis en train d'écrire un livre.

Compatible avecexchange.GetPosition()appel,GetPositionest exactement le même queGetPositions.

Lorsque le compte représenté par l'objet d'échangeexchangen'a aucune position dans leplage de requêteouinstruments de négociation spécifiques, leexchange.GetPositions()la fonction renvoie un tableau vide, par exemple:[].

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

exchange.SetMarginLevel

Leexchange.SetMarginLevel()Cette fonction est utilisée pour définir la valeur du levier de la paire de négociation ou du contrat spécifié par lesymbolParamètre. Compatible avec seulement passer dans le paramètremarginLevelpour définir la valeur du levier de la paire de négociation ou du contrat en cours de l'objet de l'échange {@var/EXCHANGE exchange}.

Le niveau de marge est défini par l'échange. Le taux d'intérêt de l'échange est le taux d'intérêt de la bourse.

LesymbolLe paramètre est utilisé pour spécifier la paire de négociation ou le contrat pour lequel la valeur de l'effet de levier doit être ajustée.symbolparamètre duSetMarginLevel()La fonction est compatible avec le format de lasymbolparamètre duGetTicker()fonction. le symbole faux chaîne LemarginLevelLe paramètre est utilisé pour définir la valeur de l'effet de levier, qui est généralement un entier pour les bourses et il prend également en charge les paramètres de valeur d'effet de levier à virgule flottante pour certaines bourses. MargeLe niveau vrai Numéro

function main() {
    exchange.SetMarginLevel(10)
    // Set the leverage of BTC’s USDT-margined perpetual contract to 15
    exchange.SetMarginLevel("BTC_USDT.swap", 15)
}
def main():
    exchange.SetMarginLevel(10)
    exchange.SetMarginLevel("BTC_USDT.swap", 15)
void main() {
    exchange.SetMarginLevel(10);
    exchange.SetMarginLevel("BTC_USDT.swap", 15); 
}

Leexchange.SetMarginLevel()Le système de backtesting prend en charge l'appel de l'objet de l'échange de contrat à terme de crypto-monnaie.exchange.SetMarginLevel()fonction permettant de définir la valeur du levier. Pour les contrats à terme de crypto-monnaie, le mécanisme d'effet de levier n'est pas uniforme en raison des échanges de contrats à terme de crypto-monnaie.exchange.SetMarginLevel()la fonction ne génère pas une demande réseau, mais définit uniquement la variable de levier dans le système FMZ sous-jacent (utilisé pour passer des paramètres dans l'interface de placement des ordres).exchange.SetMarginLevel()Il peut y avoir de nombreuses raisons à cela, par exemple: il y a une position en cours ou un ordre en attente, ce qui rend impossible de définir une nouvelle valeur d'effet de levier pour cette paire ou ce contrat. Échanges qui ne soutiennent pas leexchange.SetMarginLevel()fonction:

Nom de la fonction Échanges au comptant non pris en charge Échanges de contrats à terme non soutenus
Définir le niveau de marge Le montant de l'obligation est calculé à partir de la valeur de l'obligation.

{@var/EXCHANGE échange}

exchange.SetDirection

Leexchange.SetDirection()Cette fonction est utilisée pour définir la direction des ordres de la fonction {@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell} lors de la passation d'ordres pour les contrats à terme.

Je suis en train de changer de direction.

LedirectionLe paramètre est utilisé pour définir la direction du contrat à terme lorsque l'ordre est passé."buy", "closesell", "sell", "closebuy"- Je ne sais pas. direction vrai chaîne

function main(){
    // For example, set to OKX futures contract of this week
    exchange.SetContractType("this_week")    
    // Set leverage to 5 times
    exchange.SetMarginLevel(5)
    // Set the order type to long
    exchange.SetDirection("buy")
    // Place an order for 2 contracts at 10,000
    exchange.Buy(10000, 2)              
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
}
def main():
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(5)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
void main() {
    exchange.SetContractType("this_week");
    exchange.SetMarginLevel(5);
    exchange.SetDirection("buy");
    exchange.Buy(10000, 2);
    exchange.SetMarginLevel(5);
    exchange.SetDirection("closebuy");
    exchange.Sell(1000, 2);
}

Leexchange.SetDirection()la fonction définit la correspondance entre la direction de l'opération du contrat à terme et la fonction de placement des ordres:

Fonctions de placement des commandes La direction définie par les paramètres de la fonction SetDirection Les commentaires
exchange.Buy acheter Achat et ouverture de positions longues
exchange.Buy close-sell Achat et fermeture de positions courtes
exchange.Sell vendre Vendre et ouvrir des positions courtes
exchange.Sell achat de près Vendre et fermer des positions longues

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.Sell}, {@fun/Trade/exchange.Buy exchange.Sell}, {@fun/Trade/exchange.Buy exchange.Buy exchange.Buy.Buy}, {@fun/Trade/exchange.Buy.Buy.Buy}, {@fun/Trade/Exchange.Buy.Buy}

exchange.SetContractType

Leexchange.SetContractType()fonction est utilisée pour définir le code de contrat courant de l'objet d'échange {@var/EXCHANGE exchange}.

Leexchange.SetContractType()La fonction renvoie une structure qui contient le code du contrat d'échange correspondant au code du contrat actuel.quarter, et la structure de la valeur de retour de cette fonction est:{"InstrumentID": "BTCUSD_230630", "instrument": "BTCUSD_230630"}- Je ne sais pas. objet

le type de contrat (symbole)

Lesymbolle paramètre est utilisé pour définir le code du contrat, les valeurs facultatives sont:"this_week", "next_week", "quarter", "next_quarter", "swap", etc. Contrats à terme sur crypto-monnaiecontrat de livraisonles codes, s'ils ne sont pas spécifiés, comportent généralement:

  • this_week: le contrat de la semaine en cours.
  • next_weekLe contrat de la semaine prochaine.
  • quarter: contrat trimestriel.
  • next_quarter: le contrat trimestriel suivant.Contrats à durée déterminéeles codes des contrats à terme sur crypto-monnaie, s'ils ne sont pas spécifiés, comportent généralement:
  • swapLe contrat est perpétuel.

le symbole vrai chaîne

function main() {
    // Set to this week contract
    exchange.SetContractType("this_week") 
}
def main():
    exchange.SetContractType("this_week")
void main() {
    exchange.SetContractType("this_week");
}

Définissez le contrat en cours comme le contrat de la semaine en cours:

function main() {
    // The default trading pair is BTC_USD, set the contract for this week, and the contract is a currency standard contract
    exchange.SetContractType("this_week")
    Log("ticker:", exchange.GetTicker())
    
    // Switching trading pairs, then setting up contracts, switching to USDT as margin contracts, as opposed to currency standard contracts
    exchange.IO("currency", "BTC_USDT")   
    exchange.SetContractType("swap")
    Log("ticker:", exchange.GetTicker())
}
def main():
    exchange.SetContractType("this_week")
    Log("ticker:", exchange.GetTicker())
    exchange.IO("currency", "BTC_USDT")
    exchange.SetContractType("swap")
    Log("ticker:", exchange.GetTicker())
void main() {
    exchange.SetContractType("this_week");
    Log("ticker:", exchange.GetTicker());
    exchange.IO("currency", "BTC_USDT");
    exchange.SetContractType("swap");
    Log("ticker:", exchange.GetTicker());
}

Lors de la conclusion d'un contrat avecUSDTcomme marge, vous devez basculer la paire de négociation dans le code (vous pouvez également définir la paire de négociation directement lors de l'ajout de l'objet d'échange):

function main(){
    // Set the contract for this week
    var ret = exchange.SetContractType("this_week")     
    // Return information about the current week's contracts
    Log(ret)
}
def main():
    ret = exchange.SetContractType("this_week")
    Log(ret)
void main() {
    auto ret = exchange.SetContractType("this_week");
    Log(ret);
}

Imprimez la valeur de retour duexchange.SetContractType()fonction:

Dans la stratégie des contrats à terme de crypto-monnaie, prenons l'exemple du passage à laBTC_USDTPartie de négociation: Lorsque des paires de négociation sont changées en utilisant leexchange.SetCurrency("BTC_USDT")ouexchange.IO("currency", "BTC_USDT")fonctionnalités, après le changement, vous devez utiliser leexchange.SetContractType()La fonction de réinitialisation du contrat pour déterminer le contrat en cours à opérer dans le cadre de la nouvelle paire de négociation.contrat type de deviseou unContrat type USDTPar exemple, si une paire de négociation est réglée surBTC_USDT, utilisezexchange.SetContractType("swap")fonction de régler le code du contrat àswapÀ ce stade, il est réglé surBTCPour leNorme USDTSi la paire de négociation estBTC_USD, utilisezexchange.SetContractType("swap")fonction de régler le code du contrat àswapÀ ce stade, il est réglé surBTCC' est...norme monétaireLe contrat est perpétuel. Détails des bourses de contrats à terme de crypto-monnaie prises en charge, avec les noms des contrats pour chaque bourse comme suit:

  • Le montant de l'obligation est calculé à partir du montant de la garantie. Réglé sur des contrats perpétuels:exchange.SetContractType("swap")Le contrat de cette semaine:exchange.SetContractType("this_week")Le contrat de la semaine prochaine:exchange.SetContractType("next_week")Réglé à un contrat mensuel:exchange.SetContractType("month")Contrat pour le mois prochain:exchange.SetContractType("next_month")Résultats des contrats trimestriels:exchange.SetContractType("quarter")Contrat pour le prochain trimestre:exchange.SetContractType("next_quarter")

    OKX a des contrats de négociation pré-marché: la date de livraison du contrat est une heure fixe.HMSTR-USDT-250207. Réglez la paire de négociation àHMSTR_USDTsur la plateforme FMZ, puis utiliserexchange.SetContractType("HMSTR-USDT-250207")pour établir le contrat. Pour les fonctions qui prennent en charge lesymbolparamètre, tel que:exchange.GetTicker(), exchange.CreateOrder(), etc. Vous pouvez spécifier lesymbolparamètre comme suit:HMSTR_USDT.HMSTR-USDT-250207d'obtenir les données de marché du présent contrat ou de passer une commande.

  • Le montant de l'obligation est calculé à partir de la valeur de la garantie. Le contrat de cette semaine:exchange.SetContractType("this_week")- Je ne sais pas. Le contrat de la semaine prochaine:exchange.SetContractType("next_week")- Je ne sais pas. Résultats des contrats trimestriels:exchange.SetContractType("quarter")Je suis désolée. Contrat pour le prochain trimestre:exchange.SetContractType("next_quarter")- Je ne sais pas. Réglé sur des contrats perpétuels:exchange.SetContractType("swap")- Je ne sais pas. Il soutient les contrats avecUSDTcomme marge, prenezBTCle contrat par exemple: utilisationexchange.IO("currency", "BTC_USDT")pour passer à un contrat qui utiliseUSDTcomme marge. Ou régler la paire de négociation actuelle àBTC_USDTIl est nécessaire de modifier les paramètres de trading en direct et d'ajouter des objets d'échange.exchange.SetContractType()La fonction de régler le contrat.

  • Les titres de titres de titres de titres de titres de titres Réglé sur des contrats perpétuels:exchange.SetContractType("swap")Je suis désolée. Les contrats de livraison sur le marché des contrats à terme BitMEX sont des contrats mensuels avec les codes de contrat suivants (de janvier à décembre):

    "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
    

    Rédaction de contrats de livraison:exchange.SetContractType("December")Par exemple, lorsque la paire de négociation est réglée surXBT_USDT, leexchange.SetContractType("December")La fonction est appelée à définir le contrat pour la livraison de décembre en USDT basé sur BTC (correspondant au code de contrat réel deXBTUSDTZ23).

    Résumé des informations relatives aux contrats à terme BitMEX

    Code du contrat défini par Futures_BitMEX La paire de négociation correspondante dans FMZ Le code du contrat correspondant dans FMZ Nom de l'entreprise
    Le DOGEUSD Le montant de l'allocation échange Nommé en USD, XBT réglé.
    Le code de conduite Le code de l'appareil échange Nominé en USDT, réglé en USDT.
    XBTETH XBT_ETH échange ETH dénommé, XBT réglé.
    XBTEUR XBT_EUR échange Nominé en euros, réglé en XBT.
    USDTUSDC USDT_USDC échange Nommé en USDC, XBT réglé.
    Évaluation de la valeur de l'échange Équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent de l'équivalent échange Nommé en USD, réglé en ETH.
    XBTH24 XBT_USD Le mois de mars Date d'expiration: le 24 mars, le code du mois est: H; libellé en USD, XBT réglé.
    Le montant de la dette est calculé en fonction de la valeur de la dette. Équivalent de l'équivalent de l'échange Décembre Date d'expiration: le 23 décembre, le code du mois est le suivant: Z; libellé en USD, réglé en XBT.
    Je ne sais pas. XBT_USDT Décembre Date d'expiration: le 23 décembre. Le code du mois est le suivant: Z ; libellé en USDT, réglé en USDT.
    ADAZ23 ADA_XBT Décembre Date d'expiration: 23 décembre, le code du mois est: Z ; facturation en XBT, règlement en XBT.
    P_XBTETFX23 USDT_XXX P_XBTETFX23 Expiration: 23/11/23; exprimé en pourcentage et réglé en USDT.
  • Les contrats à terme Le contrat de cette semaine:exchange.SetContractType("this_week")- Je ne sais pas. Le contrat de la semaine prochaine:exchange.SetContractType("next_week")- Je ne sais pas. Résultats des contrats trimestriels:exchange.SetContractType("quarter")Je suis désolée. Contrat pour le prochain trimestre:exchange.SetContractType("next_quarter")- Je ne sais pas. Réglé sur des contrats perpétuels:exchange.SetContractType("swap")- Je ne sais pas. Il soutient les contrats avecUSDTcomme marge, prenezBTCle contrat par exemple: utilisationexchange.IO("currency", "BTC_USDT")pour passer à un contrat qui utiliseUSDTcomme marge. Ou régler la paire de négociation actuelle àBTC_USDTIl est nécessaire de modifier les paramètres de trading en direct et d'ajouter des objets d'échange.exchange.SetContractType()La fonction de régler le contrat.

  • Les titres à terme Réglé sur des contrats perpétuels:exchange.SetContractType("swap")- Je ne sais pas. Il prend en charge DeribitUSDCLe contrat. Les contrats de livraison sont les suivants:"this_week", "next_week", "month", "quarter", "next_quarter", "third_quarter", "fourth_quarter"- Je ne sais pas. Le montant de l'obligation de dépôt est calculé à partir du montant de la garantie."this_week,swap", "next_week,swap", "next_quarter,this_week", "third_quarter,this_week", "month,next_week", il y a beaucoup de combinaisons. Pour les contrats d'options, vous devez entrer le code spécifique du contrat d'option défini par la bourse, voir le site Web de Deribit pour plus de détails.

  • Les contrats à terme avec KuCoin Par exemple, si la paire de négociation est réglée surBTC_USDet le code du contrat est défini, il s'agit d'un contrat basé sur la devise: Réglé à des contrats perpétuels:exchange.SetContractType("swap")- Je ne sais pas. Résultats des contrats trimestriels:exchange.SetContractType("quarter")Je suis désolée. Contrat pour le prochain trimestre:exchange.SetContractType("next_quarter").

    USDT comme contrat de marge: Par exemple, si la paire de négociation est réglée surBTC_USDT, puis définissez le code du contrat, il s'agit d'un contrat avec USDT comme marge. Réglé à des contrats perpétuels:exchange.SetContractType("swap").

  • Les contrats à terme avec Binance Binance Futures Exchange défaut sur le contrat perpétuel de la paire de négociation en cours, code du contrat:swap- Je ne sais pas. Réglé sur des contrats perpétuels:exchange.SetContractType("swap"), les contrats perpétuels de Binance ont des contrats qui utilisentUSDTcomme marge.USDTcontrat perpétuel standard deBTCLe taux de change de la paire de négociation peut être utilisé comme contrat de marge et la paire de négociation est réglée surBTC_USDTBinance prend également en charge les contrats perpétuels qui utilisent des pièces comme marge, par exemple,BTCLe contrat perpétuel standard de Binance, avec la paire de négociationBTC_USD- Je ne sais pas. Résultats des contrats trimestriels:exchange.SetContractType("quarter"), le contrat de livraison comporte un contrat standard en devises (c'est-à-dire en utilisant des devises comme marge), par exemple,BTCDans le contrat trimestriel, la paire de négociation est réglée sur:BTC_USDet ensuite fixer le contratexchange.SetContractType("quarter"), il est réglé surBTCun contrat trimestriel avec un contrat type en devises. Contrat pour le prochain trimestre:exchange.SetContractType("next_quarter"), par exemple,BTCdu contrat trimestriel type de devises, la paire de négociation est fixée à:BTC_USD, et ensuite fixer le contratexchange.SetContractType("next_quarter")- Je ne sais pas. Binance prend en charge partiellementUSDTcomme contrat de livraison de marge, prendreBTCpar exemple, définir la paire de négociation àBTC_USDT, puis définissez le code du contrat.

    Prise en charge des contrats Binance Options: Le format du code du contrat d'option est basé sur le code du contrat d'option défini par la bourse:BTC-241227-15000-C, XRP-240112-0.5-C, BTC-241227-15000-PPrenez le code du contrat d' option BinanceBTC-241227-15000-PPar exemple: BTC est le code de la devise de l'option, 241227 est la date d'exercice, 15000 est le prix d'exercice, P représente une option de vente et C représente une option d'achat. Pour plus de détails sur le type d'option, qu'il s'agisse d'option européenne ou d'option américaine, veuillez consulter les informations pertinentes du contrat d'option de l'échange. L'échange peut restreindre les vendeurs d'options et les obliger à demander des qualifications séparément.

  • Les échanges à terme Code du contrat pour les contrats perpétuels Bibox:swap- Je ne sais pas. Réglé sur des contrats perpétuels:exchange.SetContractType("swap").

  • Les échanges à terme Le code du contrat est le contrat perpétuel pour la paire de négociation en cours:swap- Je ne sais pas. Le code du contrat de cette semaine:this_week- Je ne sais pas. Code du contrat de la semaine prochaine:next_week- Je ne sais pas. Code du contrat de la troisième semaine:third_week- Je ne sais pas. Code du contrat mensuel:month- Je ne sais pas. Code du contrat du mois prochain:next_monthJe suis désolée. Code du contrat trimestriel:quarterJe suis désolée. Code du contrat pour le trimestre suivant:next_quarter- Je ne sais pas. Code du contrat pour le troisième trimestre:third_quarter.

  • Les contrats à terme Le contrat par défaut est le contrat perpétuel de la paire de négociation en cours, code du contrat:swap. swapLe contrat est perpétuel.month: contrat du mois en cours.quarter: contrat trimestriel.next_quarterLe contrat pour le prochain trimestre.swap_pf: Contrats perpétuels à marge mixte.quarter_ff: Contrat trimestriel à marge mixte.month_ff: contrat de marge mixte pour le mois en cours.next_quarter_ffContrat de marge mixte pour le prochain trimestre.

  • Les titres à terme Le code du contrat est le code de la paire de négociation en cours.swap.

  • Les contrats à terme_Bitget Le code du contrat est le code de la paire de négociation en cours.swap- Je ne sais pas. La paire de négociation est réglée surBTC_USDpour les contrats standard de devises, et la paire de négociation est réglée surBTC_USDTpour les contrats réglés parUSDTLes contrats de démonstration peuvent être établis avec des paires de négociation telles queSBTC_USD, BTC_SUSDT.

  • Les échanges à terme Code du contrat pour les contrats perpétuels dYdX:swap- Je ne sais pas. Réglé sur des contrats perpétuels:exchange.SetContractType("swap"), dYdX ne propose que des contrats standard en USDT.

  • Les échanges à terme Code du contrat pour les contrats perpétuels MEXC:swap- Je ne sais pas. Réglé sur des contrats perpétuels:exchange.SetContractType("swap"). Régler la paire de négociation àBTC_USD, qui est un contrat standard de devise, et définit une paire de négociation àBTC_USDT, qui estUSDT- Un contrat conclu.

  • Les contrats à terme Les jetons dans un compte sur lecrypto.comLes opérations de change peuvent être converties en crédits libellés en USD à utiliser comme marge pour le trading de contrats. Je suis en contrat à perpétuité:exchange.SetContractType("swap"). Exemple d'appel duexchange.SetContractType("swap")fonction de définition d'un contrat perpétuel pour BTC lorsque la paire de négociation est réglée surBTC_USD- Je ne sais pas. Lecrypto.comLes contrats de livraison de change sont des contrats mensuels avec les codes de contrat suivants (de janvier à décembre):

    "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
    

    Définir le contrat de livraison:exchange.SetContractType("October")Par exemple, lorsque la paire de négociation est réglée surBTC_USD, appeler la fonctionexchange.SetContractType("October")pour fixer le contrat de livraison d'octobre pour BTC. Le code du contrat correspondant à l'heure actuelle est le suivant:BTCUSD-231027.

  • Les contrats à terme Comptes à terme_WOOUSDTLes contrats basés sur un code de contrat perpétuel deswapPar exemple, lorsque la paire de négociation est réglée surBTC_USDT, la fonctionexchange.SetContractType("swap")est appelé à définir le contrat actuel comme un contrat perpétuel pour BTC basé sur USDT.

{@fun/Futures/exchange.GetContractType exchange.GetContractType}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}

exchange.GetContractType

Leexchange.GetContractType()fonction est utilisée pour obtenir le code du contrat pour le paramètre actuel de l'objet d'échange {@var/EXCHANGE exchange}.

Leexchange.GetContractType()la fonction renvoie le code de contrat défini par la plateforme FMZ, par exemple:this_week, swap, etc. chaîne

Il est possible de modifier le type de contrat.

function main () {
    Log(exchange.SetContractType("this_week")) 
    Log(exchange.GetContractType())
}
def main():
    Log(exchange.SetContractType("this_week"))
    Log(exchange.GetContractType())
void main() {
    Log(exchange.SetContractType("this_week"));
    Log(exchange.GetContractType());
}

{@fun/Futures/exchange.SetContractType exchange.SetContractType} Il s'agit d'un produit qui a été vendu par un fournisseur d'électricité.

exchange.GetFundings

Leexchange.GetFundings()Cette fonction est utilisée pour obtenir les données sur le taux de financement pour la période en cours.

Leexchange.GetFundings()la fonction renvoie un tableau de structures {@struct/Funding Funding} lorsque la demande de données est réussie, et renvoie une valeur nulle lorsque la demande de données échoue. {@struct/Funding Funding} tableau, valeur nulle

Les fonds sont versés à l'échange. Les échanges de fonds (symbole)

Le paramètresymbolest utilisé pour régler lesymbole de transactionougamme de symboles de transactionLe rapport de la commission de l'emploi et des affaires socialessymbolsi le paramètre n'est pas passé, les données relatives au taux de financement actuel de tous les instruments seront demandées par défaut dans la gamme de dimensions de la paire de négociation et du code du contrat en cours.

le symbole faux chaîne

/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/

function main() {
    // LPT_USDT.swap 4-hour period
    var symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
    for (var symbol of symbols) {
        exchange.GetTicker(symbol)
    }
    
    var arr = []
    var arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
    for (p of arrParams) {
        if (p == "no param") {
            arr.push(exchange.GetFundings())
        } else {
            arr.push(exchange.GetFundings(p))
        }
    }
    
    var tbls = []
    var index = 0
    for (var fundings of arr) {
        var tbl = {
            "type": "table",
            "title": arrParams[index],
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": [],
        }
    
        for (var f of fundings) {
            tbl["rows"].push([f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate * 100 + " %"])
        }
        tbls.push(tbl)
        index++
    }
    
    LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + JSON.stringify(tbls) + "`")
}
'''backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
'''
    
import json
    
def main():
    # LPT_USDT.swap 4-hour period
    symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
    for symbol in symbols:
        exchange.GetTicker(symbol)
    
    arr = []
    arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
    for p in arrParams:
        if p == "no param":
            arr.append(exchange.GetFundings())
        else:
            arr.append(exchange.GetFundings(p))
    
    tbls = []
    index = 0
    for fundings in arr:
        tbl = {
            "type": "table",
            "title": arrParams[index],
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": [],
        }
    
        for f in fundings:
            tbl["rows"].append([f["Symbol"], f["Interval"] / 3600000, _D(f["Time"]), str(f["Rate"] * 100) + " %"])
    
        tbls.append(tbl)
        index += 1
    
    LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + json.dumps(tbls) + "`")
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/
    
void main() {
    // LPT_USDT.swap 4-hour period
    json arrSymbol = R"([])"_json;
    std::string symbols[] = {"SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"};
    for (const std::string& symbol : symbols) {
        exchange.GetTicker(symbol);
        arrSymbol.push_back(symbol);
    }
    
    std::vector<std::vector<Funding>> arr = {};
    std::string arrParams[] = {"no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"};
    for (const std::string& p : arrParams) {
        if (p == "no param") {
            arr.push_back(exchange.GetFundings());
        } else {
            arr.push_back(exchange.GetFundings(p));
        }
    }
    
    json tbls = R"([])"_json;
    int index = 0;
    for (int i = 0; i < arr.size(); i++) {
        auto fundings = arr[i];
    
        json tbl = R"({
            "type": "table", 
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": []
        })"_json;
        tbl["title"] = arrParams[index];
    
        for (int j = 0; j < fundings.size(); j++) {
            auto f = fundings[j];
            // json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), string(f.Rate * 100) + " %"};
            json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate};
            tbl["rows"].push_back(arrJson);
        }
        tbls.push_back(tbl);
        index++;
    }
    
    LogStatus(_D(), "\n Requested market types:", arrSymbol.dump(), "\n`" + tbls.dump() + "`");
}

Utilisez l'objet d'échange de contrats à terme pour appeler leexchange.GetFundings()Avant d'appeler une fonction de marché, GetFundings renvoie uniquement les données de financement de la paire de trading par défaut actuelle. Après avoir appelé la fonction de marché, il renvoie les données de financement de toutes les variétés demandées. Vous pouvez vous référer à l'exemple de test suivant:

Pour les bourses à terme qui ne prennent pas en charge la requête par lots de données sur les taux de financement, si lesymbolle paramètre est spécifié comme la plage de requête, par exemple:USDT.swapou lesymbolSi le paramètre n'est pas passé, l'interface signalera une erreur.GetFundings()fonction utilisant ce type d'objet d'échange de contrats à terme, vous devez spécifier lesymbolparamètre comme type de contrat perpétuel spécifique afin d'interroger les données actuelles sur le taux de financement du type. Leexchange.GetFundings()La fonctionnalité prend en charge les systèmes réels de trading et de backtesting. Les échanges qui ne prennent pas en charge l'acquisition par lots de données sur les taux de financement: Futures_Bitget, Futures_OKX, Futures_MEXC, Futures_Deribit, Futures_Crypto.symbolparamètre avec le code de symbole spécifique, par exemple:ETH_USDT.swap.

Les échanges qui ne soutiennent pas leexchange.GetFundings()fonction:

Nom de la fonction Échanges au comptant non pris en charge Échanges de contrats à terme non soutenus
GetFundings Les contrats à terme

{@struct/Funding Financing} Je suis désolée.

Compte Réglages réseau