夢が広がるオブジェクト指向EasyLanguage(OOEL)

TradeStationのEasyLanguageには、基本的な書き方以外に「オブジェクト指向EasyLanguage(OOEL)」というものが存在します。

”オブジェクト指向”は、他のプログラミング言語経験者なら馴染みのある概念だと思いますが、オブジェクト指向EasyLangaugeを使うと通常のEasyLanguageでは取得できないデータを扱えたり、自作のトレーディングアプリ開発なども可能になります。かなり、凄い。

こんな事が可能になる!オブジェクト指向EasyLanguage

トレーディングアプリを自作できる

TradeStationでは「トレーディングアプリ」という単位で様々な機能を備えたウィンドウを表示できます。チャートやホットリスト(ランキング)やニュースなどです。

オブジェクト指向EasyLanguageを使うと、こうしたトレーディングアプリを自分で作ることが可能です。フォーム画面をGUIで作成したり、イベントハンドラをキャッチしたりと、通常のEasyLanguageでは不可能な事が色々できます。

特に.NET Frameworkなどの開発環境やExcelVBAのフォーム作成などに慣れている方は、プロパティやイベントなども似ている(というかほぼ同じ?)なのですんなり理解できるんじゃないかなーと思います。

トレーディングアプリから注文を発行

EasyLanguage上から注文を発行できます。通常、売買注文を出すには、チャート分析ウィンドウを開いた状態でストラテジーを設定してリアルタイム自動売買を有効化する・・という設定が必要になりますが、オブジェクト指向EasyLanguageの注文機能を使う事で、例えば複数銘柄の中から条件を満たしたものだけ注文発行するようなトレーディングアプリなども作成できそうです。

(TradeStationに初期搭載されているトレーディングアプリ「マネックスアルゴ」も、まさにこの注文機能を使って作成されているようです)

ストラテジーのイベントをフック

イベントハンドラを使ってストラテジーの売買サインが表示される前後の状態をフックできるので、「エントリーの売買サイン表示前に取引数量を再計算する」「決済の売買サイン表示後に取引損益を取得する」などもできそうです。

標準のパフォーマンスレポートとは異なる形式でバックテスト結果を表示させたりする事もできそうですね。

Excelへの入出力

TradeStationで取得した情報をExcelに書き出したり、逆にExcelファイルのデータをTradeStationで取得したりできます。

これができると、様々な形式の取引データをExcel出力したり、Excelファイルの設定情報を元に自動売買を行なったり、なども出来そうですね。

ストラテジーのパラメータ最適化を自動化

これが一番「使える!」と感じた機能です。通常ストラテジーのパラメータ最適化を行なうには、チャート分析ウィンドウを開いてストラテジーを設定した状態で、ストラテジーの入力パラメータに「開始値/終了値/増分値」を設定すると思います。

オブジェクト指向EasyLanguageにおけるパラメータ最適化の自動化機能を利用すると、チャート分析ウィンドウを開かなくても「銘柄」「期間」「足種」「ストラテジー」「パラメータ」などを設定する事で、自動的にバックテストを実施してくれます。また手数料や1取引あたりの最大取引株数など、ストラテジーの設定ウィンドウで設定可能な事はすべてEasyLanguageで記述できてしまいます。

・・これはつまり、「ボタン1つクリックするだけで、あるストラテジーの数百銘柄におけるバックテストを全自動で計算してくれる」トレーディングアプリが開発できるという事です。実際に僕自身もこのようなトレーディングアプリを自作し、検証に利用しております。自作トレーディングアプリでは、開始ボタンをクリックして数時間放置するだけで、例えば「あるストラテジーが日経225銘柄のどれで最も良い結果を得られるのか?」をテストし、結果をExcelに書き出してくれています。めちゃくちゃ便利。

まとめ

どうでしょうか?オブジェクト指向EasyLanguage、けっこう夢が広がりますね!

オブジェクト指向EasyLanguageについては、まだまだ情報が少ないですし、マネックス証券に以前聞いた時も「オブジェクト指向EasyLanguageについては現状回答できない」と言われてしまったので、独自で色々と検証しております。

当ブログではこのオブジェクト指向EasyLanguageを中心に、色々と検証結果を発信していきますのでよろしくお願い致します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です