BJFトレーディンググループ株式会社 — カナダ、オンタリオ州 コンタクト メンバーゾーン ブログ
EN DE JA AR KO ES PT ID VI CN



開発者向け · SharpTraderプラットフォーム

SharpTraderで開発する:C# Bot 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コネクターと主要な暗号資産取引所 22BjfChartのインジケーター、参照用の計算式と照合済み 21つのDLLで2つのターゲット:既存アプリ向けnet48、新規アプリ向けnet8.0-windows



BJFで開発する3つの方法

それぞれの選択肢は異なる課題を解決します。コードをどこに置くかに合わせてお選びください。

プラットフォーム内

コーディングモジュール:C# Bot API

戦略をC#のクラスとして記述し、SharpTrader内でコンパイルして、接続済みの任意のブローカーや取引所で実行できます。ティック、ポジション、注文、インジケーターはすべて1回の呼び出しで利用できます。

Bot APIについて読む

プラットフォーム外

EasyFIX API

お使いの言語で書かれた独自のエンジンはそのままに、SharpTraderをゲートウェイとして利用できます。SharpTraderが気配値を配信し、ブローカーと取引所のコネクターを通じて注文をルーティングします。

EasyFIXについて読む

独自のターミナル内

BjfChartチャートライブラリ

1つのDLLで、.NETアプリケーションにプロ仕様のローソク足チャート、インジケーター、描画ツール、取引パネル、板情報、ライブのティックフィードを追加できます。

チャートライブラリを見る



コーディングモジュール:C#で戦略を作成

コーディングモジュールは、SharpTraderを自動売買戦略の開発環境に変えます。ボットはプラットフォームの基底クラスBotを継承したC#クラスで、初期化、受信するすべてのティック、ポジションのオープン、ポジションのクローズ、注文ステータスの更新といったイベントに反応します。プラットフォームがボットをコンパイルし、入力項目をインターフェースに表示し、内蔵のアービトラージ、ニュース、インパルス戦略と並行して、ライブ口座またはデモ口座で実行します。

APIで利用できる機能

分野 できること
マーケットデータ tickerオブジェクトを通じて、シンボルごと・セッションごとのBid、Ask、スプレッド、ポイント値を取得できます。セッションとは接続された1つのブローカーまたは取引所の口座のことで、1つのボットがセッションのインデックスによって複数の取引相手を同時に監視・取引できます。
注文とポジション 成行執行のための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");
    }
}
最初の1行を書く前に知っておきたいこと。サンドボックスは、固定されたアセンブリ(System、System.Collections、System.Runtime、System.Console、SharpTraderのボットライブラリ)に対してコンパイルされます。LINQは含まれていないため、Where、Select、Anyの代わりに単純なforeachループを使ってください。APIから返される価格はブローカーのポイント単位です。独自のしきい値と比較する前にポイント値を掛けてください。また、重複約定のデバッグを楽しみたいのでなければ、返されたクライアント注文IDで管理し、1ティックにつき処理中の注文は1件に保ってください。

クラス、メソッド、イベントの完全なリファレンス: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:価格帯ごとの数量と比例した板の厚みバーを表示する板情報ラダー。価格帯をクリックすると指値価格が自動入力されます。
  • ブローカー注文用にIDで管理する任意の価格ライン(ドラッグも可能)。

インジケーターと描画ツール

グループ 内容
オーバーレイ・インジケーター SMA、EMA、WMA、VWAP、ボリンジャーバンド、ケルトナーチャネル、ドンチャンチャネル、エンベロープ、パラボリックSAR。
サブパネル・インジケーター RSI、ヒストグラム付きMACD、ストキャスティクス、ATR、CCI、ADX / DMI、モメンタム、Rate of Change、ウィリアムズ%R、オーサム・オシレーター、標準偏差、オン・バランス・ボリューム、マネー・フロー・インデックス。
精度 インジケーターの計算は独立した参照実装と照合されています:SMA、EMA、ボリンジャー、RSI、ATR、ストキャスティクス、CCIは1e-9の精度で一致し、MACD、ADX、DI、ウィリアムズ%R、MFI、OBVは正確性と値の範囲が検証されています。
描画ツール トレンドライン、レイ、延長ライン、水平ラインと水平レイ、垂直ライン、矢印、平行チャネル、長方形、楕円、フィボナッチ・リトレースメント、フィボナッチ・エクステンション、そして価格差、変化率、バー数を表示する計測ツール。すべてデータ空間に固定されるため、ズームやパンをしても位置がずれません。
拡張性 IIndicatorを実装する(またはIndicatorBaseを継承する)ことで、ローソク足のリストに対応する1つ以上の系列を返し、オーバーレイかサブパネルか、ライン、ヒストグラム、ドットかを選択し、登録すれば右クリックメニューと保存済みレイアウトに表示されます。

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以降が必要で、SkiaSharpはNuGetが自動的に復元します。シミュレーションのライブティックで動作するデモアプリケーションが付属しています。

BjfChartを自社製品で使用する場合。このライブラリは、SharpTraderの開発者、ホワイトラベルパートナー、サードパーティのターミナルベンダーにライセンス提供されています。使用方法に関するご質問、ライセンス条件、デモビルド、データフィードとの連携サポートについては、以下の連絡先から直接お問い合わせください。使用している.NETのターゲットとデータソースの形式をお知らせいただければ、1営業日以内に回答いたします。



開発者向け連絡先

開発者からのご質問はすべて、プラットフォームを開発しているチームが対応します。Bot 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内でコンパイルされ、内蔵の戦略と並行して実行されます。
1つのボットで複数のブローカーや取引所を同時に取引できますか?
はい。すべてのマーケットデータと注文の呼び出しはセッションのインデックスを受け取り、セッションとは接続された1つのブローカーまたは取引所の口座です。ボットはあるセッションから気配値を読み取り、別のセッションに注文を送信できます。マルチブローカーや取引所間のロジックはこのように記述します。
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を継承し、ローソク足のリストに対応する1つ以上の系列を返し、オーバーレイかサブパネルでの描画を選択して、インジケーターを登録すれば、右クリックメニューに表示され、レイアウトにも保存されます。
SharpTraderやBjfChartのソースコードは販売されていますか?
いいえ。BJF Trading Groupはコンパイル済みのビルドをライセンス提供し、APIアクセス、ドキュメント、サポートを提供しています。ソースコードはいかなるプログラムでも販売・開示していません。





開発中のものをお聞かせください

特定のブローカーの癖に対応するボット、執行ゲートウェイが必要な外部エンジン、金曜日までにチャートが必要なターミナルなど。詳細を記載したメールを1通いただければ、次のステップを1通でご返信します。

開発チームにメールする Telegramでメッセージを送る

BJF Trading Group Inc.は、経験豊富なトレーダーと開発者向けのソフトウェアツールを開発しています。当社はブローカー、金融機関、投資顧問ではなく、取引の執行や資金の運用は行いません。本ページのコードサンプルは説明用であり、現在のライブラリリファレンスと異なる場合があります。必ずお使いのプラットフォームのバージョンのドキュメントをご確認ください。FX、CFD、暗号資産の取引には高い損失リスクが伴い、すべての投資家に適しているわけではありません。本ページのいかなる内容も投資助言や利益の約束ではありません。