Tập đoàn BJF Trading Group Inc. — Ontario, Canada Liên hệ Khu vực dành cho thành viên Blog
EN DE JA AR KO ES PT ID VI CN



Dành cho nhà phát triển · Nền tảng SharpTrader

Xây dựng trên SharpTrader: C# bot API, kết nối EasyFIX và thư viện biểu đồ BjfChart

SharpTrader là nền tảng giao dịch được xây dựng cho nhà giao dịch, không phải cho broker, và mở cửa cho những người viết code cho họ. Hãy viết chiến lược riêng bằng C# ngay trong nền tảng, kết nối phần mềm bên ngoài của bạn với bộ máy khớp lệnh thông qua EasyFIX API, hoặc tích hợp thư viện biểu đồ nến tăng tốc GPU của chúng tôi vào terminal .NET của riêng bạn.

Chiến lược C# với tick trực tiếp và phiên đa broker
EasyFIX API: hơn 50 connector FIX, sàn crypto
BjfChart DLL: 22 chỉ báo, công cụ vẽ, phiếu lệnh
.NET Framework 4.8 và .NET 8

Xem video hướng dẫn biểu đồ Liên hệ dành cho nhà phát triển



C#ngôn ngữ chiến lược gốc, được biên dịch ngay trong SharpTrader 50+connector FIX API tới các broker, cùng các sàn crypto lớn 22chỉ báo trong BjfChart, được đối chiếu với các phép tính tham chiếu 2target trong một DLL: net48 cho ứng dụng cũ, net8.0-windows cho ứng dụng mới



Ba cách xây dựng cùng BJF

Mỗi lựa chọn giải quyết một vấn đề khác nhau. Hãy chọn cách phù hợp với nơi code của bạn đang chạy.

Bên trong nền tảng

Module lập trình: C# bot API

Viết chiến lược dưới dạng một lớp C#, biên dịch trong SharpTrader và chạy trên bất kỳ broker hoặc sàn nào đã kết nối. Tick, vị thế, lệnh và chỉ báo đều chỉ cách một lời gọi hàm.

Tìm hiểu về bot API

Bên ngoài nền tảng

EasyFIX API

Giữ nguyên bộ máy của riêng bạn, bằng bất kỳ ngôn ngữ nào, và để SharpTrader làm cổng kết nối: nó truyền báo giá tới bạn và định tuyến lệnh của bạn qua các connector broker và sàn giao dịch.

Tìm hiểu về EasyFIX

Trong terminal của riêng bạn

Thư viện biểu đồ BjfChart

Một DLL duy nhất mang đến cho ứng dụng .NET của bạn biểu đồ nến chuyên nghiệp, chỉ báo, công cụ vẽ, bảng giao dịch và sổ lệnh, với luồng tick trực tiếp.

Xem thư viện biểu đồ



Module lập trình: viết chiến lược bằng C#

Module lập trình biến SharpTrader thành một môi trường phát triển cho các chiến lược tự động. Một bot là một lớp C# kế thừa từ lớp cơ sở Bot của nền tảng và phản hồi các sự kiện: khởi tạo, mỗi tick đến, vị thế được mở, vị thế được đóng và cập nhật trạng thái lệnh. Nền tảng biên dịch bot, hiển thị các tham số đầu vào của bạn trong giao diện và chạy nó trên tài khoản thật hoặc demo song song với các chiến lược arbitrage, tin tức và impulse tích hợp sẵn.

API cung cấp cho bạn những gì

Lĩnh vực Bạn có thể làm gì
Dữ liệu thị trường Bid, ask, spread và giá trị point theo từng mã và từng phiên, thông qua đối tượng ticker. Một phiên là một tài khoản broker hoặc sàn đã kết nối, vì vậy một bot có thể theo dõi và giao dịch với nhiều đối tác cùng lúc theo chỉ số phiên.
Lệnh và vị thế sendOrder để khớp lệnh thị trường, modifyPositionByID cho stop-loss và take-profit, closePositionByID, tra cứu theo ID hoặc theo comment, và danh sách trực tiếp các lệnh đang mở, đã đóng và lệnh chờ.
Chi tiết vị thế Mỗi vị thế chứa giá và thời gian mở, đóng, khối lượng, chiều lệnh, phiên, lợi nhuận, comment, stop-loss, take-profit, cùng độ trượt giá và thời gian khớp lệnh đo được cho cả hai chân. Phần cuối cùng này cho phép bot thích ứng với cách broker thực sự khớp lệnh cho bạn.
Chỉ báo Các hàm chỉ báo tích hợp sẵn như EMA và MACD trên mọi khung thời gian, liên tục được mở rộng qua các bản cập nhật nền tảng.
Tham số đầu vào và ghi log Các thuộc tính public được đánh dấu bằng [PropertyInfo] sẽ xuất hiện dưới dạng tham số có thể chỉnh sửa trong giao diện; writeLog ghi vào log của nền tảng; stopBot dừng chiến lược từ code.
Trạng thái tài khoản Balance và equity theo từng phiên cho các quy tắc rủi ro và tính khối lượng vị thế.

Bộ khung chiến lược tối thiểu

// 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");
    }
}
Những điều nên biết trước khi viết dòng code đầu tiên. Sandbox biên dịch với một tập assembly cố định: System, System.Collections, System.Runtime, System.Console và thư viện bot của SharpTrader. LINQ không nằm trong số đó, vì vậy hãy viết vòng lặp foreach thông thường thay vì Where, Select hoặc Any. Giá từ API tính theo point của broker; hãy nhân với giá trị point trước khi so sánh với ngưỡng của riêng bạn. Và chỉ giữ một lệnh đang xử lý mỗi tick, được bảo vệ bằng client order ID trả về, trừ khi bạn thích gỡ lỗi các lần khớp lệnh trùng lặp.

Tài liệu tham chiếu đầy đủ về lớp, phương thức và sự kiện: tài liệu thư viện lập trình SharpTrader. Module lập trình là tiện ích bổ sung cho SharpTrader Pro; xem trang SharpTrader Pro để biết gói hiện tại.



EasyFIX API: kết nối phần mềm của riêng bạn với SharpTrader

Không phải mọi thứ đều nên nằm trong nền tảng. Nếu bạn đã vận hành một bộ máy tín hiệu, một hệ thống quản lý rủi ro, một giao diện tùy chỉnh hoặc một quy trình nghiên cứu, EasyFIX cho phép chúng giao tiếp với SharpTrader qua một giao thức FIX đơn giản hóa. SharpTrader trở thành cổng khớp lệnh của bạn: nó giữ các kết nối tới broker và sàn giao dịch, còn bạn gửi lệnh và nhận báo giá, kết quả khớp lệnh từ code của riêng mình, bằng bất kỳ ngôn ngữ nào bạn muốn.

EasyFIX truyền tải những gì

  • Dữ liệu thị trường: báo giá cho các mã bạn đăng ký, từ bất kỳ phiên nào SharpTrader đang mở.
  • Luồng lệnh: lệnh mới, sửa đổi và đóng lệnh được định tuyến tới phiên đã chọn.
  • Báo cáo khớp lệnh: kết quả khớp, từ chối, trạng thái vị thế và lệnh được gửi về ứng dụng của bạn.
  • Truy cập vào cùng hơn 50 connector FIX API tới broker và các kết nối sàn crypto lớn mà SharpTrader sử dụng cho các chiến lược của chính nó.

Các tích hợp điển hình

  • Một chiến lược bên ngoài viết bằng Python, Java, C++ hoặc bất kỳ ngôn ngữ nào có socket và bộ tạo thông điệp FIX.
  • Một lớp quản lý rủi ro toàn công ty giám sát nhiều phiên bản SharpTrader.
  • Một giao diện giao dịch hoặc dashboard tùy chỉnh trên nền tảng khớp lệnh SharpTrader.
  • Ghi lại báo giá và kết quả khớp lệnh cho nghiên cứu, backtest và kiểm tra chất lượng khớp lệnh của broker.

EasyFIX là một phương ngữ FIX đã được sửa đổi: nó giữ mô hình thông điệp mà các nhà phát triển đã quen thuộc, đồng thời bỏ đi những thủ tục rườm rà mà một kết nối từ người dùng cá nhân tới gateway không cần đến. Đặc tả, phiên mẫu và kết nối thử nghiệm được cung cấp cho người dùng SharpTrader Pro và Lite theo yêu cầu. Hãy viết tới support@bjftradinggroup.com kèm mô tả ngắn về những gì bạn định kết nối.



BjfChart: thư viện biểu đồ đứng sau các biểu đồ SharpTrader mới

Năm 2026, chúng tôi đã xây dựng lại hoàn toàn phần biểu đồ trong SharpTrader, và bộ máy đứng sau nó được cung cấp cho các nhà phát triển dưới dạng một thư viện độc lập. BjfChart là một control biểu đồ nến tăng tốc GPU cho WinForms, xây dựng trên SkiaSharp. Nó hiển thị hàng chục nghìn thanh nến ở tốc độ 60 khung hình mỗi giây và được phân phối dưới dạng một tệp BjfChart.dll duy nhất nhắm tới cả net48 và net8.0-windows, vì vậy nó tích hợp được vào cả các terminal .NET Framework cũ lẫn các ứng dụng .NET 8 mới.

Video: SharpTrader Charting, thư viện biểu đồ mới và hướng dẫn giao dịch thủ công

Tám khung thời gian, chỉ báo, công cụ Fibonacci và xu hướng, phiếu lệnh với đường stop-loss và take-profit có thể kéo thả, và biểu đồ đa broker, được trình diễn trực tiếp trong SharpTrader. Mở trên YouTube

Thư viện bao gồm những gì

Bộ máy biểu đồ

  • Hiển thị nến với bảng phụ khối lượng, crosshair, nhãn giá trực tiếp và chú giải OHLC nổi.
  • Phóng to bằng con lăn chuột giữ cố định thanh nến dưới con trỏ, kéo bằng chuột để di chuyển.
  • Luồng dữ liệu thời gian thực: PushTick gộp một tick vào thanh nến cuối cùng, FeedTick tự động gom tick thành nến với bất kỳ khoảng thời gian nào.
  • Chồng nhiều mã để so sánh, với thang đo độc lập hoặc dùng chung.
  • Lưu bố cục ra JSON: chỉ báo, hình vẽ, lớp chồng và vùng hiển thị được lưu và khôi phục.
  • Giao diện tối (xanh navy và vàng BJF) và sáng, chuyển đổi khi đang chạy, mọi màu sắc đều có thể chỉnh sửa.
  • Watermark từ tệp logo, URL hoặc văn bản phía sau các nến.

Lớp giao dịch

  • TradingPanel: phiếu lệnh (mua và bán theo giá thị trường, limit hoặc stop, khối lượng, giá, stop-loss, take-profit) với hiển thị trực tiếp vị thế và P/L.
  • Các đường vào lệnh, stop-loss, take-profit và lệnh chờ được vẽ tự động trên biểu đồ; stop-loss và take-profit có thể kéo thả và phát sinh sự kiện khi thả chuột.
  • Bảng này tự nó không thực thi bất kỳ lệnh nào. Nó phát sinh sự kiện cho lớp khớp lệnh của bạn, dù đó là phiên FIX API, cầu nối broker hay SharpTrader thông qua EasyFIX.
  • OrderBookPanel: bảng độ sâu thị trường với khối lượng theo từng mức giá và thanh độ sâu tỷ lệ; nhấp vào một mức giá để điền sẵn giá limit.
  • Các đường giá tùy ý theo ID cho lệnh broker, với tùy chọn kéo thả.

Chỉ báo và công cụ vẽ

Nhóm Bao gồm
Chỉ báo chồng trên biểu đồ SMA, EMA, WMA, VWAP, Bollinger Bands, kênh Keltner, kênh Donchian, Envelope, Parabolic SAR.
Chỉ báo ở bảng phụ RSI, MACD kèm histogram, Stochastic, ATR, CCI, ADX / DMI, Momentum, Rate of Change, Williams %R, Awesome Oscillator, Standard Deviation, On-Balance Volume, Money Flow Index.
Độ chính xác Phép tính chỉ báo được đối chiếu với các bản triển khai tham chiếu độc lập: SMA, EMA, Bollinger, RSI, ATR, Stochastic và CCI khớp đến 1e-9; MACD, ADX, DI, Williams %R, MFI và OBV được kiểm chứng về tính đúng đắn và phạm vi giá trị.
Công cụ vẽ Đường xu hướng, tia, đường kéo dài, đường ngang và tia ngang, đường dọc, mũi tên, kênh song song, hình chữ nhật, hình elip, Fibonacci thoái lui, Fibonacci mở rộng và công cụ đo hiển thị chênh lệch giá, phần trăm thay đổi và số thanh nến. Tất cả đều neo theo tọa độ dữ liệu, nên chúng giữ nguyên vị trí khi phóng to và di chuyển.
Khả năng mở rộng Triển khai IIndicator (hoặc kế thừa IndicatorBase), trả về một hoặc nhiều chuỗi dữ liệu căn theo danh sách nến, chọn hiển thị chồng hoặc bảng phụ, dạng đường, histogram hoặc chấm, và đăng ký để chỉ báo xuất hiện trong menu chuột phải và trong các bố cục đã lưu.

Mười dòng code cho một biểu đồ hoạt động

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

Mọi thứ trong code cũng có thể truy cập từ menu chuột phải trên biểu đồ: thêm hoặc xóa chỉ báo, chọn công cụ vẽ, quản lý lớp chồng, đổi giao diện, lưu hoặc tải bố cục. Để build, thư viện yêu cầu Windows và .NET SDK 8.0 trở lên; NuGet tự động khôi phục SkiaSharp. Kèm theo là một ứng dụng demo có thể chạy ngay với tick trực tiếp mô phỏng.

Sử dụng BjfChart trong sản phẩm của bạn. Thư viện được cấp phép cho các nhà phát triển SharpTrader, đối tác white-label và nhà cung cấp terminal bên thứ ba. Với các câu hỏi về cách sử dụng, điều khoản cấp phép, bản build demo hoặc hỗ trợ tích hợp với nguồn dữ liệu của bạn, hãy liên hệ trực tiếp với chúng tôi qua thông tin bên dưới. Hãy cho chúng tôi biết bạn dùng target .NET nào và nguồn dữ liệu của bạn trông như thế nào, chúng tôi sẽ trả lời trong vòng một ngày làm việc.



Liên hệ dành cho nhà phát triển

Mọi câu hỏi của nhà phát triển đều được chuyển tới chính đội ngũ xây dựng nền tảng. Với câu hỏi về bot API và EasyFIX, hãy ghi rõ phiên bản SharpTrader và loại tài khoản; với BjfChart, hãy ghi rõ target .NET và nguồn dữ liệu.

Emailsupport@bjftradinggroup.comPhù hợp nhất cho code mẫu, đặc tả và cấp phép Điện thoại+1 (905) 599-5507Thứ Hai đến thứ Sáu, 9:00 đến 18:00 giờ miền Đông (Toronto) Telegramt.me/bjftradinggroupCâu hỏi nhanh và trao đổi tiếp theo

BJF Trading Group Inc., 3397 Mistwell Crescent, Oakville, ON, L6L 0A2, Canada. Liên hệ chung: trang liên hệ.



Câu hỏi thường gặp

Bot SharpTrader sử dụng ngôn ngữ nào?
C#. Một bot là một lớp kế thừa lớp cơ sở Bot của nền tảng và triển khai các trình xử lý sự kiện cho khởi tạo, tick, thay đổi vị thế và cập nhật trạng thái lệnh. Nó được biên dịch trong SharpTrader và chạy song song với các chiến lược tích hợp sẵn.
Một bot có thể giao dịch trên nhiều broker hoặc sàn cùng lúc không?
Có. Mọi lời gọi dữ liệu thị trường và lệnh đều nhận một chỉ số phiên, và một phiên là một tài khoản broker hoặc sàn đã kết nối. Bot có thể đọc báo giá từ một phiên và gửi lệnh tới phiên khác, đó là cách viết logic đa broker và liên sàn.
EasyFIX API là gì và dành cho ai?
EasyFIX là một giao thức FIX đơn giản hóa cho phép phần mềm bên ngoài kết nối với SharpTrader như một cổng khớp lệnh. Nó dành cho các nhà phát triển giữ bộ máy riêng bên ngoài nền tảng và muốn nhận báo giá, gửi lệnh qua các connector broker và sàn giao dịch của SharpTrader. Đặc tả và kết nối thử nghiệm được cung cấp theo yêu cầu.
BjfChart có được cung cấp riêng, tách khỏi SharpTrader không?
Có. BjfChart là một thư viện .NET độc lập, một DLL duy nhất nhắm tới net48 và net8.0-windows, xây dựng trên SkiaSharp. Nó được cấp phép cho các nhà phát triển SharpTrader, đối tác white-label và nhà cung cấp terminal. Liên hệ support@bjftradinggroup.com để biết điều khoản và nhận bản build demo.
Bảng giao dịch của BjfChart có tự thực thi lệnh không?
Không. Bảng này phát sinh sự kiện (lệnh được gửi, yêu cầu đóng vị thế, vị thế được sửa sau khi kéo stop-loss hoặc take-profit) và ứng dụng chủ định tuyến chúng tới lớp khớp lệnh của riêng nó, chẳng hạn phiên FIX API, cầu nối broker hoặc SharpTrader thông qua EasyFIX.
Tôi có thể thêm chỉ báo của riêng mình vào BjfChart không?
Có. Triển khai interface IIndicator hoặc kế thừa IndicatorBase, trả về một hoặc nhiều chuỗi dữ liệu căn theo danh sách nến, chọn hiển thị chồng hoặc bảng phụ, và đăng ký chỉ báo để nó xuất hiện trong menu chuột phải và được lưu trong bố cục.
Mã nguồn của SharpTrader hoặc BjfChart có được bán không?
Không. BJF Trading Group cấp phép các bản build đã biên dịch và cung cấp quyền truy cập API, tài liệu và hỗ trợ. Mã nguồn không được bán hoặc tiết lộ theo bất kỳ chương trình nào.





Hãy cho chúng tôi biết bạn đang xây dựng gì

Một bot cho một đặc điểm riêng của broker, một bộ máy bên ngoài cần cổng khớp lệnh, hay một terminal cần có biểu đồ trước thứ Sáu. Một email kèm chi tiết, một phản hồi với bước tiếp theo.

Gửi email cho đội ngũ phát triển Nhắn tin cho chúng tôi qua Telegram

BJF Trading Group Inc. phát triển các công cụ phần mềm cho nhà giao dịch và nhà phát triển có kinh nghiệm. Chúng tôi không phải là broker, tổ chức tài chính hay cố vấn đầu tư, và chúng tôi không thực hiện giao dịch hay quản lý tiền vốn. Code mẫu trên trang này mang tính minh họa và có thể khác với tài liệu tham chiếu hiện tại của thư viện; hãy luôn kiểm tra tài liệu cho phiên bản nền tảng của bạn. Giao dịch forex, CFD và tiền mã hóa có rủi ro thua lỗ cao và không phù hợp với tất cả nhà đầu tư. Không nội dung nào trên trang này là lời khuyên tài chính hay lời hứa về lợi nhuận.