ファンダメンタルデータを連続で取得する(その3:完結編)

Pocket

今回は、TradeStationの標準のファンダメンタルデータ取得のインジケーターを改変してファンダメンタルデータを連続で取得できるアプリケーションの作成の続きです。(その3)
※今回のプログラムは、TradeStationの標準インジケーターのソースコードを改変したものです。


残りのコードを掲載します。

コードを説明します。

行数 内容
1 タイマーの時間経過時のイベントの開始です。この関数ですべての銘柄のデータを取得済であれば終了処理、終わっていない場合は次のデータのロードを開始します。
2 関数の開始を表します。
3 ステータスがロード開始状態にあるか判定しています。
4 if文の開始を表します。
5 ロード位置を参照して、取得対象銘柄数の数以上になっていれば全体のロード終了と判断します。
6 if文の開始を表します。
7 取得したデータを書き出す関数を呼び出します。
8 ラベルを取得完了メッセージに変更します。
9 初期化処理を呼び出します。タイマーを止めるためです。
10 ボタンのキャプションを”ロード”に戻します。
11~13 ifのthenの終了とelseの開始を表します。
14 ステータスをロード中に変更します。
15 次に取得する銘柄コードを設定します。
16 ラベルに次に取得する銘柄コードを表示します。
17 ファンダメンタルデータのロードを開始します。
18~21 elseとifと関数の終わりと空行です。
22 タイマーや配列を初期化する関数です。
23~24 関数の開始とコメントです。
25 タイマーを止めます。
26 念の為、タイマーを無効化します。
27~28 空行とコメントです。
29 グローバル配列(辞書)が初期化済か判定します。
30 辞書型のオブジェクトを初期化します。プリミティブ(コラム参照)なもの以外は”new”しないと使えません。
31 ファンダメンタルデータを入れるグローバルな辞書型配列を初期化します。
32~33 空行とコメントです。
34 グローバル配列(辞書)が初期化済か判定します。
35 辞書型のオブジェクトを初期化します。
36 ステータスを格納するグローバルな辞書型配列を初期化します。
37 データ取得位置をゼロで初期化します。
38 ステータスをロード前に設定します。
39 グローバル配列が初期化済か判定します。
40 配列を初期化します。Vectorもプリミティブではありません。
41 ファンダメンタルデータ取得対象銘柄を入れるグローバルな配列を初期化します。
42~43 関数の終了と空行です。
44 取得したファンダメンタルデータを書き出す関数です。
45 関数の中だけで使うローカル変数の定義です。
46 関数の開始を表します。
47 出力ファイルを開きます。第2引数を指定していないので、同じファイルが存在していた場合は破棄されます。
48 保存されているファンダメンタルデータ分だけループさせます。
49 ループの開始を表します。
50 銘柄コード(辞書のキー項目)を設定します。
51 辞書データを取得します。グローバル変数である”FundamentalInfo”は辞書の中に辞書が入っています。
52 ファイルに書き込む文字列を銘柄コードで初期化します。
53 銘柄ごとに格納されているファンダメンタルデータ分だけループさせます。このソースでは1つの項目しか取得しませんが、複数の項目の取得にも対応させてあります。
54 ループの開始を表します。
55 各ファンダメンタルデータのキーとなる文字列(ここでは”CR_OP”)を取得します。
56 キー文字列をデータをコロンで繋げて格納します。
57 ループの終了を表します。
58 ファイルに1行分書き込みます。
59 ループの終了を表します。
60 出力ファイルを閉じます。
61~62 関数の終わりと空行です。
63 ファンダメンタル取得オブジェクトのステータスに変化があった時に発生するイベントを処理する関数です。
64 関数の開始を表します。
65 エラーの発生を判定しています。ここでは文字列で判定してしまっていますが、クラスに定義されている列挙型を使って数値で判定するのが普通です。
66 if文の開始を表します。
67 エラーが発生するまでに取得できていたデータをファイルに書き出します。
68 初期化処理を呼び出してタイマーを止めます。
69 エラーの発生を表示します。
70 ボタンのキャプションを戻します。
71~73 if文と関数の終わりと空行です。
74~176 ファンダメンタルデータを取得する関数ですが、ファンダメンタルデータを取得するインジケーターを解析するで説明しているので割愛します。ここでは1つの関数にまとめています。
177 フォームを表示します。
COLUMN 変数の型について
EasyLanguageにおける変数の型について説明しておきます。プリミティブな型というのは、言語に組み込まれている原始的な型で、intとかdoubleとかstringとかがそれにあたります。一方、プリミティブでない型は言語のクラスライブラリとして提供されているもので、VectorとかDictionaryとかがそれにあたります。intの定義は、”int i”でいきなり使うことができますが、Vectorは”Vector i”しただけではクラスオブジェクトは生成されていないので使うことはできません。”new”を使ってそのクラスの実体を生成する必要があります。プリミティブな型は限られているので、それ以外はすべて”new”する必要があります。

今回までに紹介したアプリケーションはここからダウンロードできます。

コメントを残す

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