订单输入

OrderEntryWidget 是一个双向买卖面板。它支持市价单、限价单、止损单和止损限价单,只显示与所选类型相关的字段,并在将值传给宿主之前进行校验。

创建并设置交易品种

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('提交', 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 包含 MarketLimitStopStopLimitOrderEntrySides 则包含 BuySell

校验和提交

控件会检查正值、每手数量、价格步长以及最小和最大数量。可选的止盈和止损通过 toggleTpSl 方法启用。

submit(side) 首先调用 validate(side)。数据正确时,submitOrder 处理程序会收到方向和以下对象:

interface OrderEntryValues {
  type: 'market' | 'limit' | 'stop' | 'stoplimit';
  quantity: number;
  limitPrice: number | null;
  stopPrice: number | null;
  takeProfit: number | null;
  stopLoss: number | null;
}

控件本身不会选择投资组合、检查连接或向服务器发送订单。这些操作由宿主的处理程序负责。

价格、数量和状态

  • setBbo(bid, ask) 更新最佳买价和卖价。
  • applyBbo(side) 将 BBO 的另一侧价格填入所选列,以便立即成交。
  • setAvailable(side, value) 设置显示的可用余额。
  • setMaxQuantity(side, value) 设置百分比按钮用于计算数量的最大值。
  • applyPercent(side, pct) 应用通过 setMaxQuantity(side, value) 设置的最大数量的 25%、50%、75% 或 100%。
  • preselect(side) 在“单击交易”手势后预选方向。
  • setEnabled(false) 禁止提交,但保留已经输入的值。
  • getValues(side)validate(side) 允许从外部检查表单。

静态方法 toApiTypeLimit 转换为 0Market 转换为 1,并将 StopStopLimit 转换为 2

另请参阅