Contrats pour
DonnéesPas d'authentificationObtenez les contrats disponibles pour un symbole. Les paramètres de requête, les données de marché, les champs d’affichage et Snowball sont supprimés, et display_number_of_contracts peut être null.
6 modifications majeures
display_number_of_contracts peut être null.Comparaison rapide
Modifications majeures
1. Paramètres de requête supprimés
La requête n’accepte plus currency, landing_company, landing_company_short, product_type ni loginid.
Modification requise : Supprimez ces paramètres de vos requêtes contracts_for .
2. Les champs de données de marché sont supprimés
L’objet contracts_for ne renvoie plus spot, open, close, feed_license ni non_available.
Modification requise : Utilisez ticks pour les prix spot et trading_times pour les heures de marché.
3. Les champs d’affichage sont supprimés
Les contrats dans available ne renvoient plus contract_display ni contract_category_display.
Modification requise : Créez les noms d’affichage à partir de contract_type et contract_category à la place.
4. Métadonnées de contrat supprimées
Les contrats dans available ne renvoient plus barrier_category, exchange_name, start_type, forward_starting_options ni trading_period. L’API Legacy renvoyait toujours barrier_category, contract_category_display, exchange_name et start_type.
Modification requise : Cessez de lire ces champs.
5. Choix Snowball supprimés
Les contrats dans available ne renvoient plus duration_choices ni trade_risk_profile_choices, qui décrivaient les contrats Snowball.
Modification requise : Cessez de lire ces champs.
6. display_number_of_contracts peut être null
display_number_of_contracts était toujours un nombre dans la Legacy API. Dans la New API, il peut être null.
Modification requise : Gérez une valeur null avant de l’afficher ou d’effectuer des calculs avec elle.
Structure de la demande
{
"contracts_for": "R_100",
"currency": "USD",
"landing_company": "svg",
"product_type": "basic",
"req_id": 1
}{
"contracts_for": "R_100",
"req_id": 1
}Structure de réponse
{
"contracts_for": {
"available": [
{
"barriers": 0,
"contract_category": "callput",
"contract_type": "CALL",
"expiry_type": "intraday",
"market": "synthetic_index",
"max_contract_duration": "1d",
"min_contract_duration": "15s",
"sentiment": "up",
"submarket": "random_index",
"underlying_symbol": "R_100",
"barrier_category": "euro_atm",
"contract_category_display": "Up/Down",
"contract_display": "Higher",
"exchange_name": "RANDOM",
"start_type": "spot"
}
],
"close": 1760054399,
"feed_license": "realtime",
"hit_count": 1,
"open": 1759968000,
"spot": 1234.56
},
"echo_req": {
"contracts_for": "R_100",
"currency": "USD",
"landing_company": "svg",
"product_type": "basic",
"req_id": 1
},
"msg_type": "contracts_for",
"req_id": 1
}{
"contracts_for": {
"available": [
{
"barriers": 0,
"contract_category": "callput",
"contract_type": "CALL",
"expiry_type": "intraday",
"market": "synthetic_index",
"max_contract_duration": "1d",
"min_contract_duration": "15s",
"sentiment": "up",
"submarket": "random_index",
"underlying_symbol": "R_100"
}
],
"hit_count": 1
},
"echo_req": {
"contracts_for": "R_100",
"req_id": 1
},
"msg_type": "contracts_for",
"req_id": 1
}Exemples de code
function getContracts(symbol) {
ws.send(JSON.stringify({ contracts_for: symbol, currency: "USD", landing_company: "svg" }));
ws.onmessage = (event) => {
const response = JSON.parse(event.data);
if (response.msg_type !== "contracts_for" || !response.contracts_for) return;
console.log("Spot:", response.contracts_for.spot);
response.contracts_for.available.forEach((contract) => {
console.log(contract.contract_display, contract.exchange_name, contract.display_number_of_contracts);
});
};
}D'autres questions ? Nous contacter