Documentação

Proposta de contrato aberto

NegociaçãoAutenticação Obrigatória

Obtenha os detalhes de um contrato aberto. O parâmetro loginid foi removido, os campos de preço e spot são cadeias de carateres, underlying foi renomeado para underlying_symbol, e os campos Tick, de apresentação e Snowball foram removidos.

Comparação rápida

AspetoLegacy APINew APIAção
Endpointproposal_open_contractproposal_open_contractNenhum
Autenticação ObrigatóriaSimSimNenhum
loginid parâmetroOpcionalRemovidoRemover dos pedidos
Campos de preço e spotNúmerosStringsAnalise como números
Campo do símbolounderlyingunderlying_symbolRenomeie no seu código
Campos Tickentry_tick, exit_tickentry_spot, exit_spotLeia os campos spot

Alterações de rutura

1. loginid parâmetro removido

Na Legacy API, loginid selecionava a conta quando autorizava várias contas. A New API não o aceita.

Alteração necessária: Remova loginid dos seus pedidos proposal_open_contract . O seu token seleciona a conta.

2. Os campos de preço e spot são agora strings

Estes campos eram números na Legacy API e são strings na New API:

  • Cadeias de carateres: bid_price, buy_price, current_spot, payout e profit.
  • Strings que podem ser null, tal como anteriormente: commission e entry_spot.
  • Cadeias de carateres que agora podem ser null: selected_spot e sell_price.

cancellation.ask_price continua a ser um número, mas agora pode ser null.

Alteração necessária: Converta estes campos em números antes de efetuar cálculos com eles e processe null.

3. underlying renomeado para underlying_symbol

O contrato devolve o seu símbolo como underlying_symbol em vez de underlying.

Alteração obrigatória: Leia underlying_symbol em vez de underlying.

4. Campos Tick substituídos por campos spot

entry_tick, entry_tick_time, exit_tick e exit_tick_time já não são devolvidos. Utilize entry_spot, entry_spot_time, exit_spot e exit_spot_time em alternativa.

Alteração necessária: Leia os campos spot em vez dos campos tick.

5. sell_spot e sell_spot_time removidos

sell_spot e sell_spot_time já não são devolvidos.

Alteração necessária: Leia exit_spot e exit_spot_time em vez disso.

6. Campos de apresentação removidos

display_name, display_value, current_spot_display_value, entry_spot_display_value, entry_tick_display_value, exit_tick_display_value e sell_spot_display_value deixaram de ser devolvidos. O mesmo se aplica a commision, um duplicado com erro ortográfico de commission.

Alteração necessária: Formate os preços e spots a partir dos campos de string, por exemplo, bid_price em vez de display_value.

7. is_forward_starting removido

is_forward_starting já não é devolvido.

Alteração obrigatória: Deixe de ler is_forward_starting.

8. Campos Snowball removidos

caution_price, coupon_collection_epochs, coupon_rate, num_of_coupons, profit_price e trade_risk_profile, que descreviam contratos Snowball, já não são devolvidos.

Alteração necessária: Deixe de ler estes campos.

Estrutura de pedido

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

Estrutura de resposta

Legacy APIexemplo de resposta
{
  "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 APIexemplo de resposta
{
  "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"
  }
}

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

Alguma outra questão? Entrar em contacto

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