MT4 EA VS cTrader cBot ~プログラム作成視点から徹底比較~
MT4とcTraderを比較した記事は数多くあれど、自動売買プログラムを作るという視点で比較した記事を見たことがないような気がします。
そこで今回は「自動売買のプログラム作ってみたいんだけど、MT4とcTraderどっちでやればいいんだろう?」という人のために両者を比較してみたいと思います。
なお、あくまでajinoriの独断と偏見に基づいたものです。ご了承ください。
項目別比較
まずは簡単にEAとcBotの違いを表にしてみましょう。繰り返しますが、完全に独断と偏見です。こんな感じでしょうか。
項目 | MT4(EA) | cTrader(cBot) |
開発言語 | MQL | C# |
学習環境 | プログラミング言語としてマイナーだが、情報は比較的豊富 | C#自体はメジャーなので学習しやすいが、cBot作成となると情報が少ない |
開発環境 | 付属の環境がそこそこ充実しており、VSCodeの利用も可能 | 付属の環境は使いにくいが、VisualStudioによる開発が可能 |
外部リソース | mqlのライブラリは少ないが、インジケーター類は豊富 | パッケージは豊富だが、インジケーターの類は少ない |
プラグラムからのプラットフォームの操作性 | 専用言語だけあってさまざまな操作が可能 | APIでの操作。おおむね問題ないがもう一歩 |
開発のしやすさ | MQLの関数群は従来の手続き型中心の設計で使いにくい | APIはオブジェクト指向で作られてるため使いやすい |
もう少し細かくみていきましょう。
MT4 EA vs cTrader cBot 言語と学習環境は?
MT4では専用言語のMQLで開発を行います。MQLはプログラミング言語全体から見たら利用者は圧倒的に少ないですが、MT4自体がトレードプラットフォームとしてはほぼデファクトスタンダードのため、ネット上にも多数のサンプルや日本語リファレンスもあり、学習は進めやすいです。
懸念点としては今後MQL5へ移行していくことが予想されるため、MQL4をがっつり学んでもすぐに知識のアップデートが必要になってくるといったところでしょうか。(MQL4と5は意外に違いが多いです。)
cTraderのcBot開発で使われるC#は言語自体はメジャーで学習しやすいです。しかし、いざcBotを作るとなると日本語の情報やサンプルソースが少なく、少しハードルが高くなります。付属の開発環境の性能の低さも手伝って、ちょっとやってみようという段階で躓く人が多いのではないでしょうか。
たぶんcAlgo APIの日本語情報は、今のとこ当ブログが一番充実してると思います。(自画自賛)
-
-
cAlgo API リファレンス記事一覧
cAlgo API(cTrader Automate) 非公式日本語リファレンス cAlgo (cTrader Automate) の日本語リファレンス代わりになる記事を集めました。たぶん公式リファレ ...
続きを見る
将来性うんぬんを考えず、とりあえず初めてみるという場合はいまのところは圧倒的にMT4の方が始めやすいでしょう。
勝者 MT4 (EA)
MT4 EA vs cTrader cBot 開発環境は?
どちらも専用の開発環境が付属しています。MT4のMetaEditorは機能は充実しており、コーディングからデバッグまで一通りのことが大きな不便もなく行えます。
ただ、VisualStudioやEclipse, JetBrainsの開発環境など、メジャーな統合開発環境を普段使ってる方から見たらかなり見劣りすると思います。MQLという超マイナー言語に他の言語同様の環境を求めるのは無理があります。
なお、コーディングは外部のエディタも利用可能ですので、VSCode+MQL4 Syntax Highlight+MQL Extensionを使うことで少しは環境の改善が可能です。
反面、cBotはVisualStudioでの開発が可能です。というか、付属の開発環境が貧弱なのでVisualStudio必須です。付属の開発環境はオマケだと思ってください。
Visual Studioは無料で入手可能ですし、準備もさほど難しくもないため、cBot作るとなったらまず最初に設定すべきです。当ブログでも解説してます。
-
-
cAlgo(cTrader Automate)開発環境の設定 (公式ガイド準拠版)
cBotを作りたい! cTraderのデモ口座も作ってcTraderのインストールも終えました(まだの方はこちらへ) さあ、早速cBotを作ってみましょう!・・・と言いたいところですが、残念ながらcT ...
続きを見る
-
-
cAlgo (cTrader Automate) 開発環境の設定(Visual Studio2019版)
実はVisual Studio2019も使えます 開発環境の設定では公式ガイドにしたがって、Visual Studio2017を利用する方法を紹介しました。 でも実はVisual Studio2019 ...
続きを見る
ここは公式にVisual Studioで開発可能なcTraderに軍配が上がるでしょう。
勝者 cTrader (cBot)
MT4 EA vs cTrader cBot 利用できる外部リソースは?
どんなプログラムでもそうですが、1から全部自分で作ることなんてそうそうありません。偉大な先人たちが残してくれたリソースがあるならガンガン使わせてもらうべきです。(ライセンスは守ってね)
じゃあどんなリソースが使えるのかって話なんですが、MQLはプログラミング言語としてはマイナーなため、一般的にプログラミングに使えるリソース、つまりMQLで書かれたライブラリはそんなに多くありません。
もちろん他言語で開発されたDLLを読み込んで利用することはできるのですが、MQLで使える目的の機能をもったDLLを探すのはなかなか難しいです。
反面、C#はメジャー言語のためいろんなパッケージがとても豊富で、インストールも容易です。たとえばcBotからエクセルファイル操作したいってときもパッケージを導入すればほんの数行のコードで実現できてしまいます。
しかし!トレードプログラム作成専用と考えるなら話は別です。自動売買プログラムにとってはエクセルを操作するよりも各種インジケーターにアクセスできる方がよっぽど重要でしょう。
その点ではトレードプラットフォームとしてメジャーなMT4が圧倒的に有利です。
MT4には最初から入ってるインジケーターも多いですし、サードパーティ製インジケーターも充実しています。
cTraderもメジャーなインジケーターは完備されてるものの、数はそこまで多くありません。cTDNからはサードパーティ製インジケーターを多数ダウンロードできますが、さすがにMT4にはかないません。
ライブラリ(パッケージ)数ではcTrader、インジケーター数ではMT4といったところですが、いずれにせよメジャーなものは両者とも十分そろってると言えますのでここは引き分けとしておきましょう。
引き分け
MT4 EA vs cTrader cBot プログラムからのプラットフォームの操作は?
ここでは作成するプログラムからそれぞれMT4やcTraderを操作しやすいか、という点で比較してみます。
MQLは文句なし、やりたいことはだいたいできます。なにせそのために作られた専用言語ですからね。
cTraderはC#で設計されたAPIでcTrader本体にアクセスする形になりますが、まだちょっと貧弱な印象です。
例えば他のチャートの情報が取れなかったり、固定テキストの文字の大きさが変えられなかったり・・・かゆいところに手が届かないといった感じを受けます。
これはプラットフォーム自体の性能の違いも大きいです。MT4はさすがによく作り込まれていますよね。cTraderはこれからでしょう。少しずつ良くなっていくと信じてます。
勝者 MT4 (EA)
MT4 EA vs cTrader cBot 開発のしやすさは?
ここでは標準関数やAPIの使いやすさという観点で見てみます。MQLの標準関数とcTraderのAPIを見てみるとおおもとの設計思想が異なってるように思えてきます。
最近は基本的にオブジェクト指向という考え方で作られるプログラムが多く、C#は言語自体がオブジェクト指向の設計になってますので当然cTraderのcAlgo APIもオブジェクト指向で作られています。
MQLでもオブジェクト指向で作ることはできるのですが、もとはC言語ベースのためか、MQLで用意されてる関数群は従来の手続き型の考え方で作られています。
好みの問題もあるとは思いますが、おそらく最近のプログラミングにかかわったことのある人はオブジェクト指向の方が圧倒的にプログラムしやすいと思います。
はじめてプログラミングにチャレンジしてみるという人にも基本的にオブジェクト指向をおすすめします。
「MQLよりC#の方が難しい」という記事もみかけますが、最初はとっつきにくいというだけであり、クラスやオブジェクトの概念がわかってしまえばC#の方が直感的で簡単です。
むしろ複雑なことをしようとするとポインタとか意識しないといけないMQLの方がずっと難しいです。
(2022/4/10 追記) バックテストについて
ajinoriが補助ツール作成メインのためあまり気にしてなかったのですが、多くの方が興味あるのは自動売買プログラムでしょう。自動売買のEAやcBotを作成するのであればバックテストは必須です。
もちろんMT4、cTraderともにパラメータ最適化など基本的な機能は備えています。ただMT4の方が広く使われている分、サードパーティのライブラリが充実しています。たとえばウォークフォワード分析を行いたい場合は専用のライブラリが用意されています。
cTraderはそもそも専用ライブラリが少ない&アプリケーション自体が重たいということも災いし、MT4に比べるとバックテストがやりにくい環境と言わざるを得ません。スピードについては最近のアップデートで少し改善されたようですが、もう少し頑張って欲しいところです。
バックテストにおいてcTrader側のメリットとしてはマルチ通貨トレードのcBotでもバックテストができるということくらいでしょうか。(確かMT4ではできなかったはず・・・MT5では可能です。)
かなり個人的な意見が入りましたが、ここはcTrader勝利とさせていただきます。
勝者 cTrader (cBot)引き分け
で、どっちがおすすめなのか
ここまでで2勝2敗1引き分け2-3といい勝負ですね。かなり恣意的な結果な気もしますが。
で、自動売買プログラム作り始めてみたいって人には結局どっちがおすすめなのよ?と聞かれたら
・・・MT4・・・ですよね、やっぱり。
cTraderの提灯記事になるはずがなぜこんなことに。仕方ないんですよ、なによりもどメジャーという点でMT4が圧倒的に優れてるんです。
作ったプログラムを販売なり配布なりしたいなら、わざわざマイナーなcTraderを使う理由がないんです。
仮に自分で使うプログラムだけ作るにしてもブローカーの選択肢が増えますしね。
cTrader (cBot開発) から始めるべきなのはこんな人
ここで終わらせるわけにはいきません。それでもあえてMT4のEAではなくてcTraderのcBotから始めた方がいい人もいるんです。
1.cTrader口座を使うと決めていて、プログラムは自分専用に作る人
この状況であればcTraderのcBotがお勧めです。
難点となるプラットフォームの操作に関しては自動売買プログラムに限って言えばほぼ問題ありません。
また、取引補助ツールを作るにしても多少の工夫と妥協でどうにかなるレベルです。
C#は非常に学習しやすいですし、難点となるAPIの日本語情報は当ブログの情報だけでどうにかなるはずです。
なによりもオブジェクト指向で開発が圧倒的に進めやすい!
私は自動売買プログラムはまずプロトタイプをcBotで作り、完成してから必要ならEAに移植するという形をとっています。
それくらいcTraderの方が圧倒的にプログラミングが楽なんです。
2. プログラミング勉強の足掛かりにまず自動売買に挑戦する人
この場合もMT4のEAよりcTraderのcBotをお勧めします。というかMQLよりC#をお勧めします。
MQLはプログラミング言語としては超マイナーです。文法こそc++などメジャー言語に似てますが、Webにあふれるサンプルコードの性質を考えるとプログラムの作り方や考え方を学ぶには適しません。
対してC#は、言語自体の流行は去った感じはしますが、いまだにゲーム開発などの現場ではよく使われていますし、スマホアプリなどを開発することもできます。また、仮にC#自体を使わないにしても、オブジェクト指向の考え方などは他の言語に通ずるものがあります。
作成したcTrader用プログラムの販売はいまのところはあきらめてください。手はなくもないですが、労力のわりにリターンが少ないでしょう。
ブローカーは国内じゃないといやだ!という人は国内のMT4orMT5採用業者のリアル口座とcTrader採用ブローカーのデモ口座を用意しましょう。
勉強がすすめばcTraderの取引をリアルタイムでMT4やMT5にコピーすることくらいはできるようになります。
3. 超高速取引、もしくは板情報を利用するプログラムを作る人
これらの場合はMT4じゃ無理なのでcTraderを使いましょう。MT4はアプリケーション自体は軽いのですが、発注などが遅いんです。ミリ秒単位を争う取引には向きません。cTraderは逆にアプリケーション自体は重たいのですが、発注等はMT4に比べたらだいぶ早いです。
あとMT4では板情報は見れません。板情報を利用したいのであればcTraderを使いましょう。
まぁいずれもMT5であれば可能なんですけどね。でも、MT5じゃ結局ブローカーの選択肢は狭まりますので、それならプログラミングしやすいcTraderの方をおすすめします。
みんなcTraderのことも覚えておいて
まぁそんなこんなで、ほとんどの人にとってはMT4のEAから入る方がメリットが大きそうですし、実際MT4の方が圧倒的にメジャーなのは認めざるを得ない事実でしょう。
しかしですね、おそらく中にはMT4を使ってるうちに「え..これはどうなんだ?」といろいろ猜疑心とかもやもやとかがでてきちゃったりする人もいると思うんですよ。別にプログラミングのことに限らずね。
そんなときはcTraderという選択肢もちょっと思い出してあげてくださいな。そのもやもや、cTraderに乗り換えることで解決できるかもしれませんよ?