cTraderでアルゴ取引(cBot)を作る方法の概要
cTraderは、Spotware社が提供する次世代の取引プラットフォームです。その大きな特徴の一つが「cBot」という自動売買プログラムの開発・実行が可能なシステムです。私は元々FX業者のシステム担当として、複数のプラットフォームの内部構造に携わってきました。その経験から言えるのは、cBotの実行環境は、単なる「スクリプト実行エンジン」ではなく、プラットフォーム本体と深く統合された仕組みになっているという点です。
多くのトレーダーが「自動売買は難しい」と感じるのは、プログラムと実際の市場データのギャップを理解していないからです。cBotでは、バックテストの精度が本番と大きく異なることが少なく、その理由は市場データの取得方法と注文の執行ロジックが統一されているためです。本記事では、cBotの基本的な作り方から活用方法まで、実務的な視点で解説します。
cBotとは何か
cBotは、C#で記述される自動売買プログラムです。cTraderプラットフォーム上で動作し、リアルタイム市場データを取得しながら、あらかじめ定義したロジックに従って自動的に売買を実行します。
MQL4やMQL5といった他の言語と異なり、cBotはC#という汎用プログラミング言語を採用しています。これにより、一般的なソフトウェア開発の手法やライブラリをそのまま流用できるという利点があります。また、cTraderのAPI設計は、注文執行の遅延を最小化するために構築されており、「スリッページがなぜ発生するのか」という実装レベルの理由を理解できるようになっています。
cBotの開発環境の準備
cBotを開発するにはいくつかのステップがあります。
1. cTraderのダウンロード
まずはcTraderをダウンロードします。公式サイト(Spotware)から無料で入手できます。Windows版、macOS版、Web版が用意されています。
2. cAlgo(開発IDE)のインストール
cTraderと同時にcAlgoという統合開発環境がインストールされます。これはcBotを書くための専用エディタで、Visual Studioに似たUIになっています。実は、cAlgoの裏側ではRoslyn(.NET Compiler Platform)を使っており、これはMicrosoftが提供するC#のコンパイラです。つまり、cBotはネイティブなC#として最適化されたコードが実行されるという意味です。
3. デモ口座の開設
開発・テストにはデモ口座を使用します。
cBotの基本的な作成手順
ステップ1:プロジェクトの作成
cAlgoを起動し、「New cBot」を選択します。プロジェクト名を設定して、C#テンプレートが生成されます。初期コードには以下のような構造が含まれています:
using cAlgo.API;
using cAlgo.API.Internals;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZoneInfo.Utc, AccessRights = AccessRights.None)]
public class MyBot : Robot
{
protected override void OnStart()
{
//初期化処理
}
protected override void OnBar()
{
//毎ローソク足更新時に実行
}
protected override void OnStop()
{
//終了処理
}
}
}
ステップ2:ロジックの実装
OnBar()メソッドが「毎ローソク足が確定した時点で呼ばれる」という時点で、実は複数の実行タイミング問題が隠れています。cTraderの場合、このタイミングはプラットフォーム側の時間スタンプベースなので、ブローカーの時計とのズレによる誤発注が起きにくい設計になっています。
例えば、単純な移動平均クロスオーバー戦略を実装する場合:
private MovingAverage fastMA;
private MovingAverage slowMA;
protected override void OnStart()
{
fastMA = Indicators.SimpleMovingAverage(Bars.ClosePrices, 10);
slowMA = Indicators.SimpleMovingAverage(Bars.ClosePrices, 20);
}
protected override void OnBar()
{
if (fastMA.Result.Last(1) < slowMA.Result.Last(1) && fastMA.Result.Last(0) > slowMA.Result.Last(0))
{
ExecuteBuyOrder();
}
}
ステップ3:注文の実行
cBotの注文実行方法は、プラットフォームレベルで管理されています。これは手動注文と自動注文で同じキューを使用するため、両者の優先度に差がなく、公平性が保たれるという仕組みです。
private void ExecuteBuyOrder()
{
var volumeInUnits = Symbol.QuantityToVolumeInUnits(1);
var result = ExecuteMarketOrder(TradeType.Buy, Symbol, volumeInUnits, “Buy Signal”);
if (result.IsSuccessful)
{
Print(“注文成功: ” + result.Position.Id);
}
else
{
Print(“注文失敗: ” + result.Error);
}
}
ステップ4:テストとデプロイ
cAlgoではバックテスト機能が統合されています。テスト期間を設定し、過去データ上でロジックをシミュレーションできます。重要な点は、このバックテスト結果が本番とのズレが少ないことです。これはデータ取得からスリッページ計算まで、本番と同じエンジンを使っているためです。
テストで満足のいく結果が得られたら、デモ口座でリアルタイム実行を行い、さらに確認してから本番に移行します。
cBotの実務的な活用法
1. スキャルピング戦略
1分足や5分足でのリスク限定的なトレードに、cBotは適しています。理由は、システムの注文遅延が極めて小さく、スリッページを最小化できるためです。
2. レンジ取引
特定の価格帯での売買を自動化できます。朝のロンドン時間やニューヨークオープンなど、時間指定での取引も可能です。
3. マルチタイムフレーム分析
複数の時間足データを同時に参照し、下位足で売買、上位足で方向を確認するというロジックも簡単に実装できます。
4. ポジションサイジングの自動化
口座のリスク率に応じて、自動的にロット数を調整するロジックを組み込めます。これにより、口座残高の変化に応じた取引が可能になります。
cBotを使う際の注意点
いくつかの実装レベルの注意点があります。
第一に、「ローソク足が確定する時点での実行」という挙動は、ブローカーの時間基準に依存します。複数ブローカーで同じcBotを動かす場合、わずかなタイミングの差で異なる結果になることがあります。
第二に、スプレッドが変動する相場では、バックテスト時の固定スプレッドと本番の可変スプレッドのズレを考慮する必要があります。特にボラティリティが高い時間帯での試験も行いましょう。
第三に、cBotは一度デプロイするとプログラム変更にはcTraderの再起動が必要なケースがあります。本番運用中のロジック変更は計画的に行う必要があります。
まとめ
cBotはC#で記述される自動売買プログラムで、cTraderプラットフォームと深く統合されたシステムです。開発環境の準備からロジック実装、バックテスト、本番運用までの流れは比較的シンプルですが、市場データの取得と注文執行の仕組みを理解することが、高い精度の自動売買につながります。
私の経験上、cBotの最大のメリットは「バックテスト結果と本番の誤差が少ない」という点です。これはシステム設計の段階で、データ整合性と実行順序の統一が図られているためです。
自動売買に興味があり、より精度の高い取引を目指すのであれば、cBotはXMTradingなどのcTrader対応ブローカーで試してみる価値があります。小さなロジックから始めて、徐々に複雑な戦略へ発展させるのがお勧めです。
※本記事の情報は2026年04月時点のものです。最新情報は各公式サイトをご確認ください。本記事にはアフィリエイトリンクが含まれます。