Web Lukes
📄

🎊 cTrader 5.4でPython cBotが書ける!ネイティブPythonサポート完全ガイド【Open APIとの違いも解説】

公開日: 2026/1/7

🎊 cTrader 5.4でPython cBotが書ける!ネイティブPythonサポート完全ガイド

ビッグニュース:cTraderでPythonが使える!

2024年末、cTrader 5.4がリリースされ、ネイティブPythonサポートが追加されました!

これまでcTraderでの自動売買といえば:

  • cAlgo(C#) → cTrader内で動くcBot
  • Open API → 外部からPythonなどで操作

という選択肢でした。

そこに新たに:

  • ネイティブPython cBot → cTrader内でPythonが動く!

という選択肢が加わったのです!🎉


Open API vs ネイティブPython:何が違う?

比較表

特徴Open APIネイティブPython cBot
動作場所外部(VPS、PC)cTrader内
cTrader必要?不要必要
認証OAuth2必要不要(ログイン済み)
セットアップ複雑簡単
対応OS全OSWindows/Mac
向いている用途サーバー運用、Web連携個人の自動売買
MQLからの移行やや難しい簡単!

どっちを選ぶべき?

ネイティブPython cBot がおすすめ:

  • 個人で自動売買したい
  • MQLからの移行を楽にしたい
  • サーバー管理は面倒
  • シンプルに始めたい

Open API がおすすめ:

  • VPSで24時間稼働させたい
  • Webアプリと連携したい
  • 複数口座を一元管理したい
  • cTraderを起動せず運用したい

環境構築:超簡単!

Step 1: cTrader 5.4以上をインストール

  1. cTrader公式サイト からダウンロード
  2. インストール後、対応ブローカーの口座でログイン

Step 2: Pythonの確認

cTrader 5.4以降にはPython環境が内蔵されています!

つまり、あなたのPCに別途Pythonをインストールする必要なしです。

(外部ライブラリを使いたい場合は別途設定が必要)


最初のPython cBotを作ろう

Step 1: Automateパネルを開く

  1. cTraderを開く
  2. 左下の「Automate」タブをクリック
  3. 「cBots」を選択

Step 2: 新規cBot作成

  1. 「New」ボタンをクリック
  2. 名前を入力(例:MyFirstPythonBot)
  3. Language: Python を選択 👈 ここが重要!
  4. 「Create」をクリック

Step 3: コードを書く

エディタが開いたら、以下のコードを入力:

Python
from ctrader_algo import *
class MyFirstPythonBot(Robot):
"""
私の最初のPython cBot!
起動時に「Hello World」と表示するだけのシンプルなボット
"""
def on_start(self):
"""cBot起動時に呼ばれる"""
self.print("🎉 Hello World! Python cBotが動いています!")
self.print(f"📊 現在の通貨ペア: {self.symbol.name}")
self.print(f"💰 口座残高: {self.account.balance}")
def on_tick(self):
"""ティック毎に呼ばれる(MQLのOnTick相当)"""
bid = self.symbol.bid
ask = self.symbol.ask
spread = (ask - bid) / self.symbol.pip_size
# 毎ティック表示すると大量になるのでコメントアウト
# self.print(f"Bid: {bid}, Ask: {ask}, Spread: {spread:.1f} pips")
def on_stop(self):
"""cBot停止時に呼ばれる"""
self.print("👋 cBotを停止しました")

Step 4: ビルド & 実行

  1. 「Build」ボタンをクリック
  2. エラーがなければ「▶️」(実行)をクリック
  3. チャートとアカウントを選択
  4. 「Start」!
Code
🎉 Hello World! Python cBotが動いています!
📊 現在の通貨ペア: EURUSD
💰 口座残高: 10000.0

おめでとう!最初のPython cBotが動きました!🎊


MQL経験者のための対応表

基本構造

MQLPython cBot
OnInit()on_start()
OnTick()on_tick()
OnDeinit()on_stop()
OnTimer()on_timer()
OnBar()on_bar()

価格・シンボル情報

MQLPython cBot
Bidself.symbol.bid
Askself.symbol.ask
Symbol()self.symbol.name
Digitsself.symbol.digits
Pointself.symbol.pip_size

口座情報

MQLPython cBot
AccountBalance()self.account.balance
AccountEquity()self.account.equity
AccountFreeMargin()self.account.free_margin

注文

MQLPython cBot
OrderSend(OP_BUY)self.execute_market_order()
OrderClose()position.close()
OrderModify()self.modify_position()

実践:移動平均線クロス戦略

MQLで定番の「ゴールデンクロス/デッドクロス」戦略をPythonで書いてみましょう。

Python
from ctrader_algo import *
class MACrossBot(Robot):
"""
移動平均線クロス戦略
- 短期MAが長期MAを上抜け → 買い
- 短期MAが長期MAを下抜け → 売り
"""
# パラメータ(MQLのextern/input相当)
fast_period = Parameter(10, min_value=1)
slow_period = Parameter(20, min_value=1)
volume = Parameter(0.01, min_value=0.01)
stop_loss_pips = Parameter(20.0)
take_profit_pips = Parameter(40.0)
def on_start(self):
"""初期化"""
self.print(f"🚀 MA Cross Bot 起動")
self.print(f" Fast MA: {self.fast_period}")
self.print(f" Slow MA: {self.slow_period}")
self.print(f" ロット: {self.volume}")
# 移動平均線インジケーターを作成
self.fast_ma = self.indicators.simple_moving_average(
self.bars.close_prices,
self.fast_period
)
self.slow_ma = self.indicators.simple_moving_average(
self.bars.close_prices,
self.slow_period
)
# 前回のクロス状態
self.previous_fast_above = None
def on_bar(self):
"""新しいバー(足)が確定したときに呼ばれる"""
# 現在のMA値
fast_current = self.fast_ma.result[-1]
slow_current = self.slow_ma.result[-1]
# 現在のクロス状態
fast_above = fast_current > slow_current
# 初回は状態を記録するだけ
if self.previous_fast_above is None:
self.previous_fast_above = fast_above
return
# クロス検出
if fast_above and not self.previous_fast_above:
# ゴールデンクロス!
self.print("📈 ゴールデンクロス検出!")
self.close_all_sells()
self.open_buy()
elif not fast_above and self.previous_fast_above:
# デッドクロス!
self.print("📉 デッドクロス検出!")
self.close_all_buys()
self.open_sell()
# 状態を更新
self.previous_fast_above = fast_above
def open_buy(self):
"""買いポジションを開く"""
if self.has_buy_position():
return
sl_price = self.symbol.bid - (self.stop_loss_pips * self.symbol.pip_size)
tp_price = self.symbol.ask + (self.take_profit_pips * self.symbol.pip_size)
result = self.execute_market_order(
trade_type=TradeType.BUY,
symbol_name=self.symbol.name,
volume=self.symbol.quantity_to_volume_in_units(self.volume),
label="MACross",
stop_loss_pips=self.stop_loss_pips,
take_profit_pips=self.take_profit_pips
)
if result.is_successful:
self.print(f"✅ 買い注文約定: {result.position.entry_price}")
else:
self.print(f"❌ 買い注文失敗: {result.error}")
def open_sell(self):
"""売りポジションを開く"""
if self.has_sell_position():
return
result = self.execute_market_order(
trade_type=TradeType.SELL,
symbol_name=self.symbol.name,
volume=self.symbol.quantity_to_volume_in_units(self.volume),
label="MACross",
stop_loss_pips=self.stop_loss_pips,
take_profit_pips=self.take_profit_pips
)
if result.is_successful:
self.print(f"✅ 売り注文約定: {result.position.entry_price}")
else:
self.print(f"❌ 売り注文失敗: {result.error}")
def has_buy_position(self):
"""買いポジションがあるか"""
for position in self.positions:
if position.label == "MACross" and position.trade_type == TradeType.BUY:
return True
return False
def has_sell_position(self):
"""売りポジションがあるか"""
for position in self.positions:
if position.label == "MACross" and position.trade_type == TradeType.SELL:
return True
return False
def close_all_buys(self):
"""買いポジションを全決済"""
for position in self.positions:
if position.label == "MACross" and position.trade_type == TradeType.BUY:
result = position.close()
self.print(f"🔻 買いポジション決済: {result.position.net_profit}")
def close_all_sells(self):
"""売りポジションを全決済"""
for position in self.positions:
if position.label == "MACross" and position.trade_type == TradeType.SELL:
result = position.close()
self.print(f"🔻 売りポジション決済: {result.position.net_profit}")
def on_stop(self):
"""停止時"""
self.print("👋 MA Cross Bot を停止しました")

Pythonインジケーターを作る

cBotだけでなく、インジケーターもPythonで作れます!

RSI with Zones インジケーター

Python
from ctrader_algo import *
class RSIWithZones(Indicator):
"""
RSIインジケーター(買われすぎ/売られすぎゾーン付き)
"""
# パラメータ
period = Parameter(14, min_value=1)
overbought = Parameter(70.0)
oversold = Parameter(30.0)
# 出力
rsi_line = Output("RSI", color=Colors.Blue, line_style=LineStyle.Solid)
overbought_line = Output("Overbought", color=Colors.Red, line_style=LineStyle.Dots)
oversold_line = Output("Oversold", color=Colors.Green, line_style=LineStyle.Dots)
def on_start(self):
"""初期化"""
self.rsi = self.indicators.relative_strength_index(
self.bars.close_prices,
self.period
)
def on_calculate(self, index):
"""各バーの計算"""
self.rsi_line[index] = self.rsi.result[index]
self.overbought_line[index] = self.overbought
self.oversold_line[index] = self.oversold

バックテストをしよう

ネイティブPython cBotの最大の利点の一つが、cTrader内蔵のバックテスト機能が使えること!

バックテスト手順

  1. Automateパネルで作成したcBotを選択
  2. 「Backtesting」タブをクリック
  3. 設定:
    • Symbol: テストする通貨ペア
    • Time Frame: 時間足
    • Period: テスト期間
    • Balance: 初期残高
  4. 「Start」をクリック!

バックテスト結果の見方

  • Net Profit: 純利益
  • Win Rate: 勝率
  • Profit Factor: プロフィットファクター
  • Max Drawdown: 最大ドローダウン
  • Sharpe Ratio: シャープレシオ

MQLのストラテジーテスターと同じ感覚で使えます!


外部ライブラリを使う

「pandas使いたい!」「scikit-learn使いたい!」という方へ。

方法1: cTrader内蔵Pythonに追加

cTraderのPython環境にpipでインストールできます。

Code
# cTraderのPython環境を確認
# 通常: C:\Users\{ユーザー名}\AppData\Local\cTrader\Python\

方法2: システムPythonを使う(上級者向け)

cTraderの設定で、システムにインストールされたPythonを使うこともできます。

⚠️ 注意: 外部ライブラリはバックテスト時に問題が起きる場合があります。まずは標準機能で試してみましょう。


Open APIとの連携も可能

「ネイティブcBotで完結しないケース」もあります:

  • Webダッシュボードからボットを制御したい
  • 外部サービス(TradingViewなど)と連携したい
  • クラウドでスケールしたい

そんな時は、ネイティブcBot + Open APIのハイブリッドも選択肢です。

Code
[TradingViewアラート]
↓
[Open API サーバー]
↓
[cTrader口座に発注]

トラブルシューティング

Q: 「Python not found」エラー

A: cTraderを最新版にアップデートしてください。5.4以降が必要です。

Q: コードが動かない

A: よくある原因:

  1. from ctrader_algo import * を忘れている
  2. クラス名がファイル名と一致していない
  3. インデントがおかしい(Pythonはインデント命!)

Q: バックテストが遅い

A: 対処法:

  1. テスト期間を短くする
  2. on_tick() から on_bar() に変更
  3. 不要なprint文を削除

MQL → Python cBot 移行チェックリスト

✅ cTrader 5.4以降をインストール ✅ 対応ブローカーでログイン ✅ Automateパネルで「Python」を選択 ✅ 基本構造を理解(on_start, on_tick, on_bar) ✅ 価格取得方法を覚える(self.symbol.bid など) ✅ 注文方法を覚える(execute_market_order など) ✅ バックテストで検証 ✅ デモ口座でフォワードテスト


まとめ:どっちを使う?

ネイティブPython cBot を選ぶべき人

  • 🎯 MQLから楽に移行したい
  • 🎯 バックテスト機能を使いたい
  • 🎯 シンプルにcTrader内で完結したい
  • 🎯 サーバー管理は避けたい

Open API を選ぶべき人

  • 🎯 24時間サーバーで運用したい
  • 🎯 Webアプリと連携したい
  • 🎯 cTraderを起動せず取引したい
  • 🎯 複数口座を一元管理したい

両方使いこなせると最強です! 💪


参考リンク


シリーズまとめ

このシリーズでは、cTraderとPythonで自動売買を始める方法を解説してきました:

  1. 入門編: Open APIの概要と環境構築
  2. 価格取得編: リアルタイム価格の取得
  3. 注文編: 注文の出し方完全ガイド
  4. ネイティブPython編: cTrader 5.4の新機能(この記事)

MQLを書けるあなたなら、きっとPythonでの自動売買もすぐにマスターできます!

新しいトレーディングの世界を楽しんでください! 🚀

🎁おすすめツール・サービス

FX自動売買VPSなら50%OFF

キャンペーンで月1,790円〜。MT4/MT5プリインストール済み、自動復旧機能付き。14日間無料お試し。

シンクラウドデスクトップ for FX
ゴトー日EAを探しているならソースコード付

4年で資金4.7倍のバックテスト実績。ソースコード付きで自由にカスタマイズ可能。

ゴトー日EA Ultimate版(3,980円)

※上記リンクにはプロモーション(広告)が含まれています

🔮
MEMBERSHIP

量子相場謀略|ホソノP

ブログでは書けない本音のトレード戦略とEA開発の裏側を公開。 データに基づいた検証で、再現性のある手法だけをお届けします。

✓EAソースコード公開
✓バックテスト生データ共有
✓リアルタイム相場分析
✓メンバー限定記事
メンバーシップに参加する※ noteアカウントで簡単登録

📚あわせて読みたい

📄

😤「MQLは書けるのにcTraderで自動売買できない!」そんなあなたへ贈る cTrader Open API × Python 入門ガイド

MQL経験者がcTrader Open APIとPythonで自動売買を始めるための完全入門ガイド。環境構築からアプリ登録、認証の仕組みまで丁寧に解説します。

trading2026/1/7
📄

🔥 cTrader Open APIで自動売買!Pythonで注文を出す完全ガイド【Market/Limit/SL/TP対応】

cTrader Open APIとPythonで実際に注文を出す方法を完全解説。成行注文、指値注文、SL/TP設定、ポジション決済まで、コピペで動くサンプルコード付き。

trading2026/1/7
📄

⚠️【非推奨】FIX API完全版①|2セッション構成→ Python cBotを使おう

【非推奨】FIX APIは17個のハマりポイントがあり初心者には推奨しません。代わりにPython cBotを使いましょう。この記事は参考資料として残しています。

trading2026/1/8
📄

🎯 cTrader Open APIでリアルタイム価格を取得!Python実践チュートリアル【コピペでOK】

cTrader Open APIとPythonでリアルタイムの為替レートを取得する方法を解説。シンボル一覧取得からティックデータの受信まで、実際に動くコードで学べます。

trading2026/1/7
💻

😤『cBot・MQL4・MQL5・Python、どれから始めればいいの!?』習得時間を徹底比較【実体験ベース】

自動売買を始めたいけど、cBot(C#/Python)・MQL4(MT4)・MQL5(MT5)・Python、どれを学ぶべき?プログラミング未経験者〜経験者別に習得時間の目安と効率的な学習順序を実体験ベースで解説。

プログラミング・開発2026/1/13
📄

🚨【結論】FIX APIは非推奨!Python cBotを使いましょう - 17個の地獄を経験した結論

FIX APIは17個のハマりポイントがあり非推奨です。cTrader 5.4以降のPython cBotなら1行で注文可能。FIX APIで813行書いた経験者が断言します。

fx2026/1/8