cTrader が5.1にUpdate!
cTraderのアップデートが来ました。前回のメジャーアップデートから久しぶりのアップデートです。
今回はすべてアルゴリズム(cBot、Indicator、Plugin) 開発用APIのアップデートのようです。
一般のcTraderユーザーからしたら5.1アップデートによりすぐに便利になる部分は特にありませんが、新機能に対応したcBotやインジケーターが出てきたときに問題なく使えるようにアップデートしておくことをお勧めします。
cTrader5.1の新機能
なお、ここで「アルゴリズム」といったらcBot, Indicator, Pluginの総称と思ってください。
ファイルダイアログ機能の追加
アルゴリズムからファイルダイアログを開いて、PC内のファイルを読み込むことができるようになりました。
var openFileDialog = new OpenFileDialog() {
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
Multiselect = true,
Title = "cTraderから呼び出したファイルダイアログ!"
};
var btn = new Button { Text = "ファイルを開く" };
btn.Click += args => openFileDialog.ShowDialog();
Chart.AddControl(btn);
設定ファイルを一括で読み込んだり、外部からトレードデータを読み込んだりといったあたりがユースケースになるでしょうか。
これまでもファイルを読み込むこと自体はできたのですが、ユーザーにパスを指定してもらうか、プログラム側でパスを生成するかしなければいけなくいろいろ面倒だったんですよね。
外部ファイルと手軽に読み込めるようになったことで、外からデータを取り込んで動かすようなアルゴリズムが作りやすくなりますね。
algo ファイルをアルゴリズムからインストール可能に
アルゴリズム内から別のアルゴリズムをインストール可能になりました。
やり方はこれだけ。
Uri uri = new Uri("https://<インジケーター配布先URL>");
var res = AlgoRegistry.Install(uri);
文字列でファイルパスを指定することもできますが、実際はURLからインストールすることの方が多いでしょう。
勝手にインストールされるの怖い!と思うかもしれませんが、さすがに最初はインストール前に確認画面が表示されるようになっているのでご安心ください。
内部で別のカスタムインジケーターを使うcBotなんかを一般公開用に作る場合はこの機能ありがたいですね。
利用するインジケーターがcTraderに入ってないと動かくなってしまうので、ユーザーにインストールを促したり、cBot内にインジケーターのロジックをそのまま持たせたりという必要がありました。
この機能により内部で利用するインジがインストールされてない場合はWeb上からインストールさせてからcBotを動かす、というような挙動が実現できるようになりました。
algoファイルをアルゴリズムからビルド可能に
algoファイルをアルゴリズム内からコンパイルできるようになったようです。
以下コードはcTrader公式Helpからの引用です。 (動作試してないです)
CompilationOptions options = new CompilationOptions
{
IncludeSourceCode = true,
OutputAlgoFilePath = @"C:\{preferred path}\NameOfAlgo.algo"
};
CompilationResult resultSync = Compiler.Compile(@"C:\{path to project}\NameOfCbot.csproj", options);
Print(resultSync.Succeeded);
あまりcBot等に組み込むような機能のイメージはないですが・・・
これはアルゴリズムのユーザーにはほぼ関係なく、開発者側に閉じた話ですかね。開発者が開発用プラグインを作ったりというのには役に立つかもしれません。
DropZoneコントロールの追加
プログラムでドラッグ&ドロップでファイルを受け取るコントロールを使えるようになりました。
プラグインで特定の拡張子のファイルをユーザーにD&Dで渡してもらって、ファイルを読み取ることができるようになります。
今回ファイルダイアログが追加されてますが、それだけでなくD&Dでもファイルを受け取ることができるようにもなってるというわけですね。
外部ファイル連携のプラグインが作りやすくなりそうです。
カラーピッカーコントロールの追加
待ってました!いつかは追加されるとは思ってましたが意外に早く来ましたね。
プログラムから色を選択しやすくなります。
拙作、Scribbler Pluginをお使いの方は現在「色をカラーコードで指定する」という不便を強いられてると思いますが、これが解消されます。
こうなります。
見慣れたcTraderの色選択ですね。これに切り替われば色を扱う系の各種プラグインが使いやすくなると思います。
プログレスバーコントロールの追加
プログレスバーが追加されました。
待ち時間が長い処理をやってるとき、これまでは(ajinoriのインジでは)チャート上にテキスト表示させたりしてましたが、これが不要になりますね。
こんな感じになります。
背景は黒半透明で固定のようなので実際はStackPanelなどに重ねて使うことになりそうです。
上が普通のプログレスバー、下は終了までの時間が未定の時に使うタイプのものです。
プラグインからファイルの関連付け
プラグインで扱う拡張子のファイルをcTraderに関連付けることができるようになりました。
例えば「.ctraderという拡張子のファイルをダブルクリックしたときにcTraderの自作プラグインで開かせる」みたいな挙動をプラグイン側から簡単に設定できちゃいます。
FileAssociations.Add(".ctrader");
FileAssociations.FileOpened += args => {
Print($"File opened: {args.FilePath}");
// ファイルに対する処理を記述
};
たったこれだけで、「特定のファイルをダブルクリックしたときにcTraderを開いてなんかする」というプラグインが作れちゃうんですね。
さすがに拡張子を関連付けするときは確認ウィンドウが出るようになっています。
過去の注文データが参照可能に
アルゴリズムのプロパティにHistoricalOrdersというものが用意され、過去の注文履歴を参照できるようになりました。
過去注文参照用のHIstoricaoOrderインターフェイスが追加されています。
これまでも現在有効な注文やトレード履歴であれば参照できたのですが、キャンセルしたり失効したりで約定しなかった注文を参照することはできませんでした。
注文履歴を直接参照できるようになったため、過去の注文傾向を調べたりといったことができるようになりました。
ポジションの取引データが参照可能に
PositionにDealsというプロパティが用意され、ポジションの取引履歴が参照できるようになりました。一つ一つの取引参照用にDealというインターフェイスが追加されています。
たとえば、最初に1ロット買って、それを(ポジション修正により) ボリューム2倍にしてそのあとドテンして、現在2ロットの売りポジションを持っていたとします。
今までは「これは2ロットの売りポジション」という情報しか取れなかったのですが、5.1からは「1ロット買い」「1ロット買い増し」「2ロットを反転」というそれぞれを一つ一つのDealとして参照できるようになりました。
これらに伴いPosition, PendingOrder 等にも関連するプロパティが追加されています。
アルゴリズムでできることが広がりました
主に外部との連携機能が強化された感じでしょうか。
今までもできなかったわけではないものの、面倒だった部分が簡単にできるようになったという感じがします。
どんどん使いやすくなっていくのはうれしいですね。