EasyLanguageではテキストファイルだけでなくExcelファイルの読み書きも可能です。
うまく連携する事で、Excelで日々管理している情報をトレステに取り込むようなプログラム開発が可能となります。
概要
本サンプルプログラムでは、以下の手順を行なっています。
(1) Excelファイル「ELT_OOELDict_Workbook.xlsx」をWorkbookクラスで連携
(2) Excelファイルにデータを書き込み(ヘッダ行1、データ行3)
(3) 再度Excelファイル「ELT_OOELDict_Workbook.xlsx」をWorkbookクラスで連携
(4) いくつかのセル情報を「行/列」で取得し印刷ログに表示
(5) 「損益」列の各数値を合計した結果を印刷ログに表示
チャートに挿入するインジケーターとして作成しているので、LastBarOnChartExを利用して「最新のチャート足(一番最近生成された足)」で実行されるプログラムとなっております。
注意点:Excelファイルは事前に作成を
Excelファイルの新規作成をEasyLanguageで行なうことはできません。事前に所定のファイルパスへExcelファイルを作成した状態にしておいてください。
また、StreamReader/Writerに比べると処理スピードは落ちるので、大量のデータを扱いたい場合はCSVファイル等での読み書きをオススメします。
EasyLanguageサンプルコード
インジケーターを新規作成して以下のコードを貼り付け、チャートに設定ください。
(※ 事前にCドライブ直下に「TradeStationFiles」フォルダを用意し、Excelファイル「ELT_OOELDict_Workbook.xlsx」を作成ください)
using elsystem; using elsystem.office.excel; // // 事前にCドライブ直下に「TradeStationFiles」フォルダを用意し、Excelファイル「ELT_OOELDict_Workbook.xlsx」を作成ください。 // ファイル場所を変えたい場合は、FILE_PATH内のパスを適宜変更ください。 // Consts: FILE_PATH( "C:\TradeStationFiles\ELT_OOELDict_Workbook.xlsx" ); Vars: Workbook WB( NULL ), int intNum( 0 ), double dblSumPL( 0 ); Once ( LastBarOnChartEx ) Begin //--------------------------------------- // Excelファイルの書き込み // - Excelファイルにヘッダー行とデータ3行を書き込みます。 //--------------------------------------- WB = Workbook.Create(); WB.FileName = FILE_PATH; WB.Visible = False; WB.SaveOnClose = True; WB.Load = True; // ヘッダ行 WB.Sheets[1].CellsAsString[1,1] = "銘柄コード"; WB.Sheets[1].CellsAsString[2,1] = "銘柄名"; WB.Sheets[1].CellsAsString[3,1] = "損益"; // データ WB.Sheets[1].CellsAsString[1,2] = "1111-TS"; WB.Sheets[1].CellsAsString[2,2] = "銘柄名その1"; WB.Sheets[1].CellsAsInt[3,2] = 5000; WB.Sheets[1].CellsAsString[1,3] = "2222-TS"; WB.Sheets[1].CellsAsString[2,3] = "銘柄名その2"; WB.Sheets[1].CellsAsInt[3,3] = -3000; WB.Sheets[1].CellsAsString[1,4] = "3333-TS"; WB.Sheets[1].CellsAsString[2,4] = "銘柄名その3"; WB.Sheets[1].CellsAsInt[3,4] = 10000; WB.Close(); print( "--> Excelファイル書き込み完了" ); print(); //--------------------------------------- // Excelファイルの読み込み // - Excelファイルを読み込み、セル情報を取得します。 //--------------------------------------- WB = Workbook.Create(); WB.FileName = FILE_PATH; WB.Visible = False; WB.SaveOnClose = True; WB.Load = True; // 行と列を指定してセル情報を取得 print( ELString.Format( "A列2行:{0}", WB.Sheets[1].CellsAsString[1,2] ) ); print( ELString.Format( "B列4行:{0}", WB.Sheets[1].CellsAsString[2,4] ) ); print( ELString.Format( "C列3行:{0}", WB.Sheets[1].CellsAsInt[3,3] ) ); // 「損益」列の数値を取得して合計値を表示 dblSumPL = 0; For intNum = 2 to 4 Begin dblSumPL += WB.Sheets[1].CellsAsDouble[3,intNum]; End; print( ELString.Format( "【損益合計】{0}円", dblSumPL ) ); WB.Close(); End; { ** Copyright © Trade Tech All Rights Reserved ** }
表示例
本クラスの使いどころ
普段様々な情報をExcelで管理されている方もいらっしゃると思います。
Excelファイルの場所(ファイルパス)さえ分かればで簡単に連携できますので、Workbookクラスの使い方をマスターすると様々なアイデアが生まれてくると思います。
ぜひ色々試してみてください。