PriceSeriesProvider(CSV出力編)

Pocket

今回は前回までにやったPriceSeriesProviderによる株価の取得と、ファイルの入出力のコードを組み合わせて、取得した株価をCSV形式で出力してみます。


code編で使ったソースコードをベースにします。以下のコードを貼り付けてください。

このコードはチャートに終値を描画させるためにPlot1に終値を渡しています。CSVに出力したいのは過去値なので過去値分ループさせる必要があります。値が何個あるのか確認してみましょう。最後の行でF9を押してブレークポイントを設定して実行します。(F5→銘柄選択)

コードが止まったところで、ウィンドウ下部を自動タブに切り替えてください。自動タブが表示されていない場合は、以下の操作を実行してください。

デバッグ(D) → ウィンドウ(W) → 自動(A)

デバッグ実行の失敗例

とりあえず過去値の数だけ確認したいのですが、出ましたでしょうか?上の画面は失敗例です。Countのところに…Exceptionsというメッセージが出ています。これは、PriceSeriesProvideオブジェクトの実行時に例外(Exception)が発生したという意味です。このまま実行を続けてもエラーも何も出ずに終わってチャートが描画できずに終わります。このあたり、TradeStationの不親切なところです。エラーメッセージが出ないので対策が立てられません。この状態はおそらくインジケータがTradeStationの中で有効になっていないためだと思われます。以下の操作をしてから再度実行してください。

挿入(I)(TradeStation側) → インジケーター(I)… → “$price_series_provider_csv”を選択してOK

再度実行(F5)すると、

デバッグ実行の成功例

Countのところの数値が243くらいになっていると思います。1年分の株価で営業日ベースだとそのくらいだと思います。この数をプログラムの中でベタ書きするわけではありませんが、値が1年分取れているか確認するためにデバッグ実行しました。

では、この243個の値をCSVファイルに出力していきます。ループさせるにはだいたいfor文を使うはずなのでヘルプでforで検索してみます。

for文のヘルプ確認

5番目にヒットしたのがfor文の説明のようです。下側に書いている構文が使えそうです。以下のようにコードを変更してください。コードの中ほどは変更ありませんが、ループカウンタの宣言が必要なのですべてのコードを掲載します。

CSVのファイルを出力するところに、文字列を整形するコードを入れています。日付や数値などを出力する場合は通常は型変換をする必要がありますが、このFormatメソッドを使用すると自動的に型変換してくれるので楽に書けます。ヘルプで”string”を検索してください。

stringクラスのヘルプ確認

4番目のELStringクラスの中ほどのFormatメソッドがそれにあたります。

終値以外の値も出力しているので、PriceSeriesProvideクラスも見ておきましょう。”PriceSeriesProvide”で検索して開くと、

PriceSeriesProvideクラスのヘルプ確認

Timeなどのプロパティがあるのがわかります。では実行してみてください。プログラムを変更した場合は分析テクニックを入れなおさないと正しく反映されません。それと、Cドライブの直下にTradeStationフォルダがない場合は作成しておいてください。

設定(O)(TradeStation側) → 分析テクニック(N)… → “$price_series_provider_csv”を選択して削除(R) → 閉じる(C) → 挿入(I) → インジケーター(I)… → “$price_series_provider_csv”を選択してOK

“7201.csv”というファイルができて日産の1年間の株価が保存されていると思います。今回のプログラムはここからダウンロードできます。

コメントを残す

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