Documentación

Propuesta de contrato abierto

TradingRequiere autenticación

Obtenga los detalles de un contrato abierto. El parámetro loginid se eliminó, los campos de precio y spot son cadenas, underlying se cambió a underlying_symbol, y se eliminaron los campos Tick, de visualización y Snowball.

Comparación rápida

AspectoLegacy APINew APIAcción
Endpointproposal_open_contractproposal_open_contractNinguno
Requiere autenticaciónSíSíNinguno
loginid parámetroOpcionalEliminadoEliminar de las solicitudes
Campos de precio y spotNúmerosCadenasAnalice como números
Campo symbolunderlyingunderlying_symbolCambie el nombre en su código
Campos de Tickentry_tick, exit_tickentry_spot, exit_spotLea los campos spot

Cambios importantes

1. loginid parámetro eliminado

En la API heredada, loginid seleccionaba la cuenta cuando autorizaba varias cuentas. La nueva API no lo acepta.

Cambio obligatorio: Elimine loginid de sus solicitudes de proposal_open_contract . Su token selecciona la cuenta.

2. Los campos price y spot ahora son cadenas

Estos campos eran números en la API heredada y son cadenas en la nueva API:

  • Cadenas: bid_price, buy_price, current_spot, payout y profit.
  • Cadenas que pueden ser null, como antes: commission y entry_spot.
  • Cadenas que ahora pueden ser null: selected_spot y sell_price.

cancellation.ask_price sigue siendo un número, pero ahora puede ser null.

Cambio obligatorio: Convierta estos campos en números antes de realizar cálculos con ellos y gestione null.

3. underlying se renombró a underlying_symbol

El contrato devuelve su símbolo como underlying_symbol en lugar de underlying.

Cambio obligatorio: Lea underlying_symbol en lugar de underlying.

4. Los campos Tick se reemplazaron por campos spot

entry_tick, entry_tick_time, exit_tick y exit_tick_time ya no se devuelven. Use entry_spot, entry_spot_time, exit_spot y exit_spot_time en su lugar.

Cambio obligatorio: Lea los campos spot en lugar de los campos Tick.

5. sell_spot y sell_spot_time eliminados

sell_spot y sell_spot_time ya no se devuelven.

Cambio obligatorio: Lea exit_spot y exit_spot_time en su lugar.

6. Campos de visualización eliminados

display_name, display_value, current_spot_display_value, entry_spot_display_value, entry_tick_display_value, exit_tick_display_value y sell_spot_display_value ya no se devuelven. Tampoco se devuelve commision, un duplicado mal escrito de commission.

Cambio obligatorio: Dé formato a los precios y valores spot de los campos de cadena, por ejemplo, bid_price en lugar de display_value.

7. is_forward_starting eliminado

is_forward_starting ya no se devuelve.

Cambio obligatorio: Deje de leer is_forward_starting.

8. Se eliminaron los campos Snowball

caution_price, coupon_collection_epochs, coupon_rate, num_of_coupons, profit_price y trade_risk_profile, que describían los contratos Snowball, ya no se devuelven.

Cambio obligatorio: Deje de leer estos campos.

Estructura de solicitud

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

Estructura de respuesta

Legacy APIejemplo de respuesta
{
  "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 APIejemplo de respuesta
{
  "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"
  }
}

Ejemplos de código

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);
  };
}

¿Alguna otra pregunta? Póngase en contacto

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