cTraderにEAはある?自動売買プログラム「cBot」の基礎・始め方を解説
MT4やMT5で自動売買のEAを利用してきた方が、cTraderへ乗り換える際にまず気になるのが、「cTraderにもEAはあるのか」という点ではないでしょうか。
結論から言うと、cTraderでは「EA」という名称ではなく、自動売買プログラムを「cBot(シーボット)」と呼びます。cBotは、cTrader Algoを利用して開発・実行する取引ロボットで、あらかじめ設定した売買ルールに従って、相場の監視やエントリー、決済などを自動化できます。
本記事では、cTraderで自動売買を始めたい方に向けて、cBotの基本的な仕組みやEAとの違い、自作する場合の学習手順、既製cBotの探し方などを整理して解説します。細かな操作方法や具体的な実装手順を網羅するのではなく、「何を理解し、どの順番で学べばよいのか」を判断できるようになることが本記事の目的です。
-
cBotの仕組みとcTrader Algoとの関係
-
cBotの基本的な動作の流れ(起動・監視・判定・停止)
-
cBotでできることと、自動化が難しいこと
-
cBotのメリット・デメリットと、MT4・MT5のEAとの違い
-
cBotを自作するための段階的な学習ロードマップ
-
無料・有料の既製cBotの入手先と、選ぶ前の確認ポイント
-
初心者が陥りやすい誤解と失敗例
-
cTraderの自動売買に対応している海外FX業者3選
cTraderの自動売買機能の基礎|初めての人にもわかりやすく解説
cTraderの自動売買は、「cBot」と「cTrader Algo」という2つの言葉の関係を理解すると、全体像をつかめます。
まずは、cBotがどのような役割を持つプログラムなのか、cTrader Algoとどのような関係にあるのかを整理しましょう。この2つを先に理解しておくと、後から登場するAPIやC#、Pythonに関する説明も整理しやすくなります。
cTraderの自動売買プログラム「cBot」の仕組み
cBotは、 あらかじめプログラムした売買ルールに基づき、相場の監視や売買条件の判定、注文の発注、ポジションの管理などを自動で行う取引ロボットです。
MT4・MT5におけるEA(Expert Advisor)に相当するもので、cTraderでは自動売買プログラムを「cBot」と呼びます。名称は異なりますが、「人の代わりに設定したルールに従って売買判断や注文処理を自動化する」という基本的な役割は共通しています。
cBotを動かす際は、取引口座や銘柄、時間足、取引数量などのパラメータを設定し、実行単位となる「インスタンス」を起動します。起動後は、価格の更新や新しいバーの生成など、プログラムで指定したタイミングに合わせて売買条件を確認します。
条件を満たした場合は、注文の発注・変更・決済など、あらかじめ記述した処理を実行します。そのため、cBotを自作するには、「どのような状況で、何を、どれだけ取引し、いつ決済するのか」を具体的な条件として整理しておく必要があります。
-
補足:cBotとcTrader Algo(旧Automate)の関係
-
cBotとあわせて理解しておきたいのが「cTrader Algo」です。
-
これはcBotを動かすための開発・実行環境の総称だと考えると整理しやすくなります。cTrader Algoという土台の上で、自動売買を担う「cBot」、分析用の「カスタムインジケーター」、画面機能を拡張する「プラグイン」の3種類を作成・実行できる構造です。
-
cTraderの自動売買機能は、過去に「cAlgo」「cTrader Automate」と呼ばれていました。現在は「cTrader Algo」という名称が使われているため、古い記事や解説でcAlgoやcTrader Automateという表記を見かけた場合は、現在のcTrader Algoにつながる旧名称だと理解しておくとよいでしょう。
cBotの基本構造|起動・監視・判定・停止の流れ
サンプルのcBotを読み解く前に、cBotがどのような順番で動くのかという基本的な骨組みを理解しておきましょう。全体の流れを知っておくと、コードのどこに何が書かれ、どのタイミングで処理されるのかを追いやすくなります。
cTrader Algoには、cBotの起動や価格更新、バーの形成、停止といったイベントに対応する処理の入り口(メソッド)が用意されています。まず押さえておきたい基本的なメソッドは、次の4つです。
OnStart(起動時)
cBotのインスタンスを起動したときに、一度実行されます。変数やインジケーター、カウンター、タイマーの初期化、イベントハンドラーの登録など、cBotが動き始める前の準備をここに書きます。
OnTick(価格の更新時)
対象銘柄の売値または買値が変化し、新しいティックが届くたびに呼び出されます。価格を細かく監視し、リアルタイムで売買条件を判定したい場合に使用します。ただし、相場が活発な時間帯には短時間で何度も呼び出されるため、複雑で負荷の高い処理を入れすぎないよう注意が必要です。
OnBar(新しいバーの開始時)
チャート上に新しいバーやローソク足が形成され始めたタイミングで呼び出されます。
1分足であれば原則として新しい1分足が始まるとき、1時間足であれば新しい1時間足が始まるときに実行されます。ティックごとの細かな変化を追う必要がなく、バー単位で条件を判定する戦略では、OnTickよりも処理回数を抑えられます。
なお、直前に確定したローソク足の終値や高値、安値などを使って判定したい場合は、OnBarClosed()を使用できます。
OnBar():新しく形成されたバーを対象に処理
OnBarClosed():直前に確定したバーを対象に処理
OnStop(停止時)
ユーザーの操作やプログラム内の処理によってcBotが停止したときに実行されます。ログの出力、イベント登録の解除、最終的なデータ処理など、停止時に必要な処理をここにまとめます。
ただし、cBotを停止しただけでは、そのcBotが保有しているポジションは自動的に決済されません。停止時にポジションを決済したい場合は、その処理をコード内に明示的に記述する必要があります。
このほか、cBotの実行中に未処理の例外が発生したときに呼び出されるOnException()もあります。エラー内容のログ出力など、例外が発生した場合の処理を書けます。
まずは、次の大きな流れをつかんでおけば十分です。
起動・初期化(OnStart)
→ 相場の監視と条件判定(OnTick/OnBar/OnBarClosed)
→ 停止時の処理(OnStop)
この骨組みを理解しておくと、後述する学習ロードマップで公式サンプルを読む際にも、「どの処理が、いつ実行されるのか」を整理しながらコードを追えるようになります。
(参考:cTrader Algo公式ドキュメント「cBotのライフサイクル」)
cTraderの自動売買でできること・できないこと
cBotを導入する前に、「どのような処理を自動化でき、どの部分に人の判断を残すべきか」を整理しておきましょう。
明確な基準がない判断まで無理にプログラムへ任せると、条件が複雑になり、想定外の相場で安定して動かないcBotになりかねません。
cBotで自動化しやすいこと
cBotは、数値や条件として明確に表せる処理の自動化を得意としています。たとえば、次のような処理が挙げられます。
-
価格やインジケーターの条件に基づくエントリー・決済
-
損切り・利確・トレーリングストップなどの注文管理
-
証拠金や許容リスクに基づく取引数量(ロット)の計算
-
稼働中の継続的な相場監視と、指定条件に基づく発注
-
cBotの売買ロジックを過去データで検証するバックテスト
cBotでは自動化しにくいこと
-
「なんとなく地合いが悪い」といった言語化しにくい裁量判断
-
突発的なニュースや経済情勢の内容を読み取り、影響を総合的に判断すること
-
売買基準が固まっておらず、取引のたびに条件が変わる手法
-
急変時のスプレッド拡大や約定遅延への臨機応変な対応
ニュース発表時に取引を停止する、スプレッドが一定以上に拡大した場合は注文を出さない、といった対応であれば自動化できます。ただし、そのためには発生し得る状況をあらかじめ想定し、具体的な条件としてコードに落とし込む必要があります。
cBotは「決めたルールを忠実に速く回す」のは得意ですが、売買ルールそのものを考えたり、想定していない状況に合わせて自ら判断基準を変更したりするわけではありません。
実用的なcBotを作れるかどうかは、プログラミング技術だけでなく、その前段階にある「売買ルールをどこまで明確にできるか」に大きく左右されます。この売買ルールの整理が、後述する学習ロードマップの出発点になります。
cBotのメリット・デメリット|MT4/MT5のEAより使いやすい?
cBotとMT4・MT5のEAは、どちらも売買ルールを自動化するためのプログラムですが、使用する言語や開発環境、既製プログラムの選択肢などに違いがあります。
ここでは、cTraderとMetaTraderの機能全体を比較するのではなく、自動売買プログラムの開発・検証・運用という観点に絞って、cBotのメリットとデメリットを整理します。
cBotのメリット
-
C#とPythonの両方で開発できる
cTraderは以前C#のみでしたが、cTrader 5.4でネイティブのPythonサポートが加わり、C#に加えてPythonでもcBotを開発できます。すでにPythonに慣れた方は、言語を学び直さずに自動売買へ入りやすくなりました。 -
作成から検証まで一つの環境で進めやすい
cTrader Windows・MacのAlgo画面では、cBotの作成・編集・ビルドに加え、バックテストや最適化まで進められます。作成したコードを別のツールへ移さずに検証できるため、修正とテストを繰り返しやすいです。 -
バックテスト・最適化が標準搭載
過去の価格データを使って売買ロジックを検証できるほか、パラメータ最適化も追加ツールなしで行えます。 -
オブジェクト指向を活用してコードを構造化しやすい
C#では、売買ロジックや注文管理、リスク管理などをクラスやメソッド単位で分けて書くことが可能です。機能ごとの役割を整理しやすいため、複雑なcBotでもコードの見通しを保ちやすく、修正や拡張もしやすくなります。 -
外部IDEやライブラリを活用しやすい
cTraderはVisual Studio、Visual Studio Code、Riderなどの外部IDEに対応しています。C#ではNuGetパッケージ、Pythonではrequirements.txtを通じて外部パッケージを追加できます。
普段使っている開発ツールやライブラリを活かしながら、機能を拡張しやすい点もメリットです。 -
公式のクラウドで無料稼働できる
cTraderには公式のクラウド実行機能があり、PCやアプリを閉じた状態でもcBotを24時間動かせます。外部VPSの契約が前提になりがちなMT4/MT5のEAに対して、分かりやすい強みです。
一部の有料cBotはライセンス上クラウド利用不可。
クラウドで同時に稼働できるインスタンス数には上限があります。原則としてデモ口座では1つ、ライブ口座では最大10までですが、ブローカーによって異なる場合があります。
いずれも「これから作る・検証する」段階の負担を軽くする要素です。特にPython対応は、データ分析の資産を持つ人にとって参入ハードルを大きく下げる変化です。
cBotのデメリット
-
日本語の情報を探しにくい場合がある
MT4・MT5のEAと比較すると、cBotについて日本語で詳しく解説した記事や動画はまだ限られています。公式ドキュメントや英語の情報を確認する場面もあるため、日本語情報だけで学びたい方はつまずきやすい可能性があります。 -
既製cBotの選択肢がEAより限られる
cTrader Storeでは無料・有料のcBotを入手できますが、MetaTrader Marketには長年にわたって多数のEAやインジケーターが蓄積されています。 -
既存のEAコードをそのまま移行できない
既存のEAをcBotとして使うには、売買ロジックを整理したうえでコードを書き直す必要があります。
デメリットの多くは「機能が劣る」というより、情報・既製品といったエコシステムが発展途上という性質のものです。裏を返せば、自分で作れる人ほど気になりにくい差です。
cTraderのcBot vs MT4・MT5のEA|運用・開発目線で比較
cBotとEAでは、主に開発言語、クラウド運用、既製プログラムの選択肢などが異なります。
| 比較項目 | cBot | EA(MT4・MT5) | 実務上の違い |
|---|---|---|---|
| 開発言語 | C#・Python | MQL4・MQL5 | 汎用性はcBot、既存資産はEA |
| 知識の応用範囲 | Web開発・データ分析にも活用可能 | 主に金融取引向け | 開発スキルを広げるならcBot |
| 基本構造 | Robotクラス+イベント処理 | 複数のイベント関数 | cBotは構造を整理しやすい |
| コード管理 | クラスや型で分割しやすい | 独自処理が増えやすい | 大規模化にはcBotが向く |
| 開発環境 | cTrader・Visual Studio・VS Codeなど | MetaEditorが中心 | 外部IDEはcBot、端末内完結はEA |
| 外部ライブラリ | NuGet・Pythonパッケージ | DLL・標準ライブラリ | 外部連携はcBotが行いやすい |
この違いをふまえると、向いている人は次のように分けられます。
-
C#やPythonの経験を活かしたい方
-
自分で売買ロジックを作成し、検証と改善を繰り返したい方
-
無料の公式クラウドでcBotを継続稼働させたい方
-
cTrader対応口座で自動売買を運用したい方
-
日本語の解説やコミュニティ情報の多さを重視する方
-
多数の既製EAから選んで利用したい方
-
現在保有しているEAやMQLのコードを活用したい方
-
対応ブローカーや口座の選択肢を広く持ちたい方
結論として、開発言語の選択肢や無料クラウドによる運用を重視するならcBotが使いやすく、既製EAや日本語情報、既存のMQL資産を重視するならMT4・MT5のEAが始めやすいといえます。
単純にどちらが優れているという話ではなく、「持っているスキル」と「重視する環境」で選ぶのが現実的です。
cBotを自作したい人向け|cTrader自動売買の学習ロードマップ
ここからは、cBotを自分で作りたい方に向けて、何をどの順番で学べばよいのかを段階ごとに解説します。
いきなりコードを書くのではなく、土台となる考え方から順に積み上げたほうが、手戻りを減らし、実際に動くcBotまで形にしやすくなります。
本記事では、学習の流れを5段階に分けました。各段階で、次の内容を整理します。
-
その段階に取り組む目的
-
確認・学習すべき内容
-
具体的に行うこと
-
次の段階へ進むための到達目安
-
つまずきやすいポイント
記載している期間はあくまで目安であり、プログラミング経験や確保できる学習時間によって前後します。まずは段階1から順に確認し、すでに理解できている内容は簡潔に読み進めてください。
cBotの学習に役立つ資料一覧表
cBotの学習では、まず公式ドキュメントで仕様を確認し、公式サンプルを実際に動かしながら理解を深めるのが基本です。分からない点がある場合は、コミュニティの過去事例や外部の解説資料も補助的に活用しましょう。
| サイト/資料 | 主な用途 |
|---|---|
| cTrader Algo公式ドキュメント | cBot作成、API、バックテスト、最適化の正確な仕様確認。まずブックマーク推奨です。 |
| Spotware公式GitHub | cBot / Indicatorのサンプルコード集。コードを直接見て学ぶならかなり有用です。MITライセンスの公式サンプルリポジトリがあります。 |
| cTrader公式YouTube | 画面操作を見ながら覚える用途。「5分でcBot作成」「cBotの注文操作」などの動画があります。 |
| cTrader Community / Forum | エラー解決、APIの使い方、他の人の質問検索に便利です。cTrader Algo専用フォーラムではインジケーターや自動売買、C#関連の議論があります。 |
| Microsoft Learn C# | 変数、条件分岐、メソッド、クラスなど、cBotを読むために必要なC#の基礎を無料で学べます。プログラミング経験がない方は、cBotの学習と並行して必要な部分だけ確認するとよいでしょう。 |
| Clickalgo Knowledge Center | cBotやインジケーターの作成、インストール、注文処理、エラー対応などを英語で学べます。公式資料だけでは理解しにくい部分を補う外部資料として活用できます。 |
【段階1】まずは売買ルールを整理する(想定期間:1週間程度)
この段階の目的
cBotは「ルールを実行する道具」です。元となるルールが曖昧なままでは、どの条件をコードにすればよいのか決められません。
この段階では、普段の売買判断を言葉と数値に置き換え、人によって判断が変わらず、cBotが同じ基準で判定できる状態にすることを目指します。
具体的に行うこと
取り組む内容は、すでに売買ルールがあるかどうかによって異なります。
すでに売買ルールがある人
普段使っている裁量ルールを、主に次の項目に分けて整理します。
・対象銘柄と時間足
・エントリー条件
・利益確定と損切りの条件
・取引数量または1回あたりの許容リスク
・必要に応じて、取引を見送る条件
「相場の流れが良ければ買う」「十分に押したら入る」といった主観的な表現は、価格、インジケーター、pips、ローソク足の本数などを使って具体化します。
売買ルールがまだ固まっていない人
最初から複雑な手法を作ろうとせず、「移動平均線のクロスで入る・逆クロスで出る」など、条件を明確にしやすいシンプルなロジックを1つ選びます。
この段階では、利益を出せる手法を完成させることよりも、同じ条件なら毎回同じ判断になるルールを作ることが重要です。まずは最小限の条件で動くcBotを作り、必要な要素は検証しながら後から追加します。
具体例:曖昧な裁量ルールを数値条件に置き換える
たとえば「上昇トレンドで押し目を待って買う」という裁量ルールは、そのままではcBotが判断できません。これを、EUR/USDの1時間足を対象とするルールとして、次のように具体化します。
-
トレンド判定:50EMAが200EMAより上にある
-
押し目の条件:ローソク足の安値と20EMAの差が5pips以内になる
-
エントリー:確定したローソク足の終値が、過去5本の高値の最高値を上回る
-
損切り:過去5本の安値の最安値から2pips下、または一定のpipsに設定する (例:20pips)
-
利確:リスクリワード1対2(損切り幅の2倍)を目安に設定する
-
取引数量:損切りになった場合の損失が口座残高の1%以内になるように計算する
このように、「相場が良ければ」「押したら」といった曖昧な言葉を、EMAとの距離、ローソク足の本数、pips、損失率などに置き換えていきます。
上記はルールを具体化する方法を説明するための仮の例であり、利益が出る設定を示すものではありません。実際に使う際は必ず自分でバックテストやフォワードテストを行い、対象銘柄や時間足、取引環境に合わせて検証する必要があります。
この段階の到達目安
第三者がルールを読んでも、同じタイミングで同じ売買判断を再現できる状態が目安です。
最終的には、対象銘柄、時間足、エントリー、決済、損切り、取引数量などをまとめた、簡単な「売買ルール仕様書」を1枚作成しておくとよいでしょう。この仕様書が、次の段階でcBotの処理を組み立てる際の設計図になります。
つまずきやすいポイント
初心者が陥りやすいのは、最初から多くのインジケーターや例外条件を追加してしまうことです。条件が増えるほどコードと検証が複雑になり、どの条件が結果に影響したのかも判断しにくくなります。
最初は必要最低限の条件に絞り、実際に動く形まで作ってから少しずつ追加することが大切です。
【段階2】cTrader Algoの環境と基礎を理解する(想定期間:1〜2週間)
この段階の目的
この段階では、複雑な売買コードを書く前に、cBotを作成・実行する環境と、プログラムが動く基本的な流れを理解します。
まず押さえたいのは、cTrader Algoの基本構造と、cBotが次のような流れで処理を行うことです。
起動・初期化
→ 価格更新やバー形成に応じた監視・判定
→ 注文・ポジション管理
→ 停止時の処理
確認・学習すべき内容
開発環境を準備する
cBotの基本的な作成・ビルド・実行は、cTrader WindowsまたはMacのAlgo画面から行えます。新しいcBotを作成する際にC#またはPythonを選択し、内蔵のコードエディターで編集できます。
この段階で準備するものは、主に次のとおりです。
-
cTrader WindowsまたはMac
-
cTraderに対応したデモ口座
-
学習に使用するプログラミング言語
最初の学習であれば、cTrader内蔵の開発環境だけでも始められます。Visual StudioやVisual Studio Codeなどの外部IDE、.NET SDK、デバッグ用のツールは、より本格的な開発が必要になった段階で導入しても問題ありません。
PythonとC#のどちらを選ぶか迷う場合は、後述するFAQも参考にしながら、まず一方に絞りましょう。最初から両方を並行して学ぶ必要はありません。
プログラミング経験がない場合は、選んだ言語について、次の基礎も確認します。
-
変数とデータ型
-
条件分岐
-
メソッド
-
クラスの基本
-
ログの出力方法
すべてを詳しく学んでからcBotを作る必要はありません。まずは サンプルコードを見て、それぞれの処理が何をしているのか大まかに理解できる状態を目指しましょう。
具体的に行うこと
段階1のルールをcBotの処理に分解する
環境を準備したら、段階1で整理した売買ルールを、cBot内の処理単位に分けて考えます。
先ほどのEMAを使ったルールであれば、次のように整理できます。
-
インジケーターの準備
50EMA・200EMA・20EMAなど、売買判断に使うインジケーターを初期化します。主にOnStart()で行う準備にあたります。 -
条件の監視
価格やEMAの位置関係を、ティックの更新時または新しいバーが形成されたタイミングで確認します。 -
エントリー判定
トレンド、押し目、高値更新など、段階1で定めた条件がすべて成立しているかを判定します。 -
発注処理
エントリー条件を満たした場合に注文を出し、取引数量、損切り、利益確定などを設定します。 -
ポジション管理・決済
保有ポジションの有無を確認し、重複注文を防ぎます。必要に応じて、損切りや利益確定、トレーリングストップなどの処理も行います。
この「準備・監視・判定・発注・管理」という分け方は、多くのcBotに共通する骨組みです。前の章で触れたOnStartやOnTick・OnBarといった処理の入り口とも対応しており、サンプルコードを読むときの地図になります。
この段階の到達目安
cTrader Algoで最小構成のcBotを作成し、保存・ビルドしたうえで、インスタンスを起動・停止できる状態を目指します。
この段階では、まだ注文を出すcBotを完成させる必要はありません。次の状態になっていれば、段階3へ進む目安です。
-
C#またはPythonのどちらで学ぶか決まっている
-
新しいcBotを作成してビルドできる
-
cBotのインスタンスを起動・停止できる
-
基本的なメソッドが呼ばれるタイミングを説明できる
-
段階1の売買ルールを処理単位に分解できる
つまずきやすいポイント
初心者がつまずきやすいのは、環境を完璧に整えてからコードを書こうとして、外部IDEや追加ツールの設定に時間をかけすぎることです。
最初はcTrader内蔵の開発環境を使い、最小構成のcBotが正常に動くことを確認しましょう。必要なツールは、開発内容が複雑になってから段階的に追加するほうが学習を進めやすくなります。
次の段階では、公式のサンプルcBotを動かしながら、コードの各部分がどの処理を担当しているのかを読み解いていきます。
【段階3】サンプルcBotを読んで改造する(想定期間:2〜4週間)
この段階の目的
この段階では、最初からすべてのコードを書くのではなく、正常に動く公式サンプルを読み解きながら、cBotでよく使われる処理のパターンを身につけます。
この段階のゴールは、段階1で整理した売買ルールの一部を、公式サンプルを土台にして再現できる状態になることです。
確認・学習すべき内容
Spotware公式では、cBotのサンプルコードをC#とPythonの各GitHubリポジトリで公開しています。まずは自分が段階2で選んだ言語のサンプルを1つ開き、実際に動かしながら処理の流れを確認しましょう。
主に確認したいのは、次のような処理です。
-
インジケーターの初期化
-
価格やインジケーター値の取得
-
条件分岐による売買判定
-
注文の発注と決済
-
パラメータの設定
-
保有ポジションの確認と管理
具体的に行うこと
具体例:EMAの公式サンプルを読む
たとえばSpotware公式GitHubには、2本のEMAのクロスで売買する「Exponential Moving Average Sample」というcBotが公開されています。
このサンプルでは、OnStart()で2本のEMAを準備し、OnBarClosed()で直前に確定したバーのEMAを比較します。クロスが発生した場合は、反対方向のポジションを決済し、ExecuteMarketOrder()で新しい注文を出します。
全文を最初から理解する必要はありません。段階2で整理した「準備・監視・判定・発注」が、コードのどこに書かれているかを確認することから始めましょう。
// OnStart:2本のEMAを用意する(準備)
protected override void OnStart()
{
_fast = Indicators.ExponentialMovingAverage(SourceFirst, PeriodsFirst); // 短期EMA
_slow = Indicators.ExponentialMovingAverage(SourceSecond, PeriodsSecond); // 長期EMA
}
// OnBarClosed:バーが確定するたびにクロスを判定して発注(監視・判定・発注)
protected override void OnBarClosed()
{
// 短期が長期を下から上へ抜けたら買い(ゴールデンクロス)
if (_fast.Result.Last(0) > _slow.Result.Last(0) && _fast.Result.Last(1) < _slow.Result.Last(1))
{
ClosePositions(TradeType.Sell);
ExecuteMarketOrder(TradeType.Buy, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips);
}
// 反対に上から下へ抜けたら売り(デッドクロス)
else if (_fast.Result.Last(0) < _slow.Result.Last(0) && _fast.Result.Last(1)> _slow.Result.Last(1))
{
ClosePositions(TradeType.Buy);
ExecuteMarketOrder(TradeType.Sell, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips);
}
}
上のコードはSpotware公式サンプルの要点を抜粋・簡略化したものです(変数名などは読みやすさのため一部変更しています)。`_fast`/`_slow`(2本のEMA)や`StopLossInPips`などは、サンプル本体で宣言・設定される変数・パラメータで、抜粋では宣言部分を省いています(`Indicators`や`ExecuteMarketOrder`はcTrader Algoの組み込み機能です)。また`ClosePositions`(複数形)はこのサンプル内で定義された補助メソッドで、内部では組み込みの`ClosePosition`(単数形)を呼び出しています。
読むときのコツは、段階2で分けた「準備・監視・判定・発注」がコードのどこにあたるかを対応づけることです。`OnStart`でEMAを用意し(準備)、`OnBarClosed`で2本のEMAの位置関係を見て(監視)、クロスが起きたかを判定し(判定)、`ExecuteMarketOrder`で注文を出す(発注)、という流れになっています。
ここで注意したいのは、このサンプルは「2本のEMAがクロスしたら売買する」という、段階1で考えたルールよりもシンプルなロジックだという点です。
まずはこの単純なサンプルで「読んで、少し変える」流れに慣れ、そこから条件を一つずつ加えていくのが現実的です。
最初はパラメータだけを変更する
コードを書き換える前に、まずは画面上で変更できるパラメータを調整し、挙動がどのように変わるかを確認します。たとえば、次の項目です。
-
EMAの期間(`PeriodsFirst` / `PeriodsSecond`)を、段階1で決めた50や200に変える
-
対象の通貨ペアや時間足を変更して動かす
-
損切り・利確(`StopLossInPips` / `TakeProfitInPips`)のpipsを変更する
-
判定条件に「20EMAへの押し目」を足して、エントリーの精度を試す
次にコードを一か所だけ変更する
パラメータ変更に慣れたら、コード内の条件を一か所だけ変更します。
たとえば、次のような改造が考えられます。
-
売買判定時にログを出力する
-
買い注文だけを実行するように変更する
-
EMAの交差に加えて、価格が200EMAより上にあることを条件にする
-
同じ方向のポジションを保有している場合は、新しい注文を出さないようにする
変更前と変更後の挙動を比較し、どのコードが結果に影響したのかを確認します。一度に複数の箇所を変えると原因を切り分けにくくなるため、変更は一つずつ行うことが大切です。
段階1の売買ルールへ少しずつ近づける
段階1で整理した「50EMAと200EMAでトレンドを確認し、20EMAへの押し目と直近高値の上抜けでエントリーする」というルールを再現するには、EMAの期間を変えるだけでは足りず、トレンド判定・押し目・ブレイクの条件を自分で足していく必要があります。次の順番で条件を追加すると、どこで問題が起きたのかを確認しやすくなります。
-
1.
50EMAと200EMAでトレンド方向を判定する
-
2.
20EMAを追加する
-
3.
価格と20EMAの距離を使って押し目を判定する
-
4.
過去一定本数の高値を取得する
-
5.
高値を上抜けた場合にエントリーする
-
6.
損切り・利益確定・取引数量のルールを追加する
「20EMA付近」や「直近高値」といった条件は、そのままではプログラムが判断できません。段階1で決めたpipsやローソク足の本数を使い、数値条件として実装します。
条件を追加した際は、エントリーの回数やタイミング、損益結果がどのように変わったかを確認してください。条件を増やせば必ず成績が良くなるわけではありません。
公式サンプルはAPIの使い方を学ぶための教材であり、利益を保証する売買ロジックではありません。変更後は、必ずデモ口座やバックテストで動作を確認しましょう。
この段階の到達目安
この段階の到達目安は、公式サンプルの基本的な流れを説明でき、段階1で決めた売買ルールの一部をサンプルに追加できることです。
最終的には、変更した内容と結果を簡単な記録として残しましょう。「何を変更し、なぜ変更し、どのように挙動が変わったか」を記録しておくと、後の検証や不具合修正にも役立ちます。
つまずきやすいポイント
最も多い失敗は、一度に多くの条件を追加し、どの変更が原因で動かなくなったのか分からなくなることです。最初は、正常に動く公式サンプルを基準として保存しておき、変更するたびにビルドと動作確認を行いましょう。
複数のcBotインスタンスを同時に試す場合は、ポジションの識別に使うLabelをインスタンスごとに分けると、別のcBotが管理するポジションとの混同を防ぎやすくなります。
【段階4】バックテストと最適化で検証する(想定期間:1〜2週間)
この段階の目的
実口座で稼働させる前に、過去データを使って、cBotが想定どおりに動くかを確認します。
利益だけでなく、エントリー・決済のタイミングや最大ドローダウン、取引回数なども確認し、実運用を検討できる状態を目指します。
確認すべき内容
cTrader Algoのバックテスト・最適化機能を使い、主に次の点を確認します。
-
検証期間とデータソース
-
初期資金、手数料、スプレッドなどの条件
-
純利益、最大ドローダウン、取引回数
-
資金曲線と取引履歴
-
過剰最適化(カーブフィッティング)のリスク
結果は検証条件によって変わるため、数字だけでなく、どのような設定で検証したかも記録しておきましょう。
具体的に行うこと
段階3で作成・改造したcBotを使い、相場状況の異なる複数の期間でバックテストを行います。
確認したいポイントは次のとおりです。
-
想定した条件で売買されているか
-
損切り・利益確定が正しく機能しているか
-
最大ドローダウンが許容範囲内か
-
取引回数が極端に少なくないか
-
利益が特定の期間や取引に偏っていないか
必要に応じて最適化を行いますが、最も利益が大きい設定をそのまま採用するのではなく、最適化に使っていない別の期間でも再検証してください。
この段階の到達目安
次の状態になれば、段階5へ進む目安です。
-
バックテスト条件を自分で設定できる
-
取引履歴から、想定どおりに動いているか確認できる
-
利益だけでなく、リスクや取引回数も評価できる
-
異なる期間でも結果を比較できる
-
検証条件と結果を記録できる
つまずきやすいポイント
最も注意したいのは、過去の値動きに合わせて条件を調整しすぎる「過剰最適化」です。
バックテストの数字を良くするために条件を増やしすぎると、検証期間では好成績でも、別の期間では機能しない可能性があります。
良い結果が出たときほど、異なる期間や条件でも同じ傾向が続くかを確認しましょう。なお、過去の結果が将来の利益を保証するものではありません。
【段階5】デモから小さく実運用へ移す(想定期間:継続)
この段階の目的
バックテストを終えたcBotを、デモ口座から少額の実口座へ段階的に移し、実際の取引環境でも想定どおりに動くかを確認します。
最初から大きな資金を投入せず、損失を抑えながら運用上の問題を見つけることが目的です。
確認すべき内容
バックテストと実際の取引では、次のような違いが生じる可能性があります。
-
スプレッドの変動
-
スリッページや約定の遅れ
-
注文が成立しないケース
-
取引手数料や実際の損益
-
PC、公式クラウド、VPSなどの稼働環境
具体的に行うこと
まずはデモ口座で一定期間cBotを稼働させ、次の点を確認します。
-
想定した条件で注文されているか
-
損切りや利益確定が正しく機能しているか
-
バックテストと大きく異なる動きがないか
-
通信切断やエラーが発生していないか
-
稼働環境を安定して維持できるか
問題がなければ、許容できる損失額を決めたうえで、最小ロットや少額資金から実運用を始めます。運用開始後も、取引履歴やログ、ドローダウンを定期的に確認してください。
この段階の到達目安
この段階には明確な終了時点はありません。次の状態を維持できていることが、安定した運用の目安です。
つまずきやすいポイント
よくある失敗は、短期間のデモ運用だけで安全だと判断し、すぐに取引数量を増やしてしまうことです。
また、正常に動いているからといって完全に放置すると、相場環境の変化や通信エラー、ブローカーの取引条件変更などを見落とす可能性があります。
実運用では、少額から始め、結果を確認しながら慎重に取引数量を調整しましょう。異常な注文や想定以上の損失が発生した場合に、すぐcBotを停止できる状態にしておくことも重要です。
既製cBotを探したい人向け|無料・有料cBotの入手先まとめ
自作にこだわらず、まずは既製のcBotを試したい方も少なくないでしょう。実際に動くcBotに触れることは 、自動売買の仕組みや設定方法を理解するきっかけになります。 ただし、すぐに利用できる既製cBotと、学習・改造を目的としたサンプルコードでは用途が異なります。
また、配布元によってソースコードの公開範囲、ライセンス、サポート、実績の信頼性も異なります。 ここでは無料・有料それぞれの主な入手先と、導入前に確認したいポイントを整理します。
無料cBot・サンプルコード を入手できる場所
| 入手先 | 種類 | 特徴 |
|---|---|---|
| cTrader Store | 公式マーケット | 無料cBotを検索・インストールできます。商品説明や販売者情報、レビューも確認できます。 |
| GitHub | コード共有プラットフォーム | Spotware公式・外部開発者が公開するcBotのソースコードを検索できます。利用前に品質、更新状況、ライセンスの確認が必要です。 |
| ClickAlgo Free Trading Tools | 外部サイト | 無料のcBotやインジケーター、ソースコード付きの学習用ツールを提供しています。 |
| EarnForex | 外部サイト | 無料・オープンソースのcBotを公開しており、コードの学習や改造にも活用できます。 |
cTrader Storeの無料cBotは、既製プログラムを手軽に試したい場合に向いています。一方、GitHubやClickAlgo、EarnForexなどで公開されているソースコード付きのcBotは、コードを読み、自分で改造しながら学びたい場合に適しています。
ただし、無料であってもソースコードが公開されているとは限りません。また、サンプルや公開コードは、cTrader Algo APIの使い方やcBotの基本構造を学ぶ参考にはなりますが、利益を目的に設計・検証された売買戦略とは限りません。
配布元や利用条件が不明なファイルを、いきなり実口座で動かすことは避けましょう。まずはデモ口座やバックテストで、注文条件やリスク管理の仕組みを確認してください。
有料cBotを購入できる場所
機能が充実した製品や、販売者によるサポート付きのcBotを探す場合は、有料製品も選択肢になります。
| 入手先 | 種類 | 特徴 |
|---|---|---|
| cTrader Store | 公式マーケット | 商品説明、販売者情報、評価・レビューなどを確認し、cTraderアカウントにインストールして利用できます。 |
| ClickAlgo Marketplace | cTrader専門の外部販売サイト | 有料cBotやインジケーター、取引支援ツールを扱っています。無料製品や開発サービスもありますが、ソースコードやサポートの有無は製品ごとに異なります。 |
| Gumroad | デジタルコンテンツ販売プラットフォーム | 個人開発者が、cBot本体、ソースコード、マニュアルなどを販売しています。cTrader専門のマーケットではないため、販売者の実績やライセンス、サポート条件の確認が必要です。 |
| Fiverr・Upwork・Lancersなど | カスタム開発の依頼先 | 自分の売買ルールに合わせたcBotの開発や、EA・TradingViewストラテジーなどからの移植を依頼できます。 |
ここで注意したいのは、 販売ページのバックテスト結果や実績だけで判断しないことです。過去の好成績は将来を保証せず、都合の良い期間だけを切り取った結果も存在します。
特に、短期間の高い利益率だけを強調している製品や、売買ロジックとリスクがほとんど説明されていない製品は慎重に判断しましょう。
次の項目では、無料・有料cBotを選ぶ前に確認したいポイントを具体的に解説します。
既製cBotを選ぶ前に確認したいポイント
無料・有料を問わず、既製cBotを導入する前には、ロジックや検証条件、利用環境などを確認する必要があります。
まずは以下のチェックリストを使って、検討中のcBotに不明点がないか確認してみましょう。
| チェック項目 | YES | NO |
|---|---|---|
| ロジックが説明されているか | ||
| 検証条件が明示されているか | ||
| 自分の取引環境に合っているか | ||
| 更新・サポートの有無 | ||
| ライセンスや利用制限が明確か | ||
| まずデモで試せるか |
ロジックが説明されているか
どのような条件でエントリー・決済するのかが分からないcBotは、不調時に対処できません。ナンピンやマーチンゲールなど、損失が膨らみやすい仕組みの有無も確認します。
検証条件が明示されているか
バックテストの期間、対象銘柄、時間足、スプレッド設定などの条件を確認します。利益率だけでなく、最大ドローダウンや取引回数も重要な判断材料です。
自分の取引環境に合っているか
推奨される銘柄、時間足、最低資金、口座タイプ、レバレッジなどを確認します。低スプレッド口座を前提としたcBotを異なる条件で使うと結果が変わります。
更新・サポートの有無
最終更新日、対応するcTraderの環境、不具合修正、質問へのサポート範囲などを確認します。有料製品では、アップデートや返金条件も見ておきましょう。
ライセンスや利用制限が明確か
利用できる口座数、複数端末での使用、公式クラウドへの対応、ソースコードの有無など、製品ごとの利用条件を確認します。
まずデモで試せるか
実口座に入れる前に、バックテストやデモ口座で動作を確認しましょう。
これらは優れたcBotを見抜くためというより、明らかに危ういものを避けるためのチェックです。1つでも大きな不安が残るなら、実運用は急がず見送りましょう。
cTrader自動売買で初心者が注意したい誤解・失敗例
最後に、cTraderで自動売買を始める際に、初心者が陥りやすい誤解や失敗例を整理します。事前に確認しておくことで、不要な損失や手戻りを減らしやすくなります。
「自動売買=放置で稼げる」という誤解
cBotを動かせば、何もしなくても利益が積み上がるわけではありません。
相場環境は常に変化するため、過去に機能した売買ルールが、別の局面では通用しなくなることがあります。自動売買は相場の監視や判断、発注を自動化する道具にすぎず、利益を保証するものではありません。
稼働後も取引履歴やドローダウンを定期的に確認し、想定した動きから外れていないかを見直す必要があります。
バックテストの結果を過信する失敗
過去データで良い成績が出ても、実際の相場で同じ結果になるとは限りません。
パラメータを特定の期間に合わせすぎると、バックテストでは好成績でも、別の相場では大きく崩れる可能性があります。見るべきは単発の好成績よりも、異なる期間や相場でも大きく崩れない安定性です。
最適化に使っていない期間で再検証し、デモ口座でのフォワードテストを行ってから、実口座での運用を検討することが重要です。
いきなり大きな資金・複雑なcBotから始める失敗
最初から多くの条件を組み込んだcBotや、大きな取引数量で運用すると、問題が起きた際に原因を特定しにくくなります。
まずはシンプルな売買ルールをデモ口座や最小ロットで動かし、挙動を理解してから徐々に広げるほうが、結果的に早く安定します。環境構築やサーバー設定に凝りすぎて、肝心の売買ルールが後回しになるのもよくある落とし穴です。
稼働後の監視・停止基準を決めない失敗
cBotが正常に起動していても、想定外の注文や通信エラー、急激なドローダウンが発生する可能性があります。
運用前に、次のような停止基準を決めておきましょう。
-
一定以上の損失やドローダウンが発生した場合
-
想定していない注文が出された場合
-
スプレッドや約定状況が大きく悪化した場合
-
エラーや接続障害が繰り返し発生した場合
自動で発注される仕組みだからこそ、異常が起きた場合にすぐ停止し、原因を確認できる状態を整えておくことが重要です。
cTrader自動売買に対応する海外FX業者3社を比較
cTraderで自動売買を始めるには、cTraderを提供する業者の口座が必要です。
ここでは、取引コスト、cBotに関する公式情報、検証環境など、自動売買との相性を基準に3社を紹介します。スプレッドや手数料、レバレッジなどの条件は変更される場合があるため、口座開設前に各社の公式サイトで最新情報をご確認ください。
IC Markets|取引頻度の高いcBotで総コストを重視する人向け
cTrader自動売買対応口座
Raw Spread口座(cTrader)
強み
Raw Spread口座では狭い変動スプレッドと取引量に応じた手数料体系を採用しており、短期売買型や取引回数の多いcBotで、約定環境と総取引コストを重視する場合に検討しやすい環境です。
注意点
cTraderの手数料は、片道10万USDの取引につき3USDを基準に計算されます。口座通貨や取引銘柄によって実際の金額が変わるため、バックテストでは変動スプレッドと手数料の両方を実運用に近い条件へ設定する必要があります。
向いている人
スキャルピングや短期売買など、取引頻度の高いcBotを運用し、1回ごとのスプレッドと手数料を含む総取引コストを抑えたい人。
FxPro |公式情報とVPSがそろうcBotの継続運用環境
cTrader自動売買対応口座
FxPro cTrader口座
強み
FxProの日本語FAQでは、cBotの稼働確認、エラーログ、複数cBotの実行方法など、導入時や運用中に確認したい情報が日本語でまとまっているため、公式情報を参照しながらcBotの検証を進めやすい点が特徴です。
また、ローカル環境だけでなく、必要に応じてcTraderの無料クラウド実行やFxPro VPSを利用した継続運用も検討できます。
注意点
FxPro VPSは別途契約が必要です。現在のcTraderには無料のクラウド実行機能もあるため、使用するcBotがクラウド実行に対応しているかを確認し、VPSが本当に必要か比較しましょう。
向いている人
公式の日本語情報を確認しながらcBotを導入し、複数のcBotやVPSを使った継続運用まで検討したい人。
AXIORY|複数の口座条件でcBotを比較・検証しやすい
cTrader自動売買対応口座
ゼロ・マックス・スタンダード・ナノ口座
強み
手数料無料の口座と、狭いスプレッドに手数料を組み合わせた口座があり、cBotの取引頻度に応じてコストの違いを比較しやすい環境です。日本語の公式サイトやサポートも利用できます。
注意点
口座ごとに取扱銘柄やスプレッド、手数料が異なります。特に取引回数の多いcBotでは、手数料を含む総コストを確認する必要があります。
また、ゼロ口座は取扱銘柄が一部に限られるため、使用予定のcBotが対象とする銘柄に対応しているかを事前に確認しましょう。
向いている人
日本語環境で安心して始めたい初心者や、複数の口座条件でcBotを試し、デモ運用の結果を比較してから実口座へ移行したい人。
口座開設前には、利用予定のcBotが対象とする銘柄、時間足、最低取引数量、手数料体系を確認し、まずデモ口座で想定どおりに動くかを検証しましょう。
cTrader自動売買に関するよくある質問(FAQ)
cTraderで自動売買を始める際によくある疑問を、5つにまとめました。
すでにPythonまたはC#の経験がある場合は、慣れている言語から始めるのが効率的です。
プログラミング未経験の場合は、サンプルや日本語情報が比較的多いC#から入るのが無難です。Pythonはネイティブ対応が加わって日が浅く、データ分析などでPythonの資産をすでに持つ人には有力な選択肢になります。
「みんながどちらか」より「自分が続けやすいか」で選びましょう。なお、Pythonを使うなら、利用する業者のcTraderがPython対応版(5.4以降)になっているかを、口座選びの前に確認しておくと安心です。
MT4・MT5のEAを、cTraderでそのまま動かすことはできません。
EAはMQL4またはMQL5で作成されるのに対し、cBotはC#またはPythonで作成します。使用する言語だけでなく、注文やポジションを操作するAPIも異なるためです。
同じロジックを動かしたい場合は、EAのルールを参考にcBotとして作り直す必要があります。考え方は流用できますが、コードの移植は「書き直し」に近いと考えておきましょう。
cTrader内でcBotを作成・実行するだけであれば、cTrader Open APIは必須ではありません。
cBotは、cTrader Algo APIを使って、注文、ポジション、価格、インジケーターなどを操作します。一方、Open APIは、cTraderの外部に独自のアプリや取引システムを作り、cTraderのバックエンドへ接続する場合に使用する仕組みです。
まずcBotで自動売買を始める段階では、Open APIを意識する必要はありません。
cBotの主な稼働方法は、次の3つです。
-
1.
自分のPCでローカル実行する
cTrader WindowsまたはMacを起動している間だけcBotが動作します。 -
2.
cTrader公式クラウドで実行する
パソコンやアプリを閉じても、cBotを24時間稼働できます。クラウド利用料は無料です。初期設定では、デモ口座で1インスタンス、ライブ口座で最大10インスタンスを起動できますが、上限はブローカーによって異なる場合があります。 -
3.
VPSで実行する
外部パッケージや独自の実行環境が必要なcBotなど、公式クラウドでは動かしにくい場合に選択肢となります。
一般的なcBotであれば、まず無料の公式クラウドで動作を確認するとよいでしょう。ただし、外部ライブラリを使用するcBotは、クラウド環境との互換性を確認する必要があります。
既製cBotを利用するだけであれば、プログラミング未経験でも始められます。ただし、売買ロジック、取引数量、損切り、バックテスト結果などを理解せずに使うのは危険です。
まずは無料のcBotをバックテストやデモ口座で動かし、どのような条件で注文されるのかを確認しましょう。自作を目指す場合は、公式サンプルを少しずつ変更しながら、C#またはPythonとcTrader Algo APIを段階的に学ぶ方法が現実的です。
コードを書かずに他者の取引へ自動追随したい場合は、「cTrader Copy」という機能もあります。cTrader Copyは、選んだストラテジープロバイダーの取引を自分の専用口座へ反映するコピートレード機能であり、自分で設定したルールを実行するcBotとは仕組みが異なります。
まとめ|cTraderの自動売買を段階的に始めよう
cTraderでは、MT4・MT5のように「EA」という名称は使われていませんが、同じ役割を担う自動売買プログラム「cBot」が用意されています。cBotはcTrader Algoで開発・実行でき、C#とPythonの両方に対応しています。バックテストや最適化、クラウド実行など、自動売買の作成・検証・運用に必要な機能がそろっている点も特徴です。
cBotを自作する場合は、いきなりコードを書き始めるのではなく、次の順番で進めると理解しやすくなります。
-
①
売買ルールを明確にする
-
②
cTrader Algoの環境と基礎を理解する
-
③
公式サンプルを読み、少しずつ改造する
-
④
バックテストと最適化で検証する
-
⑤
デモ口座から少額の実運用へ移行する
既製cBotを利用する場合も、販売ページに掲載された利益率やバックテスト結果だけで判断してはいけません。売買ロジック、検証条件、最大ドローダウン、利用環境などを確認し、必ずバックテストやデモ口座で動作を検証してから導入しましょう。
また、cBotは売買判断や注文処理を自動化する仕組みであり、利益を保証するものではありません。相場環境の変化や通信エラー、想定外の注文によって損失が拡大する可能性もあります。稼働後も取引履歴やドローダウンを定期的に確認し、必要に応じて停止・見直しを行うことが重要です。
まずは、使用予定のcBotと取引条件が合う業者のデモ口座を利用し、無理のない範囲でcTraderの自動売買を体験してみましょう。
※本記事は、cTrader Algo公式ドキュメントなどの公開情報、およびデモ環境で確認した内容をもとに作成しています。機能・仕様や各社のスプレッド、手数料、レバレッジなどは変更される場合があるため、口座開設や運用の前に必ず公式サイトで最新情報をご確認ください。
この記事が役に立ったら、ぜひシェアしてください。