Actualización de contrato
TradingRequiere autenticaciónActualice parámetros de contrato como take profit y stop loss. El parámetro loginid eliminado, objeto de respuesta ahora requerido y nuevo campo display_order_amount agregado.
3 Cambios Importantes
loginid ha sido eliminado y el objeto de respuesta contract_update ahora es obligatorio.Comparación rápida
Cambios importantes
1. parámetro loginid eliminado
El parámetro loginid ha sido eliminado en New. Este parámetro se usaba anteriormente para especificar qué cuenta actualizar contratos cuando se proporcionaban múltiples tokens durante la autorización.
Cambio requerido: Elimine el campo loginid de sus solicitudes de contract_update. La selección de cuenta ahora se maneja a través del token de autorización.
2. objeto contract_update ahora requerido en la respuesta
El objeto contract_update ahora es un campo obligatorio en el nivel raíz de la respuesta.
Cambio requerido: Ahora puede confiar en que el objeto contract_update siempre estará presente en respuestas exitosas. Elimine cualquier verificación condicional de su existencia.
3. Nuevo campo display_order_amount agregado
Se ha agregado un nuevo campo de cadena display_order_amount a los objetos stop_loss y take_profit en la respuesta.
Cambio requerido: Opcionalmente puede usar este nuevo campo para mostrar cantidades de orden en la interfaz de usuario en lugar de formatear el número order_amount usted mismo.
Estructura de solicitud
{
"contract_update": 1,
"contract_id": 123456789,
"limit_order": {
"stop_loss": 15.00,
"take_profit": 25.00
},
"loginid": "CR123456"
}{
"contract_update": 1,
"contract_id": 123456789,
"limit_order": {
"stop_loss": 15.00,
"take_profit": 25.00
}
}Estructura de respuesta
{
"contract_update": {
"stop_loss": {
"display_name": "Stop loss",
"order_amount": 15.00,
"order_date": 1234567890,
"value": "1234.56"
},
"take_profit": {
"display_name": "Take profit",
"order_amount": 25.00,
"order_date": 1234567890,
"value": "1256.78"
}
},
"echo_req": { "contract_update": 1, "contract_id": 123456789 },
"msg_type": "contract_update"
}{
"contract_update": {
"stop_loss": {
"display_name": "Stop loss",
"display_order_amount": "15.00 USD",
"order_amount": 15.00,
"order_date": 1234567890,
"value": "1234.56"
},
"take_profit": {
"display_name": "Take profit",
"display_order_amount": "25.00 USD",
"order_amount": 25.00,
"order_date": 1234567890,
"value": "1256.78"
}
},
"echo_req": { "contract_update": 1, "contract_id": 123456789 },
"msg_type": "contract_update"
}Ejemplos de código
async function updateContract(contractId, loginId = null) {
const request = {
contract_update: 1,
contract_id: contractId,
limit_order: {
stop_loss: 15.00,
take_profit: 25.00
}
};
// Add loginid if provided (for multi-account)
if (loginId) {
request.loginid = loginId;
}
ws.send(JSON.stringify(request));
ws.onmessage = (event) => {
const response = JSON.parse(event.data);
if (response.msg_type === "contract_update") {
// contract_update may be undefined
if (response.contract_update) {
const sl = response.contract_update.stop_loss;
const tp = response.contract_update.take_profit;
// Format order_amount manually
console.log("Stop Loss:", sl?.order_amount);
}
}
};
}¿Alguna otra pregunta? Póngase en contacto