Активные заявки
ActiveOrdersWidget показывает полный список заявок с их текущими состояниями. Исполненные, отменённые и отклонённые строки остаются в таблице, поэтому пользователь видит всю последовательность изменений в рамках сессии.
Создание
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('cancel', 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('replace', id, quantity, limitPrice, stopPrice),
cancelAllOrders: () => console.log('cancel all'),
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 заменяет весь набор строк. Для потоковых изменений используйте applyDelta(order), а для удаления одной строки — removeOrder(orderId).
Редактирование и действия
Пока заявка находится в состоянии Sent или Active, двойным щелчком всегда можно изменить количество. Лимитная цена редактируется только у заявки, где она уже больше нуля, а стоп-цена — только там, где больше нуля её исходное значение. После подтверждения контрол вызывает replaceOrder и передаёт сразу всю тройку quantity, limitPrice, stopPrice, а не только изменённое поле.
Для активной заявки кнопка действия вызывает cancelOrder. Для терминальной строки она вызывает dismissOrder и удаляет запись только из локального представления. Причина отказа rejectReason показывается во всплывающей подсказке.
Контрол также предоставляет отмену всех заявок, обновление, сортировку, выделение строк, контекстное меню и экспорт в XLSX.
Публичные методы
update(orders)— заменить все строки.applyDelta(order)— добавить или обновить одну заявку.removeOrder(orderId)— удалить строку.getOrder(orderId)— получить текущую строку.startInlineEdit(orderId, field)— начать редактированиеquantity,limitPriceилиstopPrice.dispose()— освободить ресурсы контрола.
Объект OrderStates экспортирует состояния PendingRisk, Sent, Active, PartiallyFilled, Filled, Rejected и Cancelled.