MT4は機能が豊富でcTraderはプログラミングがスマート
cTraderのcAlgoでcBot(MT4で言うところのEA)を作成していて気になったことが7つあるので、メモしておきます。
まずは不満点から。
【Bad】データウィンドウがない
上記のような画面や機能はもしかしたらあるのかもしれませんが、見つけられませんでした。
自作したcBotの動作検証する際に、これがないとすごく不便です。「この足の高値はいくらだろう」とか、「MAのこの位置はいくらだろう」とかが定量的に把握できないので、目検に頼ることになります。
【Bad】バックテストしてもチャートにインジケーターが自動表示されない
インジケーターを読み込むcBotをバックテストしても、チャートにインジケーターが自動で表示されません。
上図は移動平均線を使ったサンプルcBotですが、ローソク足しか表示されません。
手動でインジケーターをセットすれば良いのですが、面倒です。
【Bad】MT4のグローバル変数に相当する仕組みがない
MT4を閉じても記憶し続けるグローバル変数はcAlgoにはないようです。cAlgoを閉じたら変数は全てリセットされます。これは辛いですね。自分でファイルに書き出しておくしかありません。
余談ですが、グローバル変数というネーミングは間違いなく失敗です(これはMT4の不満点)。意味が2種類ありますからね。説明し難いったらありゃしません。豊嶋氏もそう思ったのでしょう。彼は大域変数という言葉で表現していました。うまいですね。
【Bad】勝手にソースコードが整形される
良かれと思ってcAlgoに自動整形機能を搭載したのでしょうが、はっきり言って邪魔です。私には私の書き方があるんです!
こういうおせっかい機能は、ユーザ側でon/offを切り替えられるようにしておくべきです。
続いて良い点を挙げます。
【Good】チャート上の表示時間(GMTオフセット)を任意に変更できる
日本時間でチャートを見れて便利です。MT4にもぜひ実装してほしい機能です。
【Good】注文関係の関数がスマート
MT4のEAをcTraderのcBotに置き換える作業の全記録が実に分かりやすく説明してくれています。
この記事読むと、MT4の注文のコードというか仕様がダサいのがよく分かります。
それと、cAlgo Robots — Coding Basicsにも記載があるOnPositionOpened()やOnPositionClosed()といったトリガーは最高にクールですね。これは是非MT4にも実装してほしいです。
これらのトリガーがあるだけで、細かな機能の作り込みが本当に容易になります。OnBar()とOnTick()の2種類が用意されているというのも「開発者のことをよく分かってるな」って感じです。
【Good】オーダーの変遷が分かりやすい
オーダーの変遷(どの注文がいつオープンし、いつクローズしたか等)がMT4より分かりやすいです。好みの問題かもしれませんが。