Ordens ativas
ActiveOrdersWidget apresenta a lista completa de ordens com os respetivos estados atuais. As linhas executadas, canceladas e rejeitadas permanecem na tabela, permitindo ao utilizador ver toda a sequência de alterações durante a sessão.
Criação
import {
ActiveOrdersWidget,
OrderStates,
type TradingHost,
} from '@stocksharp/trading-controls';
declare const host: TradingHost;
let orders!: ActiveOrdersWidget;
orders = ActiveOrdersWidget.create(
document.querySelector<HTMLElement>('#orders')!,
{},
{
host,
cancelOrder: id => console.log('cancelar', id),
dismissOrder: id => orders.removeOrder(id),
editOrderField: (id, field) => {
if (field === 'quantity' || field === 'limitPrice' || field === 'stopPrice')
orders.startInlineEdit(id, field);
},
replaceOrder: (id, quantity, limitPrice, stopPrice) =>
console.log('substituir', id, quantity, limitPrice, stopPrice),
cancelAllOrders: () => console.log('cancelar todas'),
refreshOrders: () => orders.update([]),
},
);
orders.update([{
id: 501,
localId: 1,
instrument: 'BTC@IMEX',
side: 0,
type: 0,
quantity: 0.01,
limitPrice: 68_400,
status: OrderStates.Active,
}]);
update substitui todo o conjunto de linhas. Para alterações em tempo real, utilize applyDelta(order) e, para eliminar uma linha, removeOrder(orderId).
Edição e ações
Enquanto a ordem estiver no estado Sent ou Active, a quantidade pode sempre ser alterada com um duplo clique. O preço limite só pode ser editado quando o valor original de limitPrice for superior a zero, e o preço de paragem apenas quando o valor original de stopPrice for superior a zero. Após a confirmação, o controlo chama replaceOrder e fornece simultaneamente os três valores quantity, limitPrice e stopPrice, não apenas o campo alterado.
Para uma ordem ativa, o botão de ação chama cancelOrder. Para uma linha num estado terminal, chama dismissOrder e elimina a entrada apenas da apresentação local. O motivo da rejeição em rejectReason é apresentado numa descrição emergente.
O controlo também permite cancelar todas as ordens, atualizar, ordenar, selecionar linhas, abrir o menu de contexto e exportar para XLSX.
Métodos públicos
update(orders)— substituir todas as linhas.applyDelta(order)— adicionar ou atualizar uma ordem.removeOrder(orderId)— eliminar uma linha.getOrder(orderId)— obter a linha atual.startInlineEdit(orderId, field)— começar a editarquantity,limitPriceoustopPrice.dispose()— libertar os recursos do controlo.
O objeto OrderStates exporta os estados PendingRisk, Sent, Active, PartiallyFilled, Filled, Rejected e Cancelled.