BJF 트레이딩 그룹(주) - 캐나다 온타리오주 연락하다 회원 영역 블로그
EN DE JA AR KO ES PT ID VI CN



개발자용 · SharpTrader 플랫폼

SharpTrader 기반 개발: C# 봇 API, EasyFIX 연결, BjfChart 차트 라이브러리

SharpTrader는 브로커가 아닌 트레이더를 위해 만들어진 트레이딩 플랫폼이며, 트레이더를 위해 코드를 작성하는 개발자에게도 열려 있습니다. 플랫폼 안에서 C#으로 자체 전략을 작성하거나, EasyFIX API를 통해 외부 소프트웨어를 실행 엔진에 연결하거나, GPU 가속 캔들스틱 차트 라이브러리를 자체 .NET 터미널에 탑재할 수 있습니다.

실시간 틱과 멀티 브로커 세션을 지원하는 C# 전략
EasyFIX API: 50개 이상의 FIX 커넥터, 암호화폐 거래소
BjfChart DLL: 22개 지표, 드로잉 도구, 주문 티켓
.NET Framework 4.8 및 .NET 8

차트 기능 소개 영상 보기 개발자 연락처



C#SharpTrader 내부에서 컴파일되는 네이티브 전략 언어 50+브로커 FIX API 커넥터 및 주요 암호화폐 거래소 연결 22레퍼런스 수식과 교차 검증된 BjfChart 지표 2하나의 DLL에 두 가지 타깃: 레거시 앱용 net48, 신규 앱용 net8.0-windows



BJF로 개발하는 세 가지 방법

각 옵션은 서로 다른 문제를 해결합니다. 코드가 위치한 곳에 맞는 방법을 선택하세요.

플랫폼 내부

코딩 모듈: C# 봇 API

전략을 C# 클래스로 작성하고 SharpTrader 안에서 컴파일한 뒤, 연결된 모든 브로커나 거래소에서 실행하세요. 틱, 포지션, 주문, 지표 모두 호출 한 번으로 이용할 수 있습니다.

봇 API에 대해 알아보기

플랫폼 외부

EasyFIX API

어떤 언어로 작성된 것이든 자체 엔진을 그대로 유지하고 SharpTrader를 게이트웨이로 사용하세요. SharpTrader가 호가를 스트리밍하고, 브로커 및 거래소 커넥터를 통해 주문을 라우팅합니다.

EasyFIX에 대해 알아보기

자체 터미널 내부

BjfChart 차트 라이브러리

단일 DLL로 .NET 애플리케이션에 전문적인 캔들스틱 차트, 지표, 드로잉 도구, 트레이딩 패널, 호가창을 실시간 틱 피드와 함께 제공합니다.

차트 라이브러리 살펴보기



코딩 모듈: C#으로 전략 작성

코딩 모듈은 SharpTrader를 자동매매 전략 개발 환경으로 바꿔 줍니다. 봇은 플랫폼의 기본 Bot 클래스를 상속하는 C# 클래스로, 초기화, 모든 수신 틱, 포지션 진입, 포지션 청산, 주문 상태 업데이트 등의 이벤트에 반응합니다. 플랫폼이 이를 컴파일하고, 입력값을 인터페이스에 표시하며, 내장된 아비트리지, 뉴스, 임펄스 전략과 나란히 실계좌 또는 데모 계좌에서 실행합니다.

API로 할 수 있는 것

영역 가능한 작업
시장 데이터 ticker 객체를 통해 심볼별, 세션별 매수호가, 매도호가, 스프레드, 포인트 값을 제공합니다. 세션은 연결된 브로커 또는 거래소 계좌 하나를 의미하므로, 하나의 봇이 세션 인덱스를 사용해 여러 거래 상대방을 동시에 모니터링하고 거래할 수 있습니다.
주문 및 포지션 시장가 체결용 sendOrder, 손절 및 이익실현용 modifyPositionByID, closePositionByID, ID 또는 코멘트 기준 조회, 그리고 진입, 청산, 대기 주문의 실시간 목록을 제공합니다.
포지션 상세 정보 각 포지션에는 진입 및 청산 가격과 시간, 거래량, 방향, 세션, 손익, 코멘트, 손절, 이익실현, 그리고 양쪽 레그의 측정된 슬리피지와 체결 시간이 포함됩니다. 이 마지막 항목 덕분에 봇은 브로커가 실제로 어떻게 체결하는지에 맞춰 적응할 수 있습니다.
지표 모든 타임프레임에서 사용할 수 있는 EMA, MACD 등 내장 지표 함수를 제공하며, 플랫폼 업데이트와 함께 지속적으로 확장됩니다.
입력값 및 로깅 공개 속성 중 [PropertyInfo] 특성이 지정된 속성은 인터페이스에서 편집 가능한 입력값으로 표시됩니다. writeLog는 플랫폼 로그에 기록하고, stopBot은 코드에서 전략을 중지합니다.
계좌 상태 리스크 규칙과 포지션 사이징을 위한 세션별 잔고와 에퀴티를 제공합니다.

최소 전략 골격

// 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");
    }
}
첫 줄을 작성하기 전에 알아 두면 좋은 점. 샌드박스는 고정된 어셈블리 세트(System, System.Collections, System.Runtime, System.Console, SharpTrader 봇 라이브러리)를 대상으로 컴파일합니다. LINQ는 포함되어 있지 않으므로 Where, Select, Any 대신 일반 foreach 루프를 사용하세요. API에서 제공하는 가격은 브로커 포인트 단위이므로, 자체 임계값과 비교하기 전에 포인트 값을 곱하세요. 또한 중복 체결을 디버깅하고 싶지 않다면, 반환된 클라이언트 주문 ID로 확인하여 틱당 하나의 주문만 처리 중이도록 유지하세요.

전체 클래스, 메서드, 이벤트 레퍼런스: SharpTrader 코딩 라이브러리 문서. 코딩 모듈은 SharpTrader Pro의 애드온입니다. 현재 번들 구성은 SharpTrader Pro 페이지에서 확인하세요.



EasyFIX API: 자체 소프트웨어를 SharpTrader에 연결

모든 것이 플랫폼 안에 있어야 하는 것은 아닙니다. 이미 시그널 엔진, 리스크 매니저, 맞춤형 프런트엔드 또는 리서치 파이프라인을 운영 중이라면, EasyFIX를 통해 간소화된 FIX 프로토콜로 SharpTrader와 통신할 수 있습니다. SharpTrader가 실행 게이트웨이가 되어 브로커 및 거래소와의 연결을 유지하고, 사용자는 원하는 어떤 언어로든 자체 코드에서 주문을 보내고 호가와 체결 정보를 받습니다.

EasyFIX가 전달하는 정보

  • 시장 데이터: SharpTrader에 열려 있는 모든 세션에서 구독한 심볼의 호가.
  • 주문 흐름: 선택한 세션으로 라우팅되는 신규 주문, 수정, 청산.
  • 체결 보고: 체결, 거부, 포지션 및 주문 상태가 애플리케이션으로 전달됩니다.
  • SharpTrader가 자체 전략에 사용하는 것과 동일한 50개 이상의 FIX API 브로커 커넥터 및 주요 암호화폐 거래소 연결에 접근할 수 있습니다.

대표적인 통합 사례

  • Python, Java, C++ 또는 소켓과 FIX 메시지 빌더를 갖춘 모든 언어로 작성된 외부 전략.
  • 여러 SharpTrader 인스턴스를 감독하는 전사적 리스크 레이어.
  • SharpTrader 실행 위에 구축한 맞춤형 트레이딩 GUI 또는 대시보드.
  • 리서치, 백테스팅, 브로커 체결 감사를 위한 호가 및 체결 기록.

EasyFIX는 수정된 FIX 방언입니다. 개발자에게 익숙한 메시지 모델은 유지하면서, 리테일-게이트웨이 연결에 필요 없는 번거로운 절차는 생략했습니다. 사양서, 샘플 세션, 테스트 연결은 요청 시 SharpTrader Pro 및 Lite 사용자에게 제공됩니다. 연결하려는 대상에 대한 간단한 설명과 함께 support@bjftradinggroup.com으로 문의하세요.



BjfChart: 새로운 SharpTrader 차트를 구동하는 차트 라이브러리

2026년에 당사는 SharpTrader의 차트 기능을 처음부터 다시 구축했으며, 그 엔진을 개발자용 독립 라이브러리로 제공합니다. BjfChart는 SkiaSharp 기반의 WinForms용 GPU 가속 캔들스틱 차트 컨트롤입니다. 수만 개의 바를 초당 60프레임으로 렌더링하며, net48과 net8.0-windows를 모두 대상으로 하는 단일 BjfChart.dll로 제공되므로 레거시 .NET Framework 터미널과 신규 .NET 8 애플리케이션 모두에 바로 적용할 수 있습니다.

영상: SharpTrader Charting, 새 차트 라이브러리와 수동 거래 사용법

8개의 타임프레임, 지표, 피보나치 및 추세 도구, 드래그 가능한 손절 및 이익실현 라인이 있는 주문 티켓, 멀티 브로커 차트를 SharpTrader 안에서 실시간으로 보여드립니다. YouTube에서 보기

라이브러리 구성 요소

차트 엔진

  • 거래량 하위 패널, 십자선, 실시간 가격 태그, 플로팅 OHLC 범례를 갖춘 캔들스틱 렌더링.
  • 커서 아래의 바를 고정한 채 마우스 휠로 확대/축소, 클릭 후 드래그로 이동.
  • 실시간 피드: PushTick은 틱을 마지막 바에 반영하고, FeedTick은 틱을 원하는 간격의 캔들로 자동 분류합니다.
  • 비교를 위한 멀티 심볼 오버레이, 독립 또는 공유 스케일 지원.
  • JSON으로 레이아웃 저장: 지표, 드로잉, 오버레이, 뷰포트를 저장하고 복원합니다.
  • 다크(BJF 네이비 및 골드) 테마와 라이트 테마를 실행 중에 전환할 수 있으며, 모든 색상을 편집할 수 있습니다.
  • 로고 파일, URL 또는 텍스트로 캔들 뒤에 워터마크 표시.

트레이딩 레이어

  • TradingPanel: 실시간 포지션 및 손익 표시가 있는 주문 티켓(시장가, 지정가 또는 스톱 매수/매도, 수량, 가격, 손절, 이익실현).
  • 진입, 손절, 이익실현, 대기 주문 라인이 차트에 자동으로 표시되며, 손절 및 이익실현 라인은 드래그할 수 있고 놓을 때 이벤트가 발생합니다.
  • 패널 자체는 아무것도 실행하지 않습니다. FIX API 세션이든, 브로커 브리지든, EasyFIX를 통한 SharpTrader든 사용자의 실행 레이어로 이벤트를 전달합니다.
  • OrderBookPanel: 레벨별 수량과 비례 깊이 바를 표시하는 호가창(DOM) 래더이며, 레벨을 클릭하면 지정가가 미리 입력됩니다.
  • 브로커 주문을 위한 ID 기반 임의 가격 라인, 선택적 드래그 지원.

지표 및 드로잉 도구

그룹 포함 항목
오버레이 지표 SMA, EMA, WMA, VWAP, Bollinger Bands, Keltner Channels, Donchian Channels, Envelope, Parabolic SAR.
하위 패널 지표 RSI, 히스토그램 포함 MACD, Stochastic, ATR, CCI, ADX / DMI, Momentum, Rate of Change, Williams %R, Awesome Oscillator, Standard Deviation, On-Balance Volume, Money Flow Index.
정확도 지표 계산은 독립적인 레퍼런스 구현과 교차 검증되었습니다. SMA, EMA, Bollinger, RSI, ATR, Stochastic, CCI는 1e-9까지 일치하며, MACD, ADX, DI, Williams %R, MFI, OBV는 정확성과 범위가 검증되었습니다.
드로잉 도구 추세선, 레이, 확장선, 수평선 및 수평 레이, 수직선, 화살표, 평행 채널, 사각형, 타원, 피보나치 되돌림, 피보나치 확장, 그리고 가격 차이, 변동률, 바 개수를 표시하는 측정 도구. 모두 데이터 공간에 고정되므로 확대/축소와 이동 시에도 제자리에 유지됩니다.
확장성 IIndicator를 구현하거나 IndicatorBase를 상속하고, 캔들 목록에 맞춰 정렬된 하나 이상의 시리즈를 반환하며, 오버레이 또는 하위 패널, 선, 히스토그램 또는 점 중에서 선택한 뒤 등록하면 우클릭 메뉴와 저장된 레이아웃에 표시됩니다.

10줄로 완성하는 차트

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

코드의 모든 기능은 차트의 우클릭 메뉴에서도 사용할 수 있습니다: 지표 추가 또는 제거, 드로잉 도구 선택, 오버레이 관리, 테마 전환, 레이아웃 저장 또는 불러오기. 라이브러리 빌드에는 Windows와 .NET SDK 8.0 이상이 필요하며, NuGet이 SkiaSharp를 자동으로 복원합니다. 시뮬레이션된 실시간 틱으로 실행되는 데모 애플리케이션이 포함되어 있습니다.

귀사 제품에서 BjfChart 사용하기. 이 라이브러리는 SharpTrader 개발자, 화이트 라벨 파트너, 서드파티 터미널 벤더에게 라이선스가 제공됩니다. 사용 관련 질문, 라이선스 조건, 데모 빌드 또는 데이터 피드 통합 지원이 필요하시면 아래 연락처로 직접 문의하세요. 사용 중인 .NET 타깃과 데이터 소스 형태를 알려 주시면 영업일 기준 1일 이내에 답변드립니다.



개발자 연락처

모든 개발자 문의는 플랫폼을 개발하는 팀이 직접 답변합니다. 봇 API 및 EasyFIX 관련 문의 시에는 SharpTrader 버전과 계정 유형을, BjfChart 관련 문의 시에는 .NET 타깃과 데이터 피드를 함께 알려 주세요.

이메일support@bjftradinggroup.com코드 샘플, 사양서, 라이선스 문의에 적합 전화+1 (905) 599-5507월요일~금요일, 동부 시간(토론토) 9:00~18:00 Telegramt.me/bjftradinggroup간단한 질문 및 후속 문의

BJF Trading Group Inc., 3397 Mistwell Crescent, Oakville, ON, L6L 0A2, Canada. 일반 문의: 문의 페이지.



자주 묻는 질문

SharpTrader 봇은 어떤 언어를 사용하나요?
C#입니다. 봇은 플랫폼의 기본 Bot 클래스를 상속하고 초기화, 틱, 포지션 변경, 주문 상태 업데이트에 대한 이벤트 핸들러를 구현하는 클래스입니다. SharpTrader 안에서 컴파일되며 내장 전략과 함께 실행됩니다.
하나의 봇으로 여러 브로커나 거래소에서 동시에 거래할 수 있나요?
네. 모든 시장 데이터 및 주문 호출은 세션 인덱스를 받으며, 세션은 연결된 브로커 또는 거래소 계좌 하나를 의미합니다. 봇은 한 세션에서 호가를 읽고 다른 세션으로 주문을 보낼 수 있으며, 이것이 멀티 브로커 및 크로스 거래소 로직을 작성하는 방법입니다.
EasyFIX API는 무엇이며 누구를 위한 것인가요?
EasyFIX는 외부 소프트웨어가 SharpTrader를 실행 게이트웨이로 연결할 수 있게 해 주는 간소화된 FIX 프로토콜입니다. 플랫폼 외부에서 자체 엔진을 운영하면서 SharpTrader의 브로커 및 거래소 커넥터를 통해 호가를 받고 주문을 보내려는 개발자를 위한 것입니다. 사양서와 테스트 연결은 요청 시 제공됩니다.
BjfChart를 SharpTrader와 별도로 이용할 수 있나요?
네. BjfChart는 SkiaSharp 기반의 독립형 .NET 라이브러리로, net48과 net8.0-windows를 대상으로 하는 단일 DLL입니다. SharpTrader 개발자, 화이트 라벨 파트너, 터미널 벤더에게 라이선스가 제공됩니다. 라이선스 조건과 데모 빌드는 support@bjftradinggroup.com으로 문의하세요.
BjfChart 트레이딩 패널이 주문을 실행하나요?
아니요. 패널은 이벤트(주문 제출, 포지션 청산 요청, 손절 또는 이익실현 드래그 후 포지션 수정)를 발생시키고, 호스트 애플리케이션이 이를 FIX API 세션, 브로커 브리지 또는 EasyFIX를 통한 SharpTrader 등 자체 실행 레이어로 라우팅합니다.
BjfChart에 자체 지표를 추가할 수 있나요?
네. IIndicator 인터페이스를 구현하거나 IndicatorBase를 상속하고, 캔들 목록에 맞춰 정렬된 하나 이상의 시리즈를 반환하며, 오버레이 또는 하위 패널 렌더링을 선택한 뒤 지표를 등록하면 우클릭 메뉴에 표시되고 레이아웃에 저장됩니다.
SharpTrader 또는 BjfChart의 소스 코드를 구매할 수 있나요?
아니요. BJF Trading Group은 컴파일된 빌드에 대한 라이선스를 제공하며 API 접근, 문서, 지원을 제공합니다. 소스 코드는 어떤 프로그램으로도 판매되거나 공개되지 않습니다.





무엇을 개발하고 계신지 알려 주세요

특정 브로커의 특이점에 대응하는 봇, 실행 게이트웨이가 필요한 외부 엔진, 또는 금요일까지 차트가 필요한 터미널. 상세 내용을 담은 이메일 한 통이면, 다음 단계를 담은 답장 한 통을 드립니다.

개발팀에 이메일 보내기 Telegram으로 메시지 보내기

BJF Trading Group Inc.는 숙련된 트레이더와 개발자를 위한 소프트웨어 도구를 개발합니다. 당사는 브로커, 금융기관 또는 투자 자문사가 아니며, 거래를 실행하거나 자금을 운용하지 않습니다. 이 페이지의 코드 샘플은 예시이며 현재 라이브러리 레퍼런스와 다를 수 있으므로, 항상 사용 중인 플랫폼 버전의 문서를 확인하세요. 외환, CFD, 암호화폐 거래는 높은 손실 위험을 수반하며 모든 투자자에게 적합하지 않습니다. 이 페이지의 어떤 내용도 금융 조언이나 수익 보장이 아닙니다.