BJF Trading Group Inc. — Ontário, Canadá Contato Área de membros Blog
EN DE JA AR KO ES PT ID VI CN



Para desenvolvedores · Plataforma SharpTrader

Desenvolva sobre o SharpTrader: API de bots em C#, conectividade EasyFIX e a biblioteca de gráficos BjfChart

O SharpTrader é uma plataforma de trading feita para traders, não para brokers, e está aberta a quem escreve código para eles. Escreva suas próprias estratégias em C# dentro da plataforma, conecte seu software externo ao motor de execução por meio da EasyFIX API ou integre nossa biblioteca de gráficos de candles acelerada por GPU ao seu próprio terminal .NET.

Estratégias em C# com ticks em tempo real e sessões com vários brokers
EasyFIX API: mais de 50 conectores FIX, exchanges de cripto
DLL BjfChart: 22 indicadores, ferramentas de desenho, boleta de ordens
.NET Framework 4.8 e .NET 8

Assista à demonstração dos gráficos Contatos para desenvolvedores



C#linguagem nativa de estratégias, compilada dentro do SharpTrader 50+conectores FIX API para brokers, além das principais exchanges de cripto 22indicadores no BjfChart, verificados contra cálculos de referência 2alvos em uma única DLL: net48 para aplicações legadas, net8.0-windows para as novas



Três formas de desenvolver com a BJF

Cada opção resolve um problema diferente. Escolha a que corresponde a onde seu código está.

Dentro da plataforma

Módulo de programação: API de bots em C#

Escreva uma estratégia como uma classe C#, compile-a dentro do SharpTrader e execute-a em qualquer broker ou exchange conectado. Ticks, posições, ordens e indicadores estão todos a uma chamada de distância.

Saiba mais sobre a API de bots

Fora da plataforma

EasyFIX API

Mantenha seu próprio motor, em qualquer linguagem, e deixe o SharpTrader ser o gateway: ele transmite cotações para você e roteia suas ordens pelos conectores de brokers e exchanges.

Saiba mais sobre a EasyFIX

No seu próprio terminal

Biblioteca de gráficos BjfChart

Uma única DLL que oferece à sua aplicação .NET gráficos de candles profissionais, indicadores, ferramentas de desenho, um painel de trading e um livro de ofertas, com feed de ticks em tempo real.

Conheça a biblioteca de gráficos



Módulo de programação: escreva estratégias em C#

O módulo de programação transforma o SharpTrader em um ambiente de desenvolvimento para estratégias automatizadas. Um bot é uma classe C# que herda da classe base Bot da plataforma e reage a eventos: inicialização, cada tick recebido, posição aberta, posição fechada e atualizações de status de ordens. A plataforma o compila, mostra seus parâmetros de entrada na interface e o executa em contas reais ou demo, lado a lado com as estratégias integradas de arbitragem, notícias e impulso.

O que a API oferece

Área O que você pode fazer
Dados de mercado Bid, ask, spread e valor do ponto por símbolo e por sessão, por meio do objeto ticker. Uma sessão é uma conta conectada em um broker ou exchange, então um único bot pode acompanhar e operar várias contrapartes ao mesmo tempo pelo índice da sessão.
Ordens e posições sendOrder para execução a mercado, modifyPositionByID para stop-loss e take-profit, closePositionByID, buscas por ID ou por comentário e listas em tempo real de ordens abertas, fechadas e pendentes.
Detalhes da posição Cada posição contém preços e horários de abertura e fechamento, volume, lado, sessão, lucro, comentário, stop-loss, take-profit e o slippage e o tempo de execução medidos para as duas pontas. É essa última parte que permite a um bot se adaptar à forma como um broker realmente executa suas ordens.
Indicadores Funções de indicadores integradas, como EMA e MACD, em qualquer timeframe, continuamente ampliadas com as atualizações da plataforma.
Parâmetros de entrada e logs Propriedades públicas marcadas com [PropertyInfo] aparecem como parâmetros editáveis na interface; writeLog grava no log da plataforma; stopBot interrompe a estratégia pelo código.
Estado da conta Saldo e patrimônio líquido por sessão para regras de risco e dimensionamento de posições.

Um esqueleto mínimo de estratégia

// Illustrative skeleton. Names follow the SharpTrader coding library reference.
using SharpTraderBot;

public class SpreadGuardBot : Bot
{
    [PropertyInfo(0.10, "Lot size")]
    public double Lots { get; set; }

    [PropertyInfo(20, "Max spread, points")]
    public int MaxSpreadPoints { get; set; }

    string _inFlight;                            // one order in flight per tick

    public virtual void OnInit() { writeLog("SpreadGuardBot started"); }

    public virtual void OnTick(NewTickEventArgs args)
    {
        int session = 0;                         // session index = broker account
        string symbol = args.tick.symbol;

        double point  = ticker.getPointValue(session, symbol);
        double spread = (ticker.getAsk(session, symbol) - ticker.getBid(session, symbol)) / point;

        if (spread > MaxSpreadPoints || _inFlight != null) return;

        _inFlight = sendOrder(session, symbol, Lots, OrderSide.BUY, OrderType.MARKET, 0, "spread-guard");
    }
}
Bom saber antes de escrever a primeira linha. O sandbox compila com um conjunto fixo de assemblies: System, System.Collections, System.Runtime, System.Console e a biblioteca de bots do SharpTrader. O LINQ não está entre eles, então escreva loops foreach simples em vez de Where, Select ou Any. Os preços da API estão em pontos do broker; multiplique pelo valor do ponto antes de comparar com seus próprios limites. E mantenha uma única ordem em andamento por tick, controlada pelo ID de ordem do cliente retornado, a menos que você goste de depurar execuções duplicadas.

Referência completa de classes, métodos e eventos: documentação da biblioteca de programação do SharpTrader. O módulo de programação é um complemento do SharpTrader Pro; consulte a página do SharpTrader Pro para o pacote atual.



EasyFIX API: conecte seu próprio software ao SharpTrader

Nem tudo pertence ao interior da plataforma. Se você já executa um motor de sinais, um gerenciador de risco, um front-end personalizado ou um pipeline de pesquisa, a EasyFIX permite que ele se comunique com o SharpTrader por meio de um protocolo FIX simplificado. O SharpTrader se torna seu gateway de execução: ele mantém as conexões com brokers e exchanges, e você envia ordens e recebe cotações e execuções a partir do seu próprio código, na linguagem que preferir.

O que a EasyFIX transporta

  • Dados de mercado: cotações dos símbolos que você assina, de qualquer sessão que o SharpTrader tenha aberta.
  • Fluxo de ordens: novas ordens, modificações e fechamentos roteados para a sessão escolhida.
  • Relatórios de execução: execuções, rejeições, status de posições e ordens de volta para sua aplicação.
  • Acesso aos mesmos mais de 50 conectores FIX API de brokers e às conexões com as principais exchanges de cripto que o SharpTrader usa para suas próprias estratégias.

Integrações típicas

  • Uma estratégia externa escrita em Python, Java, C++ ou qualquer linguagem com um socket e um gerador de mensagens FIX.
  • Uma camada de risco corporativa que supervisiona várias instâncias do SharpTrader.
  • Uma interface gráfica de trading ou painel personalizado sobre a execução do SharpTrader.
  • Gravação de cotações e execuções para pesquisa, backtesting e auditorias de execução de brokers.

A EasyFIX é um dialeto FIX modificado: mantém o modelo de mensagens que os desenvolvedores já conhecem, dispensando as formalidades de que uma conexão entre varejo e gateway não precisa. A especificação, sessões de exemplo e uma conexão de teste estão disponíveis mediante solicitação para usuários do SharpTrader Pro e Lite. Escreva para support@bjftradinggroup.com com uma breve descrição do que você pretende conectar.



BjfChart: a biblioteca de gráficos por trás dos novos gráficos do SharpTrader

Em 2026 reconstruímos do zero os gráficos do SharpTrader, e o motor por trás deles está disponível para desenvolvedores como uma biblioteca independente. O BjfChart é um controle de gráficos de candles acelerado por GPU para WinForms, construído sobre SkiaSharp. Ele renderiza dezenas de milhares de barras a 60 quadros por segundo e é distribuído como uma única BjfChart.dll compatível com net48 e net8.0-windows, podendo ser integrado tanto a terminais legados em .NET Framework quanto a novas aplicações .NET 8.

Vídeo: SharpTrader Charting, nova biblioteca de gráficos e demonstração do trading manual

Oito timeframes, indicadores, ferramentas de Fibonacci e de tendência, uma boleta de ordens com linhas de stop-loss e take-profit arrastáveis e gráficos com vários brokers, mostrados ao vivo dentro do SharpTrader. Abrir no YouTube

O que a biblioteca inclui

Motor de gráficos

  • Renderização de candles com subpainel de volume, cursor em cruz, etiqueta de preço em tempo real e legenda OHLC flutuante.
  • Zoom com a roda do mouse que mantém fixa a barra sob o cursor, deslocamento clicando e arrastando.
  • Feed em tempo real: PushTick incorpora um tick à última barra, FeedTick agrupa ticks automaticamente em candles de qualquer intervalo.
  • Sobreposições de vários símbolos para comparação, com escala independente ou compartilhada.
  • Persistência do layout em JSON: indicadores, desenhos, sobreposições e área de visualização são salvos e restaurados.
  • Temas escuro (azul-marinho e dourado BJF) e claro, alternáveis em tempo de execução, com todas as cores editáveis.
  • Marca d’água a partir de um arquivo de logo, URL ou texto atrás dos candles.

Camada de trading

  • TradingPanel: uma boleta de ordens (compra e venda a mercado, limit ou stop, quantidade, preço, stop-loss, take-profit) com exibição da posição e do P/L em tempo real.
  • Linhas de entrada, stop-loss, take-profit e ordens pendentes desenhadas automaticamente no gráfico; stop-loss e take-profit são arrastáveis e disparam eventos ao serem soltos.
  • O painel não executa nada por si só. Ele dispara eventos para sua camada de execução, seja ela uma sessão FIX API, uma ponte com o broker ou o SharpTrader via EasyFIX.
  • OrderBookPanel: uma escada de profundidade de mercado com tamanho por nível e barras de profundidade proporcionais; clique em um nível para preencher previamente um preço limite.
  • Linhas de preço arbitrárias por ID para ordens do broker, com arraste opcional.

Indicadores e ferramentas de desenho

Grupo Incluído
Indicadores sobrepostos SMA, EMA, WMA, VWAP, Bandas de Bollinger, Canais de Keltner, Canais de Donchian, Envelope, Parabolic SAR.
Indicadores em subpainel RSI, MACD com histograma, Estocástico, ATR, CCI, ADX / DMI, Momentum, Rate of Change, Williams %R, Awesome Oscillator, Desvio Padrão, On-Balance Volume, Money Flow Index.
Precisão Os cálculos dos indicadores são verificados contra implementações de referência independentes: SMA, EMA, Bollinger, RSI, ATR, Estocástico e CCI coincidem até 1e-9; MACD, ADX, DI, Williams %R, MFI e OBV são validados quanto à correção e ao intervalo de valores.
Ferramentas de desenho Linha de tendência, raio, linha estendida, linha e raio horizontais, linha vertical, seta, canal paralelo, retângulo, elipse, retração de Fibonacci, extensão de Fibonacci e uma ferramenta de medição que mostra a variação de preço, a variação percentual e o número de barras. Todas ancoradas no espaço dos dados, permanecendo fixas durante o zoom e o deslocamento.
Extensibilidade Implemente IIndicator (ou crie uma subclasse de IndicatorBase), retorne uma ou mais séries alinhadas à lista de candles, escolha sobreposição ou subpainel, linha, histograma ou pontos, e registre-o para que apareça no menu do botão direito e nos layouts salvos.

Dez linhas para um gráfico funcionando

using BjfChart;
using BjfChart.Indicators;
using BjfChart.Models;

var chart = new ChartControl { Dock = DockStyle.Fill };
form.Controls.Add(chart);

chart.SetData(myCandles);                          // IEnumerable<Candle>
chart.AddIndicator("ema");
chart.AddIndicator("bb");
chart.AddIndicator("macd");                        // draws in its own sub-panel
chart.AddIndicator(new RsiIndicator(21));          // or by type, with custom parameters

chart.CandleInterval = TimeSpan.FromMinutes(15);   // enables auto-bucketing
chart.FeedTick(DateTime.UtcNow, price, volume);    // rolls a new candle at each boundary

chart.StartDrawing(DrawingKind.FibRetracement);    // next drag draws a fib retracement
chart.SaveLayout(@"C:\layouts\eurusd.json");

// Trading panel wired to your execution layer
var panel = new TradingPanel { Dock = DockStyle.Right, Symbol = "EURUSD" };
panel.AttachChart(chart);                          // draws entry / SL / TP lines on the chart
panel.OrderSubmitted += (s, req) => myExecutionEngine.Send(req);
panel.PositionModified += (s, pos) => broker.Modify(pos);   // after a drag of SL or TP

Tudo o que está no código também pode ser acessado pelo menu do botão direito no gráfico: adicionar ou remover indicadores, escolher uma ferramenta de desenho, gerenciar sobreposições, trocar o tema, salvar ou carregar um layout. Para compilar, a biblioteca exige Windows e o .NET SDK 8.0 ou superior; o NuGet restaura o SkiaSharp automaticamente. Está incluída uma aplicação de demonstração executável com ticks em tempo real simulados.

Usando o BjfChart no seu produto. A biblioteca é licenciada para desenvolvedores do SharpTrader, parceiros white-label e fornecedores de terminais de terceiros. Para dúvidas de uso, termos de licenciamento, uma versão de demonstração ou ajuda para integrá-la ao seu feed de dados, entre em contato diretamente pelos dados abaixo. Informe qual alvo .NET você usa e como é sua fonte de dados, e responderemos em até um dia útil.



Contatos para desenvolvedores

Todas as dúvidas de desenvolvedores vão para a mesma equipe que constrói a plataforma. Para dúvidas sobre a API de bots e a EasyFIX, informe sua versão do SharpTrader e o tipo de conta; para o BjfChart, informe seu alvo .NET e o feed de dados.

E-mailsupport@bjftradinggroup.comIdeal para exemplos de código, especificações e licenciamento Telefone+1 (905) 599-5507Segunda a sexta, das 9:00 às 18:00, horário do Leste (Toronto) Telegramt.me/bjftradinggroupPerguntas rápidas e acompanhamentos

BJF Trading Group Inc., 3397 Mistwell Crescent, Oakville, ON, L6L 0A2, Canadá. Contatos gerais: página de contato.



Perguntas frequentes

Qual linguagem os bots do SharpTrader usam?
C#. Um bot é uma classe que herda a classe base Bot da plataforma e implementa manipuladores de eventos para inicialização, ticks, mudanças de posição e atualizações de status de ordens. Ele é compilado dentro do SharpTrader e executado junto com as estratégias integradas.
Um bot pode operar vários brokers ou exchanges ao mesmo tempo?
Sim. Toda chamada de dados de mercado e de ordens recebe um índice de sessão, e uma sessão é uma conta conectada em um broker ou exchange. Um bot pode ler cotações de uma sessão e enviar ordens para outra, e é assim que se escreve lógica com vários brokers e entre exchanges.
O que é a EasyFIX API e para quem ela é?
A EasyFIX é um protocolo FIX simplificado que permite a softwares externos se conectarem ao SharpTrader como gateway de execução. Ela é para desenvolvedores que mantêm seu próprio motor fora da plataforma e querem receber cotações e enviar ordens pelos conectores de brokers e exchanges do SharpTrader. A especificação e uma conexão de teste são fornecidas mediante solicitação.
O BjfChart está disponível separadamente do SharpTrader?
Sim. O BjfChart é uma biblioteca .NET independente, uma única DLL para net48 e net8.0-windows, construída sobre SkiaSharp. Ela é licenciada para desenvolvedores do SharpTrader, parceiros white-label e fornecedores de terminais. Entre em contato com support@bjftradinggroup.com para termos e uma versão de demonstração.
O painel de trading do BjfChart executa ordens?
Não. O painel dispara eventos (ordem enviada, fechamento de posição solicitado, posição modificada após arrastar o stop-loss ou o take-profit) e a aplicação host os encaminha para sua própria camada de execução, como uma sessão FIX API, uma ponte com o broker ou o SharpTrader via EasyFIX.
Posso adicionar meus próprios indicadores ao BjfChart?
Sim. Implemente a interface IIndicator ou crie uma subclasse de IndicatorBase, retorne uma ou mais séries alinhadas à lista de candles, escolha a renderização em sobreposição ou em subpainel e registre o indicador para que ele apareça no menu do botão direito e seja salvo nos layouts.
O código-fonte do SharpTrader ou do BjfChart está à venda?
Não. A BJF Trading Group licencia versões compiladas e fornece acesso à API, documentação e suporte. O código-fonte não é vendido nem divulgado em nenhum programa.





Conte-nos o que você está construindo

Um bot para uma peculiaridade específica de um broker, um motor externo que precisa de um gateway de execução ou um terminal que precisa de gráficos até sexta-feira. Um e-mail com os detalhes, uma resposta com o próximo passo.

Enviar e-mail à equipe de desenvolvimento Fale conosco no Telegram

A BJF Trading Group Inc. desenvolve ferramentas de software para traders e desenvolvedores experientes. Não somos uma corretora, instituição financeira ou consultora de investimentos, e não executamos operações nem administramos fundos. Os exemplos de código desta página são ilustrativos e podem diferir da referência atual da biblioteca; consulte sempre a documentação da sua versão da plataforma. Operar forex, CFDs e criptomoedas envolve alto risco de perda e não é adequado para todos os investidores. Nada nesta página constitui aconselhamento financeiro ou promessa de lucro.