逆引きOOEL辞典オブジェクト指向EasyLanguageでよく使うクラスの解説とサンプルコードをまとめた(非公式)リファレンスオブジェクト指向EasyLanguageには様々なクラスが用意されていますが、たくさんありすぎて何ができるやら分からないというのが実状だと思います。そこで本記事ではオブジェクト指向EasyLanguageで利用可能なクラスの中から、特によく使うものや知っておくと役に立つクラスを中心にまとめてみました。グループに分けて整理してみたので、まだ使ったことのないクラスを発見できるかも。プロパティだけで利用されるクラスや列挙型などは基本除外していますが、特に説明しておきたいクラスはたまに追記しています。今後、各クラスについて詳細解説したサンプルコード付きの個別記事も順次アップしていく予定です。全クラスを網羅しているわけではないので、「このクラス忘れてるよ」などあれば本記事コメントやTwitterでこっそり教えてください。現在僕が運営しているTwitterアカウント(@eltraders)にて、日々様々なOOELクラスを紹介しており、それらをまとめたのが本記事になります。ハッシュタグ「#OOEL辞典」でつぶやいているので、興味のある方はぜひこちらもご覧ください。プロバイダー系クラスチャートの足情報、注文、ポジション、などトレステから様々な情報を取得できるクラスを、オブジェクト指向EasyLanguageでは「プロバイダー(Provider)」と呼んでいるようです。クラスの最後にProviderと付いているのがそれ。以下のようなプロバイダー系クラスが用意されています。銘柄に関する情報を取得PriceSeriesProviderチャート足の価格/出来高を取得できるクラス。銘柄/足種/期間を指定して利用します。別足種のデータを参照したり、OHLCVデータをファイルに出力したりなど、幅広い用途で使えます。PriceSeriesProviderクラスの解説とサンプルコードはこちらSymbolAttributesProvider銘柄に関する属性情報を取得できるクラス。銘柄名など銘柄固有の情報はここから取得可能です。プロパティがたくさんありますが、国内版トレステでは取得できない情報もあるので注意。逆に国内市場特有の情報(値幅制限や呼び値など)を取得できるプロパティもあるのですが、ヘルプに載っていなかったりするので注意。SymbolAttributesProviderクラスの解説とサンプルコードはこちらFundamentalQuotesProvider銘柄のファンダメンタル情報を取得できるクラスです。「EPS/PER/PBR/ROE/ROA」や「売上高などの決算情報」を取得可能となっています。リアルタイム情報を取得リアルタイムの動きを監視するプロバイダー系クラス。価格、歩み値、板情報などなど。これらの情報は、リアルタイムでの取得にも対応しており、日中データが更新されるたびに処理を行なうような事が可能ですが、取得頻度が高いクラスほど処理に時間が掛かったり、同時に利用できる銘柄数の上限などが存在するので、デイトレ・スキャルピング・高頻度取引などで活用したい場合はご注意ください。QuotesProviderクオート情報を取得できるクラス。レート情報(ASK/BID)をリアルタイムに取得できます。52週高値安値」などが取得可能。レーダースクリーンでリアルタイムの価格変動を監視したい場合等に使う事が多いです。QuotesProviderクラスの解説とサンプルコードはこちらTimeAndSalesProvider歩み値情報を取得できるクラスです。トレステ標準機能「タイム&セールス(歩み値)」で表示されるような内容が取得できます。(歩み値=何時何分何秒にどの価格で何株の約定があったか)TimeAndSalesProviderクラスの解説とサンプルコードはこちらMarketDepthProvider板情報を取得できるクラスです。トレステ標準機能「マトリクス(板情報)」で表示されるような内容が取得できます。同時に数十銘柄までしか監視できないようですが、板情報を元に自動発注するようなプログラムを作ったりもできます。現在利用しているトレステ口座に関する情報を取得できるプロバイダー系クラスです。注文やポジションなどの情報も取得できます。AccountsProvider口座情報を取得できるクラスです。トレステ標準機能「トレードマネージャー」の「口座」タブに表示されるような情報が取得可能。取得、などがよく使うかなと思います。OrdersProvider注文情報を取得できるクラスです。トレステ標準機能「トレードマネージャー」の「注文状況」タブに表示されるような情報が取得可能。情報が更新された時のイベントも用意されているので、新しい注文が発行されたり注文が約定するごとに処理するようなコードを記述する事も可能です。PositionsProviderポジション情報を取得できるクラスです。トレステ標準機能「トレードマネージャー」の「ポジション」タブに表示されるような情報が取得可能。こちらも更新時イベントが用意されているので、新しいポジションが増えた時などに処理するようなコードを記述できます。外部情報を取得ニュースやRSSなど、外部配信されている情報を取得できるクラスです。NewsProviderトレステ標準機能「ニュース」内で配信されているニュース情報を取得できるクラス。RSSProviderRSS情報を取得できるクラス。チャート描画ラインや図形をチャートに描画するクラスなどを。トレステのチャートはマウス操作でもラインや図形を描画できますが、オブジェクト指向EasyLanguageならプログラム上からこれらを描画できます。リアルタイムに移動するライン、変形する図形などを描画可能です。「描画ツール」から描画できる各ラインと同じものがプログラムから描画できます。HorizontalLine水平ラインを描画できるクラスです。HorizontalLineクラスの解説とサンプルコードはこちらVerticalLine垂直ラインを描画できるクラスです。VerticalLineクラスの解説とサンプルコードはこちらTrendLine始点と終点をつないだラインを描画できるクラスです。「トレンドライン」という名前ですがトレンドラインに限らず様々な用途で利用できます。「描画ツール」から描画できる各図形と同じものがプログラムから描画できます。足の価格を頂点に指定できるので、リアルタイムに右側へ伸びていくような図形描画も可能です。Rectangle長方形を描画できるクラスです。Rectangleクラスの解説とサンプルコードはこちらEllipse楕円を描画できるクラスです。テキストの描画チャート上にテキストを描画できるクラスも用意されています。TextLabelテキストを描画できるクラスです。足の位置に合わせて表示したり、チャートに固定して表示させたりもできます。座標に関するクラス単独利用するクラスではありませんが、チャート描画関連クラスで必ず登場するのが、座標に関するクラスです。「チャートのどの位置に描画するか?」という事。(ラインなら開始と終了の位置、図形なら各頂点の位置、など)EasyLanguageでは座標の指定方法として3つのクラスが用意されており、目的に応じて使いやすいものを選ぶことができます。チャートに合わせたラインや図形を描画する場合は、X軸を足の日時で指定できるDTPointや、足番号で指定できるBNPointを使うのが便利です。DTPointX軸をチャート足の日時、Y軸を価格で指定できる座標クラスです。BNPointX軸をチャート足の足番号、Y軸を価格で指定できる座標クラスです。XYPointXY軸をチャート上の絶対値で指定できる座標クラスです。チャートの固定位置に描画させたい場合などに利用します。TextLabelクラスのサンプルコードで、各クラスを利用しています。ドローイングオブジェクト管理クラス描画関連のクラスは、生成しただけではチャート上に反映されません。DrawingObjectsと呼ばれるクラスに追加する事で、チャート上に描画されるようになります。(DrawingObjectsは分析テクニック内蔵のクラスなので、名前空間を宣言するだけで使えます)DrawingObjectsプログラム上からチャートに登録する描画クラスを管理しているクラス。ここに描画クラスを追加する事でチャート上に描画されます。DrawingObjectDrawingObjects内に登録される描画クラスの型。すべての描画クラスはこのDrawingObjectクラスから継承されています。標準EasyLanguageでも変数の型(整数int、小数double、文字列string、真偽値bool)は存在しましたが、あまり意識しなくても良かったと思います。オブジェクト指向EasyLanguageにおいては、クラスも1つの”型”として扱われますし、型を正しく変換しなければいけないケースも増えてくるので、非常に重要となります。ここでは、オブジェクト指向で欠かせない「コレクション」と呼ばれるクラス型と、標準EasyLanguageで使える変数型を拡張したクラス型について紹介します。標準EasyLanguageの型を拡張したものがクラスとして用意されています。使うのはDateTimeとELStringでしょうか。ELString文字列型stringの拡張クラス。JoinやFormatなど直接呼び出せるメソッドをよく使います。Joinは指定した区切り文字で複数の文字を繋いでくれるため、CSVやタブ区切りの文字列生成に便利。複雑な文字列を作りたければFormatで。ELStringクラスの解説とサンプルコードはこちらELInt整数型intの拡張クラス。ELDouble小数型doubleの拡張クラス。ELBoolean真偽値型boolの拡張クラス。DateTime日時に関するクラス。オブジェクト指向EasyLanguageでは多くのクラスから日付情報を取得する際にDateTime型となる事が多いので、どういったプロパティがあるのか知っておくと便利です。Formatメソッドを使うと、DateTime型を任意の日付形式の文字列に変換できます。他のプログラミング言語でもよくあるやつです。21:45:32」といった形式の文字列で返してくれます。DateTime.Nowのように変数を使わず呼び出せるようなプロパティもあります。DateTime.Nowで現在日時をDateTime型で取得できるので、よく使いますね。標準EasyLanguageでも、BarDateTimeという予約語を使うと現在足の日時をDateTime型で返してくれるので、覚えておくと便利です。TimeSpan時間間隔に関するクラス。コレクション複数のデータを保持できるコレクション型も存在します。標準EasyLanguageでも「配列」が利用できますが、コレクション型を使うと配列だけでは難しい複数データの保持が可能です。他のプログラミング言語でもおなじみのVectorやDictionaryなどが用意されています。Vector要素を後から追加できるコレクション。配列と違って後からいくつでもデータを追加できるので、要素数が決まっていない時に便利。クラスのインタンスを追加できる点もポイントです。Vectorクラスの解説とサンプルコードはこちらDictionary「キー/値」のペアで要素を管理できるコレクション。銘柄をキーにして銘柄ごとの設定や情報を管理したりできます。Vectorと併せて多用するコレクションになるでしょう。Dictionaryクラスの解説とサンプルコードはこちらStackLIFO(後入れ先出し)方式で要素を管理できるコレクション。QueueFIFO(先入れ先出し)方式で要素を管理できるコレクション。ファイル入出力オブジェクト指向EasyLanguageでは、外部ファイルの入出力(読み書き)が可能です。テキストやCSV、Excelファイルなどと連携する事で、トレステでは取得できないようなデータを参照したり、トレステで取得した情報を外部に保存したりできるようになります。僕にとっては欠かせない機能です。これ出来なかったらEasyLanguageやってなかったかも。テキストファイルの入出力StreamReaderテキストファイルの読み込みを行なうクラスです。パスを指定して開き、WriteLineで1行ずつ書き込み。StreamWriterテキストファイルへの書き込みを行なうクラスです。こちらもパスを指定して読み込みます。EndOfStreamプロパティで「ファイルの最後まで読んだかどうか」を判定できるので、While構文で1行ずつ読み込んだりもできます。ちなみに「カスタムシンボルリスト」って実はテキストファイルです。Lists」フォルダの中にcsl形式で保管されています。Excelファイルの入出力WorkbookExcelファイルを読み書きできます。ファイルパスを指定して開けば、あとはシートとセルの位置を指定してセル内容を読み書きできます。<例>objWB.Sheets[1].CellsAsString[2,3]=>1シート目の2列3行にあるセル内容を取得&書込できる注意点として、当然ではありますがそもそも起動するトレステにExcelがインストールされていないと動きません。1つの注意点は、テキストファイルに比べると読み書きに時間が掛かる点です。高速な動作が求められるプログラムでは、ExcelでなくCSV形式などのテキストファイルで管理する方が良いです。アプリ間連携こちらも高度なプログラムを作成する上で欠かせない、「アプリ間連携」について。通常コード内の変数はそのプログラム内でしか使えませんが、今回紹介するクラスを利用すると別々のプログラム同士で値を共有できるようになります。別々のアプリやワークスペースでも値を共有できるので、例えば「レーダースクリーン上で発生したサインを保存し自作アプリ側で呼び出す」といった事もできます。前回のファイル入出力系と併せて、僕にとっては欠かせないクラスです。別々のプログラム同士で共有できます。クラスのインスタンスを格納できないので複雑なプログラムでは使いにくいです。GlobalDictionary「キー/値」の組み合わせで要素を共有できるクラスです。オブジェクトやコレクションも格納できるので、これが一番よく使います。銘柄コードをキーにして、銘柄ごとの様々な情報(発生サインや設定など)を様々なプログラムで共有するなど。GlobalValueやGlobalDictionaryは、値に変更があった際に発生する「イベント」が用意されています。これを利用する事で、別アプリ間での連携が可能になります。図にするとこんな感じ。プログラム1のコードではGlobalDictionaryなどに値を設定します。すると各種イベントが発生するので、プログラム2のコードにはイベント発生時の処理を記述。する事で共有データが更新されるごとに処理を行なえるという仕組みです。標準EasyLanguageでは「足が生成されるごとに」コードが実行されるのが基本でしたが、オブジェクト指向EasyLanguageでは「一定間隔ごとに」何か処理したい・・というケースもよくあります。そんな時に使えるクラスたちです。Timer一定間隔ごとにイベントを発生できるクラス。設定を「1秒」にすると、1秒ごとに「Elapsed」イベントというものが発生します。このイベントを自作プログラム側で捉える事で1秒ごとに実行するような処理を記述できるようになりますAlarmTimerは「●秒ごと」でしたが、Alarmは「この時刻になったら」イベントを発生させられます。時計のアラームのように、予め指定した時刻になったら実行したいような処理を記述できます。Alarmには「スヌーズ機能」が搭載されています。これも実際の時計のスムーズ機能のように、指定時刻に初めて起動して、その後は●分起きに実行を繰り返す・・といった処理も可能です。StopWatchこちらはその名の通り「ストップウォッチ」です。開始から停止までの経過時間を測定できます。処理objSW.Stop();といった感じで書けば、Start~Stopの合間の処理にどのくらい時間が掛かったのか?を計測できますStopWatchは開発時にも、「処理スピードが遅くなっている部分はどこか?」を探ったりする時に使ったりもしますね。(以下、追記中・・)以上になります。オブジェクト指向EasyLanguageにはほかにも様々なクラスが用意されていますが、今回は特によく使うものを中心に取り上げてみました。紹介しきれなかったクラスや、今回紹介した各クラスについて詳細に解説した記事についても、今後随時追加していく予定ですので、興味のある方は楽しみにしていてください!それでは。)トレードステーション専用プログラミング言語「EasyLanguage」をフル活用してトレード戦略やシステムの請負開発、レクチャーなどを行なっているプログラマー。EasyLanguageの学習や実践に役立つ情報を様々な形でお届けしています。TwitterでもEasyLanguageやトレステに関する最新情報や小ネタなどつぶやいていますのでぜひフォローください。EasylanguageインジケーターやレーダースクリーンなどのEasyLanguageコードが大量に公開されています、必見。eltraders.com。