はじめに
EasyLanguageとはマネックス証券提供の株式取引ツールTradeStationで使われている独自言語です。
EasyLanguageを使って、TradeStationとエクセルの連携する方法をまとめました。
目次
・流れ
・Workbookクラス
・おまけ EasyLanguageのコンポーネントを使って楽をする
・発展
##流れ
- 読み込む(書き込む)Excelワークブックかスプレッドシートを用意します。
- TradeStationからEasyLanguage開発環境を開きます。
- 新規インジケーターを開きます。
- 作成したインジケーターをチャートに挿入します。
(TradeStationでEasyLangageのプログラムを利用するにはチャートやレーダースクリーンにインジケーターを挿入する必要があります。)
Workbook クラス
Workbookを使用すると、指定したExcelワークブックやスプレッドシートのセルに対する値を読み取って
TradeStation上で使用出来たり、TradeStation上の値を書き込んだりすることが可能になります。
###読み込み
読み込むExcelには日経平均先物売買高上位のABNアムロクリアの日経先物手口の日次データが入っています。
"日通し"(2~4列目,4行目)のデータを取得します。
using elsystem.office.excel;
Vars:
Workbook ElWbRead(NULL),
String iFileName1("C:\TradeStation\WbRead.xlsx"), //準備したエクセルの保存フォルダと、ファイル名
int cnt(0);
Once begin
ElWbRead = new Workbook;
ElWbRead.FileName = iFileName1;
ElWbRead.Load = true; //おまけで説明しています
ElWbRead.SaveOnClose = True;
End;
For cnt = 0 to 29 begin
Plot1[cnt]((ElWbRead.sheets[1].CellsAsInt[2,cnt+4]),"買い "); //2列目4行目の値を取得
Plot2[cnt](-(ElWbRead.sheets[1].CellsAsInt[3,cnt+4]),"売り ");
Plot3[cnt]((ElWbRead.sheets[1].CellsAsInt[4,cnt+4]),"差し引き ");
end;
日経平均先物の日足チャートに挿入してみました。
30営業日分しかデータを用意できなかったので、わかりにくいですね...
###書き込み
TradeStation上のチャートに表示されている4本値と出来高をExcelに書き込みます。
using elsystem.office.excel;
Vars:
Workbook ElWbWrite(NULL),
String iFileName2("C:\TradeStation\WbWrite.xlsx"),
int cnt(0);
Once begin
ElWbWrite = new Workbook;
ElWbWrite.FileName = iFileName2;
ElWbWrite.Load = true;
ElWbWrite.SaveOnClose = True;
End;
for cnt = 0 to 90 begin
ElWbWrite.sheets[1].CellsAsInt[1,cnt+2] = Date[cnt] ; //予約語 Date:足の日付を取得
ElWbWrite.sheets[1].CellsAsInt[2,cnt+2] = Open[cnt] ; //予約語 Open:足の始値を取得
ElWbWrite.sheets[1].CellsAsInt[3,cnt+2] = High[cnt] ; //予約語 High:足の高値を取得
ElWbWrite.sheets[1].CellsAsInt[4,cnt+2] = Low[cnt] ; //予約語 Low:足の安値を取得
ElWbWrite.sheets[1].CellsAsInt[5,cnt+2] = Close[cnt] ; //予約語 Close:足の終値を取得
ElWbWrite.sheets[1].CellsAsInt[6,cnt+2] = Volume[cnt] ; //予約語 Volume:足の出来高を取得
end;
日経平均先物の日足チャートに挿入してみました。
Excelはこうなりました。(EasyLanguage独特の日付表記で、「1191203」先頭の数字1が西暦2000を表しています。)
おまけ EasyLanguageのコンポーネントを使って楽をする
EasyLanguage でより簡単にオブジェクトの追加と使用ができるように、一部のオブジェクト クラスはコンポーネントとして設計されています。
オブジェクトを EasyLanguage ドキュメントへドラッグ & ドロップして特別なエディターを使用するだけで、コードを記述せずにオブジェクトのプロパティを変更できます。
コンポーネントオブジェクトが EasyLanguage ドキュメントに追加されると、プロパティエディターで各オブジェクトを使用できるように設定することができます。
あとは、予約語や関数を参照するように、各オブジェクトのプロパティとメソッドにアクセスする独自の EasyLanguage ステートメントを記述するだけです。
コンポーネントオブジェクトの挿入
- TradeStation開発環境の左側にある [ツールボックス] タブをクリックして [ツールボックス] パネルを開きます。
追加したいコンポーネントをクリックして現在のEasyLanguageドキュメントに追加します。
- 挿入すると、コンポーネントのアイコンがエディターウインドウの下にあるコンポーネントトレイに表示されます。
- TradeStation開発環境
の右側にある [プロパティ] タブをクリックして、[プロパティ] エディターを開きます。
このエディターでは、コンポーネント値、入力値、イベントを管理・変更できます。
<コンポーネントのプロパティ名と値>
名 前 | タ イ プ | 説 明 |
---|---|---|
ActiveSheet | integer | アクティブなワークシートのインデックス番号を取得または設定する |
FileName | string | コンピューター上の Excel(スプレッドシート)の パスおよびファイル名を指定する |
Load | boolean | 真の場合、リアルタイムでExcel(スプレッドシート)を更新する |
SaveOnClose | boolean | 真の場合、接続を閉じたときに Excel(スプレッドシート)に加えた変更を保存する |
Shared | boolean | 真の場合、複数のWorkbookオブジェクトで 1つのExcel(スプレッドシート)を共有する |
SheetCount | integer | ワークブック内のシート数を指定する |
Sheets [index] |
object | 使用可能なシートのインデックスに基づき Sheetを取得する |
Sheets [sSheetName] |
object | 指定したシート名文字列に基づき Sheetを取得する |
Visible | boolean | 真の場合は接続時にExcel(スプレッドシート)を表示する |
コンポーネントを使った場合のコードは下記の分だけで済みます。
読み込み
Vars:
int cnt(0);
For cnt = 0 to 29 begin
Plot1[cnt]((ElWbRead.sheets[1].CellsAsInt[2,cnt+4]),"買い ");
Plot2[cnt](-(ElWbRead.sheets[1].CellsAsInt[3,cnt+4]),"売り ");
Plot3[cnt]((ElWbRead.sheets[1].CellsAsInt[4,cnt+4]),"差し引き ");
end;
書き込み
Vars:
int cnt(0);
for cnt = 0 to 90 begin
ElWbWrite.sheets[1].CellsAsInt[1,cnt+2] = Date[cnt] ; //予約語 Date:足の日付を取得
ElWbWrite.sheets[1].CellsAsInt[2,cnt+2] = Open[cnt] ; //予約語 Open:足の始値を取得
ElWbWrite.sheets[1].CellsAsInt[3,cnt+2] = High[cnt] ; //予約語 High:足の高値を取得
ElWbWrite.sheets[1].CellsAsInt[4,cnt+2] = Low[cnt] ; //予約語 Low:足の安値を取得
ElWbWrite.sheets[1].CellsAsInt[5,cnt+2] = Close[cnt] ; //予約語 Close:足の終値を取得
ElWbWrite.sheets[1].CellsAsInt[6,cnt+2] = Volume[cnt] ; //予約語 Volume:足の出来高を取得
end;
発展
EasyLanguageでは、長期投資でも短期トレードでも使えるテクニカルデータやファンダメンタルズデータが
予約語としてそろえられています。
私が2年以上使ってきて足りないなと思ったのは浮動株数(比率)や投資部門別売買状況、先物の手口情報ぐらいです。(普通どこの証券会社のツールでも表示していませんが)
Workbookクラス(コンポーネント)を使えば、楽に、さまざまな情報をチャート上に表示したり、データを使って自動売買システムを作れます。
岡三RSSと連携させれば、TradeStationでは対応していない先物でも、自動売買することができるようになります。