BJF Trading Group Inc. — Ontario, Canadá Contacto Zona de miembros Blog
EN DE JA AR KO ES PT ID VI CN



Para desarrolladores · Plataforma SharpTrader

Desarrolle sobre SharpTrader: API de bots en C#, conectividad EasyFIX y la librería de gráficos BjfChart

SharpTrader es una plataforma de trading creada para traders, no para brokers, y está abierta a quienes escriben código para ellos. Escriba sus propias estrategias en C# dentro de la plataforma, conecte su software externo a su motor de ejecución mediante la EasyFIX API o integre nuestra librería de gráficos de velas acelerada por GPU en su propio terminal .NET.

Estrategias en C# con ticks en vivo y sesiones multibroker
EasyFIX API: más de 50 conectores FIX, exchanges de criptomonedas
BjfChart DLL: 22 indicadores, herramientas de dibujo, ticket de órdenes
.NET Framework 4.8 y .NET 8

Ver la demostración de gráficos Contactos para desarrolladores



C#lenguaje nativo de estrategias, compilado dentro de SharpTrader 50+conectores FIX API a brokers, además de los principales exchanges de criptomonedas 22indicadores en BjfChart, contrastados con cálculos de referencia 2destinos en una sola DLL: net48 para aplicaciones heredadas, net8.0-windows para las nuevas



Tres formas de desarrollar con BJF

Cada opción resuelve un problema distinto. Elija la que corresponda al lugar donde reside su código.

Dentro de la plataforma

Módulo de programación: API de bots en C#

Escriba una estrategia como una clase C#, compílela dentro de SharpTrader y ejecútela con cualquier broker o exchange conectado. Ticks, posiciones, órdenes e indicadores están a una sola llamada de distancia.

Más información sobre la API de bots

Fuera de la plataforma

EasyFIX API

Mantenga su propio motor, en cualquier lenguaje, y deje que SharpTrader sea la pasarela: le transmite cotizaciones y enruta sus órdenes a través de sus conectores de brokers y exchanges.

Más información sobre EasyFIX

En su propio terminal

Librería de gráficos BjfChart

Una única DLL que aporta a su aplicación .NET gráficos de velas profesionales, indicadores, herramientas de dibujo, un panel de trading y un libro de órdenes, con feed de ticks en vivo.

Ver la librería de gráficos



Módulo de programación: escriba estrategias en C#

El módulo de programación convierte SharpTrader en un entorno de desarrollo para estrategias automatizadas. Un bot es una clase C# que hereda de la clase base Bot de la plataforma y reacciona a eventos: inicialización, cada tick entrante, posición abierta, posición cerrada y actualizaciones del estado de las órdenes. La plataforma lo compila, muestra sus parámetros de entrada en la interfaz y lo ejecuta en cuentas reales o demo junto a las estrategias integradas de arbitraje, noticias e impulso.

Lo que le ofrece la API

Área Qué puede hacer
Datos de mercado Bid, ask, spread y valor del punto por símbolo y por sesión, a través del objeto ticker. Una sesión es una cuenta conectada de un broker o exchange, por lo que un solo bot puede vigilar y operar con varias contrapartes a la vez mediante el índice de sesión.
Órdenes y posiciones sendOrder para ejecución a mercado, modifyPositionByID para stop-loss y take-profit, closePositionByID, búsquedas por ID o por comentario, y listas en vivo de órdenes abiertas, cerradas y pendientes.
Detalles de la posición Cada posición incluye precios y horas de apertura y cierre, volumen, lado, sesión, beneficio, comentario, stop-loss, take-profit y el deslizamiento y tiempo de ejecución medidos para ambas patas. Esto último es lo que permite a un bot adaptarse a cómo le ejecuta realmente un broker.
Indicadores Funciones de indicadores integradas como EMA y MACD en cualquier marco temporal, ampliadas continuamente con las actualizaciones de la plataforma.
Parámetros de entrada y registro Las propiedades públicas marcadas con [PropertyInfo] aparecen como parámetros editables en la interfaz; writeLog escribe en el registro de la plataforma; stopBot detiene la estrategia desde el código.
Estado de la cuenta Balance y equity por sesión para reglas de riesgo y cálculo del tamaño de posición.

Un esqueleto mínimo de estrategia

// 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");
    }
}
Conviene saberlo antes de escribir la primera línea. El sandbox compila contra un conjunto fijo de ensamblados: System, System.Collections, System.Runtime, System.Console y la librería de bots de SharpTrader. LINQ no está entre ellos, así que escriba bucles foreach sencillos en lugar de Where, Select o Any. Los precios de la API están en puntos del broker; multiplíquelos por el valor del punto antes de compararlos con sus propios umbrales. Y mantenga una sola orden en curso por tick, protegida por el ID de orden de cliente devuelto, a menos que disfrute depurando ejecuciones duplicadas.

Referencia completa de clases, métodos y eventos: documentación de la librería de programación de SharpTrader. El módulo de programación es un complemento de SharpTrader Pro; consulte la página de SharpTrader Pro para ver el paquete actual.



EasyFIX API: conecte su propio software a SharpTrader

No todo tiene que estar dentro de la plataforma. Si ya utiliza un motor de señales, un gestor de riesgo, un front end personalizado o un flujo de investigación, EasyFIX le permite comunicarse con SharpTrader mediante un protocolo FIX simplificado. SharpTrader se convierte en su pasarela de ejecución: mantiene las conexiones con brokers y exchanges, y usted envía órdenes y recibe cotizaciones y ejecuciones desde su propio código, en el lenguaje que prefiera.

Qué transporta EasyFIX

  • Datos de mercado: cotizaciones de los símbolos a los que se suscriba, desde cualquier sesión que SharpTrader tenga abierta.
  • Flujo de órdenes: nuevas órdenes, modificaciones y cierres enrutados a la sesión elegida.
  • Informes de ejecución: ejecuciones, rechazos y estado de posiciones y órdenes de vuelta a su aplicación.
  • Acceso a los mismos más de 50 conectores FIX API de brokers y a las conexiones con los principales exchanges de criptomonedas que SharpTrader utiliza para sus propias estrategias.

Integraciones típicas

  • Una estrategia externa escrita en Python, Java, C++ o cualquier lenguaje con un socket y un generador de mensajes FIX.
  • Una capa de riesgo a nivel de empresa que supervisa varias instancias de SharpTrader.
  • Una interfaz gráfica de trading o un panel personalizado sobre la ejecución de SharpTrader.
  • Registro de cotizaciones y ejecuciones para investigación, backtesting y auditorías de ejecución de brokers.

EasyFIX es un dialecto FIX modificado: conserva el modelo de mensajes que los desarrolladores ya conocen y elimina las formalidades que un enlace entre usuario minorista y pasarela no necesita. La especificación, sesiones de ejemplo y una conexión de prueba están disponibles para los usuarios de SharpTrader Pro y Lite previa solicitud. Escriba a support@bjftradinggroup.com con una breve descripción de lo que piensa conectar.



BjfChart: la librería de gráficos detrás de los nuevos gráficos de SharpTrader

En 2026 reconstruimos desde cero los gráficos de SharpTrader, y el motor que los impulsa está disponible para desarrolladores como librería independiente. BjfChart es un control de gráficos de velas acelerado por GPU para WinForms, construido sobre SkiaSharp. Renderiza decenas de miles de barras a 60 fotogramas por segundo y se distribuye como un único BjfChart.dll que apunta tanto a net48 como a net8.0-windows, por lo que se integra igual en terminales heredados de .NET Framework que en nuevas aplicaciones .NET 8.

Vídeo: SharpTrader Charting, nueva librería de gráficos y demostración de trading manual

Ocho marcos temporales, indicadores, herramientas de Fibonacci y de tendencia, un ticket de órdenes con líneas de stop-loss y take-profit arrastrables y gráficos multibroker, mostrados en vivo dentro de SharpTrader. Abrir en YouTube

Qué incluye la librería

Motor de gráficos

  • Renderizado de velas con subpanel de volumen, cruceta, etiqueta de precio en vivo y leyenda OHLC flotante.
  • Zoom con la rueda del ratón que mantiene fija la barra bajo el cursor; desplazamiento haciendo clic y arrastrando.
  • Feed en tiempo real: PushTick incorpora un tick a la última barra, FeedTick agrupa automáticamente los ticks en velas de cualquier intervalo.
  • Superposiciones de varios símbolos para comparar, con escala independiente o compartida.
  • Persistencia del diseño en JSON: indicadores, dibujos, superposiciones y área visible se guardan y se restauran.
  • Temas oscuro (azul marino y dorado de BJF) y claro, intercambiables en tiempo de ejecución, con todos los colores editables.
  • Marca de agua a partir de un archivo de logotipo, una URL o un texto detrás de las velas.

Capa de trading

  • TradingPanel: un ticket de órdenes (compra y venta a mercado, limitada o stop, cantidad, precio, stop-loss, take-profit) con visualización en vivo de la posición y del P/L.
  • Las líneas de entrada, stop-loss, take-profit y órdenes activas se dibujan automáticamente en el gráfico; el stop-loss y el take-profit son arrastrables y generan eventos al soltarlos.
  • El panel no ejecuta nada por sí mismo. Genera eventos para su capa de ejecución, ya sea una sesión FIX API, un puente con el broker o SharpTrader a través de EasyFIX.
  • OrderBookPanel: una escalera de profundidad de mercado con tamaño por nivel y barras de profundidad proporcionales; haga clic en un nivel para rellenar previamente un precio límite.
  • Líneas de precio arbitrarias por ID para órdenes del broker, con arrastre opcional.

Indicadores y herramientas de dibujo

Grupo Incluido
Indicadores superpuestos SMA, EMA, WMA, VWAP, Bandas de Bollinger, Canales de Keltner, Canales de Donchian, Envelope, Parabolic SAR.
Indicadores en subpanel RSI, MACD con histograma, Estocástico, ATR, CCI, ADX / DMI, Momentum, Rate of Change, Williams %R, Awesome Oscillator, Desviación estándar, On-Balance Volume, Money Flow Index.
Precisión Los cálculos de los indicadores se contrastan con implementaciones de referencia independientes: SMA, EMA, Bollinger, RSI, ATR, Estocástico y CCI coinciden hasta 1e-9; MACD, ADX, DI, Williams %R, MFI y OBV están validados en cuanto a exactitud y rango.
Herramientas de dibujo Línea de tendencia, rayo, línea extendida, línea y rayo horizontales, línea vertical, flecha, canal paralelo, rectángulo, elipse, retroceso de Fibonacci, extensión de Fibonacci y una herramienta de medición que muestra la diferencia de precio, el cambio porcentual y el número de barras. Todas están ancladas en el espacio de datos, por lo que permanecen fijas al hacer zoom y desplazarse.
Extensibilidad Implemente IIndicator (o cree una subclase de IndicatorBase), devuelva una o varias series alineadas con la lista de velas, elija superposición o subpanel, línea, histograma o puntos, y regístrelo para que aparezca en el menú contextual y en los diseños guardados.

Diez líneas para un gráfico funcional

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

Todo lo que hay en el código también es accesible desde el menú contextual del gráfico: añadir o quitar indicadores, elegir una herramienta de dibujo, gestionar superposiciones, cambiar de tema, guardar o cargar un diseño. La librería requiere Windows y el .NET SDK 8.0 o posterior para compilar; NuGet restaura SkiaSharp automáticamente. Se incluye una aplicación de demostración ejecutable con ticks en vivo simulados.

Uso de BjfChart en su producto. La librería se licencia a desarrolladores de SharpTrader, socios de marca blanca y proveedores de terminales de terceros. Para preguntas de uso, condiciones de licencia, una versión de demostración o ayuda para integrarla con su feed de datos, contáctenos directamente con los datos que figuran a continuación. Indíquenos qué destino .NET utiliza y cómo es su fuente de datos, y le responderemos en un día hábil.



Contactos para desarrolladores

Todas las preguntas de desarrolladores llegan al mismo equipo que construye la plataforma. Para preguntas sobre la API de bots y EasyFIX, indique su versión de SharpTrader y tipo de cuenta; para BjfChart, indique su destino .NET y su feed de datos.

Correo electrónicosupport@bjftradinggroup.comIdeal para ejemplos de código, especificaciones y licencias Teléfono+1 (905) 599-5507De lunes a viernes, de 9:00 a 18:00, hora del Este (Toronto) Telegramt.me/bjftradinggroupPreguntas rápidas y seguimiento

BJF Trading Group Inc., 3397 Mistwell Crescent, Oakville, ON, L6L 0A2, Canadá. Consultas generales: página de contacto.



Preguntas frecuentes

¿Qué lenguaje utilizan los bots de SharpTrader?
C#. Un bot es una clase que hereda de la clase base Bot de la plataforma e implementa manejadores de eventos para la inicialización, los ticks, los cambios de posición y las actualizaciones del estado de las órdenes. Se compila dentro de SharpTrader y se ejecuta junto a las estrategias integradas.
¿Puede un solo bot operar con varios brokers o exchanges al mismo tiempo?
Sí. Cada llamada de datos de mercado y de órdenes recibe un índice de sesión, y una sesión es una cuenta conectada de un broker o exchange. Un bot puede leer cotizaciones de una sesión y enviar órdenes a otra, que es como se escribe la lógica multibroker y entre exchanges.
¿Qué es la EasyFIX API y para quién es?
EasyFIX es un protocolo FIX simplificado que permite a software externo conectarse a SharpTrader como pasarela de ejecución. Está pensado para desarrolladores que mantienen su propio motor fuera de la plataforma y quieren recibir cotizaciones y enviar órdenes a través de los conectores de brokers y exchanges de SharpTrader. La especificación y una conexión de prueba se proporcionan previa solicitud.
¿Está disponible BjfChart por separado de SharpTrader?
Sí. BjfChart es una librería .NET independiente, una única DLL para net48 y net8.0-windows, construida sobre SkiaSharp. Se licencia a desarrolladores de SharpTrader, socios de marca blanca y proveedores de terminales. Escriba a support@bjftradinggroup.com para conocer las condiciones y obtener una versión de demostración.
¿Ejecuta órdenes el panel de trading de BjfChart?
No. El panel genera eventos (orden enviada, cierre de posición solicitado, posición modificada tras arrastrar el stop-loss o el take-profit) y la aplicación anfitriona los enruta a su propia capa de ejecución, como una sesión FIX API, un puente con el broker o SharpTrader a través de EasyFIX.
¿Puedo añadir mis propios indicadores a BjfChart?
Sí. Implemente la interfaz IIndicator o cree una subclase de IndicatorBase, devuelva una o varias series alineadas con la lista de velas, elija el renderizado superpuesto o en subpanel y registre el indicador para que aparezca en el menú contextual y se guarde en los diseños.
¿Se vende el código fuente de SharpTrader o de BjfChart?
No. BJF Trading Group licencia versiones compiladas y proporciona acceso a la API, documentación y soporte. El código fuente no se vende ni se divulga bajo ningún programa.





Cuéntenos qué está construyendo

Un bot para una peculiaridad concreta de un broker, un motor externo que necesita una pasarela de ejecución o un terminal que necesita gráficos para el viernes. Un correo con los detalles, una respuesta con el siguiente paso.

Escribir al equipo de desarrollo Escríbanos por Telegram

BJF Trading Group Inc. desarrolla herramientas de software para traders y desarrolladores experimentados. No somos un broker, una institución financiera ni un asesor de inversiones, y no ejecutamos operaciones ni gestionamos fondos. Los ejemplos de código de esta página son ilustrativos y pueden diferir de la referencia actual de la librería; consulte siempre la documentación de la versión de su plataforma. El trading de forex, CFD y criptomonedas conlleva un alto riesgo de pérdida y no es adecuado para todos los inversores. Nada de lo que aparece en esta página constituye asesoramiento financiero ni una promesa de beneficios.