FXCM Strategy Trader 印刷
投稿者:手賀   
2010年 7月 19日(月曜日) 00:54

現在 FXCM の Order2Go という COM API を使って FX のシステムを開発していますが、ちょうど開発に着手した先月末頃に、Strategy Trader(以下 ST と呼びます)という自動売買プラットフォームのベータ版を FXCM がリリースしたので、興味本位で空き時間に少しいじってみました。

ST は .NET ベースのプラットフォームで、インディケーターやストラテジ(ST では自動売買のロジックのことを Strategy Advisor と呼びます)のサンプルはすべて C# で記述されています。

なんと言っても C# で自動売買のロジックが開発が出来るとのことなので、かなり期待をしてベータプログラムに参加したのですが、結論から言うと若干(かなり?)肩すかしを食らった気分です。

一番の問題は、ST ではインディケーターやストラテジを、独自の Strategy Language Editor というエディタソフトウェアで編集し、その上で独自形式にコンパイルして利用するという仕様になっている点です。

このため、ストラテジの開発には Visual Studio が利用できないということになります。FXCM は Visual Studio を使って開発できると言っていますが、エディタで編集するとか、せいぜいデバッグすることが可能というレベルです。Visual Studio には優秀なアドオンがいくつもあるので、Visual Studio ともっとタイトに統合された形で開発できるようにしてくれないと、せっかく C# ベースで実装したのにその利点が半減してしまいます。

また、コンパイル後の独自形式が非常に厄介で、ST に登録されているインディケーターやストラテジは、一つの独自形式バイナリファイルの中にまとめて格納されます。そして、Strategy Language Editor 自体は、Visual Studio のように参照 .NET アセンブリを追加する機能を現時点では提供していないため、ユーザーはストラテジから既存の外部 .NET ライブラリを参照することすら出来ませんし、.NET アセンブリに対して処理を行う開発環境やツール類もまったく使えません。

ちなみに、ロードするプラグインのアセンブリを単一ファイルに格納するというのは、Customizing the .NET Framework Common Runtime Language という書籍のサンプルコードを流用して作られたものと思います。アプリケーションドメインマネージャなども、きっと、その書籍ほぼそのままの実装になっていることでしょう。多分、ST に関していえば、アセンブリ群を単一ファイルに格納しなければいけない必要性は特になかったような気がしますので、このような実装方法になっていることが非常に残念です。

ストラテジを C# で開発できることによる大きなメリットの一つは、C# の生産性や既存のライブラリを利用できる点にあると思いますが、現在の ST ではそうした利点が十分に生かされているとは言えません。EasyLanguage や MQL4 のような特定用途スクリプト言語と比べると、C# の言語機能自体はトレードに特化していない分使いにくい面もあるため、C# のその他のメリットを生かせないようでは正直あまり魅力を感じません。

なお、一つ気に入っている点を挙げるとすれば、FXCM から取得する過去のヒストリカルデータには、Bid と Ask 両方が含まれているので、若干精度の高いバックテストが可能になるということくらいでしょうか。バックテスト結果のレポートは詳細にいろいろな情報が表示されますが、TradeStation を使用したことのある方にはそれほど目新しいものではないと思います。

これは私見ですが、C# ベースの自動売買開発環境は、プログラマではない人にはおそらく難しくて十分に使いこなせないでしょう。その一方で ST は、プロのプログラマが使うにはいろいろと技術的な側面を隠蔽しすぎており、せっかくの .NET プラットフォームをフル活用できないという中途半端な出来映えであると言わざるを得ません。