Controlos de negociação JavaScript

Controlos de negociação JavaScript da StockSharp é um conjunto de painéis para navegador destinados a um terminal de negociação. O pacote está publicado no npm como @stocksharp/trading-controls e todos os controlos podem ser vistos na demonstração online.

Ecrã de negociação com fluxo de negócios, livro de ofertas, lista de instrumentos, introdução de ordens e tabelas

A imagem também mostra um gráfico de velas do pacote separado @stocksharp/chart. @stocksharp/trading-controls inclui sete controlos autónomos:

Controlo Classe Identificador
Ordens ativas ActiveOrdersWidget activeOrders
Posições PositionsWidget positions
Histórico de negócios TradeHistoryWidget tradeHistory
Lista de instrumentos WatchlistWidget watchlist
Introdução de ordens OrderEntryWidget orderEntry
Livro de ofertas OrderBookWidget orderbook
Fluxo de negócios TradeFeedWidget tradefeed

Os valores dos identificadores estão disponíveis através do objeto exportado ControlTypes.

Instalação

npm install @stocksharp/trading-controls

Os estilos principais são obrigatórios. A paleta clara e escura pronta pode ser ligada adicionalmente ou substituída pelas suas próprias variáveis CSS --t-*:

import '@stocksharp/trading-controls/styles.css';
import '@stocksharp/trading-controls/theme.css'; // Opcional: tema pronto.

Os controlos utilizam classes de Bootstrap Icons, mas não incluem os próprios tipos de letra nem SVG. A página anfitriã deve ligar os ícones separadamente.

Para uma página sem empacotador, utilize o ficheiro dist/sstradingcontrols.js, que cria o objeto global window.SSTradingControls.

Esquema geral de criação

Cada controlo é criado pelo método estático create. O método valida o anfitrião, constrói o seu próprio DOM e adiciona o elemento raiz ao contentor fornecido:

import {
  PositionsWidget,
  type TradingHost,
} from '@stocksharp/trading-controls';

declare const host: TradingHost;

const positions = PositionsWidget.create(
  document.querySelector<HTMLElement>('#positions')!,
  {},
  {
    host,
    closePosition: (portfolioId, instrumentId, symbol) =>
      console.log('fechar', portfolioId, instrumentId, symbol),
    reversePosition: (portfolioId, instrumentId, symbol) =>
      console.log('inverter', portfolioId, instrumentId, symbol),
    refreshPositions: () => console.log('atualizar'),
  },
);

positions.update([]);

O segundo argumento é o estado guardado da instância. O conjunto de dependências no terceiro argumento varia entre controlos: por exemplo, o painel de posições recebe os processadores de fecho e inversão, enquanto o livro de ofertas recebe os processadores de seleção e execução do preço.

Contrato TradingHost

Os controlos não acedem diretamente a um tradutor global, ao armazenamento das definições, à ligação de negociação ou ao gestor de janelas. Toda a interação externa passa por um único objeto TradingHost.

Membro do anfitrião Finalidade
isPrimary Indica a instância principal do controlo na página.
t(key, ...args) Traduz o texto visível e insere os argumentos.
presentation Formata a direção, o tipo e o estado da ordem, as classes de lucro e a paleta do canvas.
preferences, cache Guardam definições persistentes e dados temporários.
trading.api Procura instrumentos e carrega execuções.
trading.marketData Gere subscrições e fornece ordens ativas.
trading.portfolioId() Devolve a carteira atual.
trading.pickInstrument(...) Abre a seleção de instrumentos.
ticker Recebe os instrumentos visíveis e as respetivas cotações.
allow(action) Verifica a permissão para uma ação.
close, spawn, persistState, saveLayout Gerem o ciclo de vida e o estado do painel.
register, unregister, broadcast Registam instâncias e distribuem alterações entre elas.
log(message) Recebe mensagens de diagnóstico.

Todos os membros são obrigatórios. assertHost verifica as funções aninhadas antes de apresentar o controlo e indica o caminho exato que falta. Se a aplicação não necessitar de algumas funcionalidades, podem ser fornecidas implementações alternativas adequadas para os comandos obrigatórios, por exemplo log: console.warn ou um saveLayout vazio.

Localização e estilo

Os controlos obtêm todo o texto visível exclusivamente através de host.t. A lista completa e atual de 153 chaves é fornecida em @stocksharp/trading-controls/translation-keys.json. Uma chave desconhecida é apresentada ao utilizador sem alterações, pelo que o anfitrião deve definir traduções para toda a lista.

O ficheiro styles.css contém as regras, mas obtém as cores, os tipos de letra e as dimensões das variáveis CSS --t-*. Se o theme.css pronto não for utilizado, essas variáveis são definidas pela aplicação. As cores do canvas do livro de ofertas e do fluxo em bolhas são devolvidas por host.presentation.canvasPalette().

Libertação de recursos

Ao remover um painel, chame dispose(). O método remove os processadores, desliga os observadores e as subscrições do controlo quando existirem e, em seguida, chama host.unregister.

positions.dispose();

Compilação a partir do código-fonte

git clone https://github.com/StockSharp/JS-TradingControls.git
cd JS-TradingControls
npm install
npm test
npm run build

Consulte também