Documentation

Proposition de contrat ouvert

TradingAuthentification requise

Obtenez 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.

Comparaison rapide

AspectLegacy APINew APIAction
Point de terminaisonproposal_open_contractproposal_open_contractAucun
Authentification requiseOuiOuiAucun
loginid paramètreFacultatifSuppriméRetirer des requêtes
Champs de prix et de spotNombresChaînes de caractèresAnalysez comme des nombres
Champ de symboleunderlyingunderlying_symbolRenommez dans votre code
Champs Tickentry_tick, exit_tickentry_spot, exit_spotLisez les champs spot

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, payout et profit.
  • Chaînes de caractères pouvant être null, comme auparavant : commission et entry_spot.
  • Chaînes de caractères pouvant désormais être null : selected_spot et sell_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

Legacy APIexemple de demande
{
  "proposal_open_contract": 1,
  "contract_id": 11542203588,
  "subscribe": 1,
  "loginid": "CR123456",
  "req_id": 1
}
New APIexemple de demande
{
  "proposal_open_contract": 1,
  "contract_id": 11542203588,
  "subscribe": 1,
  "req_id": 1
}

Structure de réponse

Legacy APIexemple 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"
  }
}
New APIexemple de réponse
{
  "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

Click to open live chat support. Get instant help from our support team.