Proposition de contrat ouvert
TradingAuthentification requiseObtenez les détails d’un contrat ouvert. Le paramètre loginid est supprimé, les champs de prix et spot sont des chaînes de caractères, underlying est renommé en underlying_symbol, et les champs Tick, d’affichage et Snowball sont supprimés.
8 changements incompatibles
loginid est supprimé, les champs de prix et de spot sont renvoyés sous forme de chaînes de caractères, underlying est renommé en underlying_symbol, et les champs tick, spot de vente, affichage, is_forward_starting et Snowball ne sont plus renvoyés.Comparaison rapide
Modifications majeures
1. loginid paramètre supprimé
Dans l’API Legacy, loginid sélectionnait le compte lorsque vous autorisiez plusieurs comptes. La nouvelle API ne l’accepte pas.
Modification requise : Supprimez loginid de vos requêtes proposal_open_contract . Votre token sélectionne le compte.
2. Les champs de prix et de spot sont désormais des chaînes de caractères
Ces champs étaient des nombres dans l’API Legacy et sont des chaînes de caractères dans la nouvelle API :
- Chaînes de caractères :
bid_price,buy_price,current_spot,payoutetprofit. - Chaînes de caractères pouvant être null, comme auparavant :
commissionetentry_spot. - Chaînes de caractères pouvant désormais être null :
selected_spotetsell_price.
cancellation.ask_price reste un nombre, mais peut désormais être null.
Modification requise : Convertissez ces champs en nombres avant d’effectuer des calculs avec eux et gérez null.
3. underlying renommé en underlying_symbol
Le contrat renvoie son symbole sous underlying_symbol au lieu de underlying.
Modification requise : Lisez underlying_symbol au lieu de underlying.
4. Les champs Tick sont remplacés par des champs spot
entry_tick, entry_tick_time, exit_tick et exit_tick_time ne sont plus renvoyés. Utilisez plutôt entry_spot, entry_spot_time, exit_spot et exit_spot_time .
Modification requise : Lisez les champs spot au lieu des champs tick.
5. sell_spot et sell_spot_time supprimés
sell_spot et sell_spot_time ne sont plus renvoyés.
Modification requise : Lisez exit_spot et exit_spot_time à la place.
6. Champs d’affichage supprimés
display_name, display_value, current_spot_display_value, entry_spot_display_value, entry_tick_display_value, exit_tick_display_value et sell_spot_display_value ne sont plus renvoyés. Il en va de même pour commision, un doublon mal orthographié de commission.
Modification requise : Formatez vous-même les prix et les spots à partir des champs de chaîne de caractères, par exemple bid_price à la place de display_value.
7. is_forward_starting supprimé
is_forward_starting n’est plus renvoyé.
Modification requise : Ne lisez plus is_forward_starting.
8. Champs Snowball supprimés
caution_price, coupon_collection_epochs, coupon_rate, num_of_coupons, profit_price et trade_risk_profile, qui décrivaient les contrats Snowball, ne sont plus renvoyés.
Modification requise : Cessez de lire ces champs.
Structure de la demande
{
"proposal_open_contract": 1,
"contract_id": 11542203588,
"subscribe": 1,
"loginid": "CR123456",
"req_id": 1
}{
"proposal_open_contract": 1,
"contract_id": 11542203588,
"subscribe": 1,
"req_id": 1
}Structure de réponse
{
"echo_req": {
"proposal_open_contract": 1,
"contract_id": 11542203588,
"subscribe": 1,
"loginid": "CR123456",
"req_id": 1
},
"msg_type": "proposal_open_contract",
"proposal_open_contract": {
"contract_id": 11542203588,
"contract_type": "CALL",
"currency": "USD",
"date_expiry": 1760000300,
"date_start": 1760000000,
"id": "c84a793b-8a87-7999-ce10-9b22f7ceead3",
"is_expired": 0,
"is_sold": 0,
"is_valid_to_sell": 1,
"longcode": "Win payout if Volatility 100 Index is strictly higher than entry spot at 5 minutes after contract start time.",
"status": "open",
"bid_price": 12.34,
"buy_price": 10,
"current_spot": 1235.12,
"display_name": "Volatility 100 Index",
"display_value": "12.34",
"entry_spot": 1234.56,
"entry_tick": 1234.56,
"entry_tick_time": 1760000002,
"is_forward_starting": 0,
"payout": 19.55,
"profit": 2.34,
"underlying": "R_100"
},
"req_id": 1,
"subscription": {
"id": "c84a793b-8a87-7999-ce10-9b22f7ceead3"
}
}{
"echo_req": {
"proposal_open_contract": 1,
"contract_id": 11542203588,
"subscribe": 1,
"req_id": 1
},
"msg_type": "proposal_open_contract",
"proposal_open_contract": {
"contract_id": 11542203588,
"contract_type": "CALL",
"currency": "USD",
"date_expiry": 1760000300,
"date_start": 1760000000,
"id": "c84a793b-8a87-7999-ce10-9b22f7ceead3",
"is_expired": 0,
"is_sold": 0,
"is_valid_to_sell": 1,
"longcode": "Win payout if Volatility 100 Index is strictly higher than entry spot at 5 minutes after contract start time.",
"status": "open",
"bid_price": "12.34",
"buy_price": "10.00",
"current_spot": "1235.12",
"entry_spot": "1234.56",
"entry_spot_time": 1760000002,
"payout": "19.55",
"profit": "2.34",
"sell_price": null,
"underlying_symbol": "R_100"
},
"req_id": 1,
"subscription": {
"id": "c84a793b-8a87-7999-ce10-9b22f7ceead3"
}
}Exemples de code
function watchContract(contractId, loginId) {
ws.send(JSON.stringify({ proposal_open_contract: 1, contract_id: contractId, subscribe: 1, loginid: loginId }));
ws.onmessage = (event) => {
const response = JSON.parse(event.data);
if (response.msg_type !== "proposal_open_contract" || !response.proposal_open_contract) return;
const contract = response.proposal_open_contract;
console.log(contract.underlying, contract.display_value);
console.log("Profit:", contract.profit.toFixed(2));
console.log("Entry tick:", contract.entry_tick);
};
}D'autres questions ? Nous contacter