Comment puis-je trader des produits dérivés avec le Jupyter Notebook ?
Découvrez comment vous pouvez faire du trading de produits dérivés simples avec les mêmes outils. Utilisons les fonctionnalités complètes disponibles dans python-okx à un niveau supérieur !
Types de produits dérivés
Il existe trois types de produits dérivés disponibles pour le trading sur OKX :
Contrats à expiration
Perpétuels
Contrats d'options
Vous pouvez accéder aux Explications sur les produits dérivés Bitcoin : contrats à expiration, perpétuels et d’options pour en savoir plus sur les caractéristiques de différents types de produits dérivés sur OKX. Dans ce tutoriel, nous utiliserons les perpétuels comme exemple.
Questions fréquentes
1. Comment puis-je obtenir les données du marché pour le trading de produits dérivés avec Jupyter Notebook en utilisant Obtenir les données du marché ?
Vous pouvez également remplacer instType par EXPIRY ou OPTION pour information.
import okx.MarketData as MarketData
flag = "1" # live trading: 0, demo trading: 1
marketDataAPI = MarketData.MarketAPI(flag = flag)
result = marketDataAPI.get_tickers(instType = "SWAP")
print(result)2. Comment puis-je obtenir les paires de trading disponibles pour le trading de produits dérivés avec le Jupyter Notebook en utilisant Obtenir des instruments ?
De la même manière, choisissez le instType pour lequel vous souhaitez obtenir des informations.
import okx.PublicData as PublicData
if __name__ == '__main__':
flag = "1" # live trading: 0, demo trading: 1
publicDataAPI = PublicData.PublicAPI(flag = flag)
result = publicDataAPI.get_instruments(instType = "SWAP")
print(result)2.1 Calculer la valeur notionnelle d'un contrat de produits dérivés avec le paramètre d'instrument ctVal et ctMult
Pour calculer la valeur notionnelle d'un contrat dérivé (par ex. les contrats à terme, swaps perpétuels et options), vous avez besoin de ctVal (valeur du contrat) et ctMult (multiplicateur de contrat) à partir des paramètres de l'instrument.
La valeur notionnelle d'un contrat dérivé peut être calculée comme suit : ctVal * ctMult (unité : ctValCcy) ;
Par exemple, à partir des paramètres de l'instrument indiqués ci-dessous, nous pouvons calculer la valeur notionnelle d'un contrat perpétuel LTC-USD comme suit : ctVal * ctMult (unité:ctValccy) = 10 * 1 USD = 10 USD
"instType":"SWAP",
"instId":"LTC-USD-SWAP",
"instFamily":"LTC-USD",
"uly":"LTC-USD",
"settleCcy":"LTC",
"ctVal":"10",
"ctMult":"1",
"ctValCcy":"USD"3. Comment puis-je vérifier mon solde pour le trading de produits dérivés avec le Jupyter Notebook en utilisant Obtenir le solde ?
import okx.Account as Account
flag = "1" # live trading:0, demo trading: 1
accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
result = accountAPI.get_account_balance()
print(result)4. Quels modes de compte et modes de marge / de trading sont éligibles au trading de produits dérivés avec Jupyter Notebook ?
Comme indiqué dans notre dernier tutoriel, dans le compte unifié, il existe quatre modes de compte :
Mode Au comptant,
Mode Au comptant et de contrats à terme,
Mode de marge multidevise
Mode de marge du portefeuille
À noter que seuls les trois derniers modes de marge, à savoir au comptant et de contrats à terme, de marge multidevise et de marge de portefeuille, sont éligibles au trading de produits dérivés. Consultez comment définir le mode du compte afin de comprendre les différences entre les quatre modes et comment passer de l'un à l'autre via notre interface Web.
4.1 Obtenez la configuration du compte actuel à partir du paramètre acctLv dans Obtenir la configuration du compte
Assurez-vous que vous êtes dans le bon mode de compte pour trader des produits dérivés.
import okx.Account as Account
flag = "1" # live trading: 0, demo trading: 1
accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
result = accountAPI.get_account_config()
print(result)
if result['code'] == "0":
acctLv = result["data"][0]["acctLv"]
if acctLv == "1":
print("Simple mode")
elif acctLv == "2":
print("Single-currency margin mode")
elif acctLv == "3":
print("Multi-currency margin mode")
elif acctLv == "4":
print("Portfolio margin mode")5. Comment puis-je définir l'effet de levier pour le trading de produits dérivés avec Jupyter Notebook via Définir l'effet de levier du compte ?
Un paramètre important que nous devons définir lorsque nous tradons des produits dérivés est l'effet de levier.
L'effet de levier permet aux traders d'ouvrir une position d'une valeur bien supérieure en n'engageant qu'un faible montant de fonds. Les gains ou les pertes sont donc fortement augmentés.
Les traders peuvent bénéficier d'un effet de levier allant jusqu'à 125x lorsqu'ils font du trading de produits dérivés sur OKX. Vous pouvez lire les références de la définition de l'effet de levier pour les différents niveaux d'effet de levier autorisés sous différents niveaux de positions.
Voici ce que signifient les glossaires ci-dessus :
Effet de levier max. : Nombre maximum de fois où le capital emprunté peut être multiplié pour accroître le rendement potentiel d'un investissement.
Taux de marge initiale (IMR) : Marge requise pour détenir les positions actuelles.
Taux de marge de maintenance (MMR) : La marge de maintenance correspond à la marge minimale nécessaire pour maintenir les positions actuelles. Une liquidation aura lieu si les fonds propres du compte sont inférieurs à la marge de maintenance.
Par exemple, lorsque vous souhaitez trader 3 000 contrats perpétuels ETHUSDT, vous pouvez utiliser un effet de levier au maximum 75 fois plus élevé que le capital que vous détenez. IMR = 1 / 75 = 1,3 %, et vous devez maintenir un MMR de 0,8 % ou plus pour éviter la liquidation.
Il existe 9 scénarios différents pour les paramètres d'effet de levier via les API ouvertes OKX. Veuillez vous référer aux Scénarios de configuration de l'effet de levier pour les différents cas.
Pour les swaps perpétuels, il existe 3 scénarios différents définir l'effet de levier :
Définissez l'effet de levier des instruments SWAP en trading marge croisée au niveau du contrat.
Définissez l'effet de levier des instruments SWAP en mode de trading marge isolée au niveau du contrat.
Définissez l'effet de levier des instruments SWAP en mode de trading marge isolée et en mode de position longue/courte, au niveau du contrat et du côté de la position.
L'exemple suivant montre comment définir l'effet de levier d'un contrat SWAP unique et d'un côté de la position, par rapport à l'ensemble des contrats SWAP pour un certain sous-jacent.
# Set leverage to be 5x for all cross-margin BTC-USDT SWAP positions,
# by providing the SWAP instId
result = accountAPI.set_leverage(
instId = "BTC-USDT-SWAP",
lever = "5",
mgnMode = "cross"
)
print(result)
# In buy/sell position mode, set leverage to be 5x
# for all isolated-margin BTC-USDT SWAP positions
# by providing the SWAP instId
result = accountAPI.set_leverage(
instId = "BTC-USDT-SWAP",
lever = "5",
mgnMode = "isolated"
)
print(result)
# In long/short position mode, set leverage to be 5x
# for an isolated-margin BTC-USDT-SWAP long position;
# This does NOT affect the leverage of the BTC-USDT-SWAP
# short positions
result = accountAPI.set_leverage(
instId = "BTC-USDT-SWAP",
lever = "5",
posSide = "long",
mgnMode = "isolated"
)
print(result)Notez que le paramètre de requête posSide n'est requis que lorsque le mode de marge est isolé en mode de position long/short pour les instruments CONTRATS À TERME/PERPÉTUELS (cf. scénarios 6 et 9 dans Scénarios de configuration de l'effet de levier).
6. Comment puis-je passer des ordres pour le trading de dérivés avec Jupyter Notebook selon les différents modes de position (ou de passage d'ordres) : long/court et achat/vente ?
Il existe deux modes de position (placement d'ordres) pour le trading de CONTRATS PERPÉTUELS et À TERME : long/court et achat/vente (net).
Vous pouvez changer le mode de position (passage d'ordres) entre long/court et achat/vente (net) via l'API Définir le mode de position :
result = accountAPI.set_position_mode(
posMode = "long_short_mode"
)
print(result)Ou bien, vous pouvez le faire par le biais des Paramètres sur l'interface Web comme ci-dessous :
En mode achat/vente (net), la position d'un certain contrat correspond à la quantité nette de vos trades d'achat et de vente. Lors de la passation d'ordres via Passer un ordre, le paramètre de requête posSide n'est pas obligatoire. Si vous le fournissez, la seule valeur valide est net.
En mode long/court, les positions longues et courtes d'un contrat sont indépendantes et doivent être clôturées séparément. Lors de la passation d'ordres via Passer un ordre, le paramètre posSide est obligatoire. Les valeurs valides sont long ou court. Ci-dessous, comment définir les paramètres side (côté de l’ordre) et posSide (côté de la position) selon différents scénarios :
Passer un ordre d'achat et ouvrir / augmenter une position longue : side = achat, posSide = long
Passer un ordre de vente et ouvrir / augmenter une position courte : side = vente, posSide = court
Passer un ordre de vente et clôturer / réduire une position longue : side = vente, posSide = long
Passer un ordre d'achat et clôturer / réduire une position courte : side = achat, posSide = court Vous êtes maintenant prêt à passer des ordres de dérivés !
6.1 Passer un ordre à cours limité via Passer un ordre
Achat d'un contrat Swap de 100 BTC-USDT au prix de 19 000 USDT.
# limit order
result = tradeAPI.place_order(
instId = "BTC-USDT-SWAP",
tdMode = "isolated",
side = "buy",
posSide = "net",
ordType = "limit",
px = "19000",
sz = "100"
)
print(result)
if result["code"] == "0":
print("Successful order request,order_id = ",result["data"][0]["ordId"])
else:
print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])6.2 Passer un ordre au prix du marché via Passer un ordre
Achat d'un contrat Swap de 100 BTC/USDT au prix du marché.
# market order
result = tradeAPI.place_order(
instId = "BTC-USDT-SWAP",
tdMode = "isolated",
side = "buy",
posSide = "net",
ordType = "market",
sz = "100"
)
print(result)
if result["code"] == "0":
print("Successful order request,order_id = ",result["data"][0]["ordId"])
else:
print("Unsuccessful order request,error_code = ",result["data"][0]["sCode"], ", Error_message = ", result["data"][0]["sMsg"])7. Comment obtenir les détails d'un ordre pour le trading de dérivés avec Jupyter Notebook via Obtenir les détails de l'ordre ?
Outre ordId, vous pouvez également spécifier clOrdId pour obtenir les détails de l'ordre.
result = tradeAPI.get_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)8. Comment annuler un ordre pour le trading de dérivés avec Jupyter Notebook via Annuler un ordre ?
You also use __clOrdId__ in place of __ordId__
result = tradeAPI.cancel_order(instId="BTC-USDT-SWAP", ordId="505073046126960640")
print(result)9. Comment modifier un ordre pour le trading de dérivés avec Jupyter Notebook via Modifier un ordre ?
Vous pouvez également utiliser clOrdId au lieu de ordId. Cet exemple montre la révision d'une nouvelle taille.
result = tradeAPI.amend_order(
instId = "BTC-USDT-SWAP",
ordId = "505073046126960640",
newSz = "80"
)
print(result)10. Comment obtenir la liste des ordres ouverts pour le trading de dérivés avec Jupyter Notebook via Obtenir la liste des ordres ?
result = tradeAPI.get_order_list()
print(result)11. Comment obtenir l'historique des ordres pour le trading de dérivés avec Jupyter Notebook via Obtenir l'historique des ordres (7 derniers jours) et Obtenir l'historique des ordres (3 derniers mois) ?
# Get order history (last 7 days)
result = tradeAPI.get_orders_history(
instType = "SWAP"
)
print(result)
# Get order history (last 3 months)
result = tradeAPI.get_orders_history_archive(
instType = "SWAP"
)
print(result)12. Comment obtenir les détails des transactions pour le trading de dérivés avec Jupyter Notebook via Obtenir les détails des transactions (3 derniers jours) et Obtenir les détails des transactions (3 derniers mois) ?
# Get transaction details (last 3 days)
result = tradeAPI.get_fills()
print(result)
# Get transaction details (last 3 months)
result = tradeAPI.get_fills_history(
instType = "SWAP"
)
print(result)13. Comment obtenir les positions pour le trading de dérivés avec Jupyter Notebook via Obtenir les positions ?
En mode net, la position net de chaque contrat sera affichée. En mode long/court, les positions longues et courtes de chaque contrat seront affichées séparément.
result = accountAPI.get_positions()
print(result)Par exemple, vous pouvez suivre votre profit et perte non réalisés via le paramètre de réponse upl.
Plus d'exemples
Pour plus d'exemples, téléchargez le Jupyter Notebook complet ici.
Si vous avez des questions sur nos API, vous pouvez rejoindre notre communauté API et les poser à la communauté.