EasyLanguage研究所

マネックス証券が提供する株式トレードツール「TradeStation」専用のプログラミング言語である、EasyLanguageについて。特にオブジェクト指向型EasyLanguage(OOEL)の情報を中心に。

複数の銘柄コードをEasyLanguageで扱う方法(2)シンボルリスト選択ダイアログの利用

前回の続き。前回は配列で直接定義することで、複数の銘柄コードを扱う方法をご紹介しました。

eltraders.hatenablog.com

今回は『シンボルリスト』選択ダイアログを利用する方法についてご紹介します。

方法2:『シンボルリスト』選択ダイアログを利用

トレードステーションには『シンボルリスト』という機能があり、銘柄コードをまとめてグループ化しておくことができます。標準で「TradeStation銘柄リスト」「マネックス銘柄リスト」などがいくつか用意されていますし、カスタムシンボルリストでは独自の銘柄コードグループを作成する事もできます。

で、レーダースクリーンなどでは、シンボルリストを選択することで登録されている銘柄コードを一括挿入されるような機能がありますが、この時表示される選択ダイアログをオブジェクト指向EasyLanguageでは扱う事が可能なんです。

↓コレ
f:id:eltraders:20170612164931p:plain

クラス名は「SymbolListDialog」です。名前空間「elsystem.windows.forms」内にあります。このクラスを使う事で、フォーム上でシンボルリストの選択ダイアログを表示し、選択された銘柄コードに対して何か処理を実行するようなアプリを作ることが可能になります。

以下例として、起動するとシンボルリスト選択ダイアログが表示され、選択すると印刷ログに選択したシンボルリスト内の全銘柄コードが出力されるEasyLanguageコードになります。

using elsystem;
using elsystem.windows.forms;

vars:
	SymbolListDialog sld(null);
	
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) 
begin
	sld = SymbolListDialog.Create();
	sld.StatusChanged += OnSymbolListUpdate;
	sld.show();
end;

method void OnSymbolListUpdate( elsystem.Object sender, elsystem.windows.forms.DialogStatusChangedEventArgs args )
begin
	For Value0 = 0 to sld.Count - 1 Begin
		Print( sld.Symbols[Value0] );
	End;
end;

SymbolListDialogクラスのStatusChangeイベントは、シンボルリストが選択してダイアログが閉じた時に発生するので、このイベントを拾ってやれば選択されているシンボルリストの銘柄コード一覧が取得できます。

メリット

  • ユーザーが自由に銘柄を選択できるアプリが作れる。
  • 「TradeStation銘柄リスト」や「マネックス銘柄リスト」など、事前に用意されているシンボルリストも扱う事が可能。
  • 「カスタムシンボルリスト」も扱えるので、アプリ専用のカスタムシンボルリストを用意して管理する事も可能。

デメリット

  • ダイアログ表示と選択が必要になるので、バッチ系など全処理を自動化させたい場合は不向き。

ユーザーが自由にシンボルリストを選べるようにするなら、他のトレーディングアプリでも利用されているこの選択ダイアログを使うのが一番よいかと思います。

ただ、自分だけが使う分析用アプリなどを作りたい場合は、アプリ専用に用意したカスタムシンボルリストだけを毎回利用するといった事もあるでしょう。この場合、毎回ダイアログが表示されて選択しなければいけないのは、ちょっと操作が面倒です・・。

パス指定してファイルを読み込む時のように、カスタムシンボル名を指定すれば自動で銘柄コード一覧が取得できる方法がないものか?色々調べてみたんですが、1つ方法があったので次回ご紹介します。