Entrada de órdenes
OrderEntryWidget es un panel bilateral de compra y venta. Admite órdenes de mercado, limitadas, con activación y limitadas con activación, muestra solo los campos correspondientes al tipo seleccionado y valida los valores antes de pasarlos al anfitrión.
Creación y configuración del instrumento
import {
OrderEntrySides,
OrderEntryTypes,
OrderEntryWidget,
type TradingHost,
} from '@stocksharp/trading-controls';
declare const host: TradingHost;
const pad = OrderEntryWidget.create(
document.querySelector<HTMLElement>('#order-entry')!,
{},
{
host,
submitOrder: (side, values) =>
console.log('enviar', side, values),
},
);
pad.setInstrument({
symbol: 'BTC@IMEX',
lotSize: 0.001,
tickSize: 0.1,
minVolume: 0.001,
maxVolume: 5,
});
pad.setOrderType(OrderEntryTypes.Limit);
pad.setBbo(68_420.4, 68_420.5);
pad.setAvailable(OrderEntrySides.Buy, 48_251);
pad.setMaxQuantity(OrderEntrySides.Buy, 0.7);
pad.setQuantity(0.01);
OrderEntryTypes contiene Market, Limit, Stop y StopLimit, mientras que OrderEntrySides contiene Buy y Sell.
Validación y envío
El control valida los valores positivos, el tamaño del lote, el incremento de precio y el volumen mínimo y máximo. La toma de beneficios y el límite de pérdidas opcionales se activan mediante el método toggleTpSl.
submit(side) llama primero a validate(side). Cuando los datos son correctos, el controlador submitOrder recibe el lado y un objeto:
interface OrderEntryValues {
type: 'market' | 'limit' | 'stop' | 'stoplimit';
quantity: number;
limitPrice: number | null;
stopPrice: number | null;
takeProfit: number | null;
stopLoss: number | null;
}
El control no selecciona la cartera, no comprueba la conexión ni envía la orden al servidor. Estas acciones corresponden al controlador del anfitrión.
Precios, volumen y estado
setBbo(bid, ask)actualiza las mejores ofertas de compra y venta.applyBbo(side)inserta en la columna seleccionada el lado opuesto de la BBO para una ejecución inmediata.setAvailable(side, value)establece el saldo disponible mostrado.setMaxQuantity(side, value)establece el máximo a partir del cual los botones de porcentaje calculan la cantidad.applyPercent(side, pct)aplica el 25, 50, 75 o 100 por ciento del máximo establecido mediantesetMaxQuantity.preselect(side)resalta el lado después de un gesto de negociación con un clic.setEnabled(false)impide el envío sin eliminar los valores introducidos.getValues(side)yvalidate(side)permiten comprobar el formulario desde el exterior.
El método estático toApiType convierte Limit en 0, Market en 1, y Stop y StopLimit en 2.