|
カテゴリ:「VB.NETで自動売買」入門
クリック証券Webサービスについての記事は今回を最終回にするつもりでしたが、今回は
準備も含めて長くなりますので、2回に分けて書きたいと思います。すみません。 前回の記事にgatさんからコメント頂いた事から、一覧形式でのデータをどう扱うかに ついて悩まれている方がいらっしゃる事が分かりました。 今回の内容が理解出来れば、恐らく他の全ての発注について応用可能だと思います。 保有株一覧の取得です。では早速始めます。 序盤の説明はログインボタンや余力確認ボタンと同様なので割愛させて頂きます。 Form3にボタンを追加後、Textプロパティを「保有株一覧取得」、Nameプロパティを 「HoyuKabuList」と変更した後でボタンをダブルクリックし、ソースコードを生成しました。 保有株一覧は余力情報のようにダイアログ表示するだけでは済まないのですが まず最初のステップとして、Webサービスの呼び出しの結果XMLがDataSetに格納すると どのような状態になるのか確認するために以下のソースコードを記述します。 '保有株一覧の取得 Dim res As WebResponse = HttpPost(baseUrl & "/ws/kabu/hoyukabuTategyokuList.do", "lst=1") '株式余力情報の取得結果をDataSetに取り込む Dim ds As New DataSet Using resStream As Stream = res.GetResponseStream() ds.ReadXml(resStream) End Using Console.WriteLine(ds.GetXml) 「クリック証券 Webサービス仕様書【株式取引編】- 第2.1.0版 -」 の39ページに記載されている通り、送信パラメータが1つ存在します。一覧指定「lst」です。 必要に応じて1、2、3のいずれかを指定して下さい。 今回は「保有株のみ」の1を設定しています。 記述出来たら一度実行してみて下さい。 保有株一覧取得の前に、ちゃんとログインして下さいね(笑)。 ボタンを押すと「出力」ウィンドウに文字列が表示されます。以下は私の保有株2つの例です。 <hoyukabuTategyokuListResponse> <responseStatus>OK</responseStatus> <message>保有株、信用建玉一覧の取得が完了しました。</message> <hoyukabuTategyokuList> <hoyukabuTategyokuItem> <shubetsu>1</shubetsu> <chumonKano>1</chumonKano> <baibai /> <shijo /> <koza>2</koza> <shinyo>0</shinyo> <suryo>300</suryo> <chumonSuryo>0</chumonSuryo> <tatebi /> <hensaiKijitsu /> <tanka>14</tanka> <shiharaiShokeihi /> <uketoriRisoku /> <tategyokuKey /> <meigara shokenCode="1844" /> </hoyukabuTategyokuItem> <hoyukabuTategyokuItem> <shubetsu>1</shubetsu> <chumonKano>1</chumonKano> <baibai /> <shijo /> <koza>2</koza> <shinyo>0</shinyo> <suryo>9</suryo> <chumonSuryo>0</chumonSuryo> <tatebi /> <hensaiKijitsu /> <tanka>81</tanka> <shiharaiShokeihi /> <uketoriRisoku /> <tategyokuKey /> <meigara shokenCode="2316" /> </hoyukabuTategyokuItem> </hoyukabuTategyokuList> </hoyukabuTategyokuListResponse> これはWebサービスの結果XMLを表示したものではなく、 「結果XML→DataSet→XML」と変換したものです。DataSetの中でどんなDataTableとして 保持されているかを確認する事が出来ます。 仕様書に書いている「応答メッセージの例」とは順番が異なっている事にお気付きでしょうか。 このデータはDataSetの中でどういう風に保持されているのでしょうか。 まず「hoyukabuTategyokuListResponse」という名前のDataTableが存在します。 列はresponseStatus」と「message」の2つで、中には1レコードが登録されています。 データは「OK」「保有株、信用建玉一覧の取得が完了しました。」です。 2テーブル目は「hoyukabuTategyokuItem」です。但し、中身はありません。 3テーブル目は「hoyukabuTategyokuItem」で「shubetsu」「chumonKano」など 沢山の列が定義されていて、2銘柄分となる2レコードが登録されています。 最後4テーブル目に「meigara」というテーブルがあり「shokenCode」という列のみ存在します。 データは2レコードです。 こんな具合に登録されているので、中身を確認する事無くDataSetからデータを取得しようと した時に混乱してしまいます。 でも内容が分かったのでもう安心ですよね? 2つ目のテーブルは何も入っていないので無視します。 1つ目のテーブルは結果ステータスとメッセージですので、画面に一覧を表示した後に メッセージをダイアログ表示するために使いましょう。 残るは「hoyukabuTategyokuItem」テーブルと「meigara」テーブルです。 2テーブルに分かれていたら見難いので、両方合わせて一覧に表示したいところです。 では画面に一覧形式のデータを表示するにはどうすれば良いでしょうか。 最もよく利用されているのは「DataGridView」です。 表形式で参照出来てデータ数が可変なので便利です。 では、画面にDataGridViewを追加します。ボタンなどのようにツールボックスからForm3に ドラッグ&ドロップして下さい。 DataGridViewの「Name」プロパティは「HoyuKabuGrid」に変更します。 Form3の大きさやボタンの配置など、見映えが良くなるようにレイアウトし直しましょう。 私はこんな風にしました。 ![]() HoyuKabuGridを選択した状態でプロパティ「Anchor」を四方全てにすると、 実行時にFormの大きさを変えたらHoyuKabuGridの大きさもそれに付いて変わってくれるので 便利です。設定しておきましょう。 ![]() DataGridViewはDataTableなどをバインド(紐付け)すると、DataTableで定義されている 列の情報をそのまま表示してくれるので便利ですが、今回は独自で設定した列に 手作業でデータを追加していきたいので、まだ列の設定がされていない空のHoyuKabuGridに 設定していきます。 HoyuKabuGridを選択し、右上角の小さい右向き黒三角のボタンをクリックして下さい。 ![]() 表示される「列の追加」ダイアログを使って列を追加していきますが、この記事では ・証券コード(shokenCode) ・取得単価(tanka) ・保有数量(suryo) の3つに留めておきます。必要に応じて追加して下さい。 日本語名称は「ヘッダーテキスト」に。ローマ字名は「名前」に。ユーザーが取得した データを変更する必要は無いので「読み取り専用」のチェックを付けて下さい。 あとのプロパティは変更しなくて結構です。 ![]() 3つの列が追加出来たら「閉じる」をクリックして下さい。 次に「列の編集」を行います。もし間違って変な列を追加してしまった場合もここで 削除出来ますのでご安心下さい。 ここでは、取得単価と保有数量は数値ですので、見映え良く右詰めで表示したいので プロパティを変更します。 取得単価を選択した状態で「DefaultCellStyle」の右にある小さなボタンをクリックして下さい。 ![]() するとCellStyleビルダが表示されるので「Alignment」の値を「MiddleRight」に変更します。 同様の作業を保有数量に対しても行います。 ![]() そして最後に、HoyuKabuGridに対してユーザーがデータを追加する事が出来ないようにします。 HoyuKabuGridを選択してプロパティ「AllowUserToAddRows」を「False」に変更します。 同様にして、プロパティ「RowHeadersVisible」も「False」に変更します。 一番左にある、いわゆる「レコードセレクタ」の列が非表示になります。 今回はデータの取得のみで行を選択する事は無いので不要でしょう。 ![]() これでHoyuKabuGridの準備は完了です! いよいよ取得結果をHoyuKabuGridに格納していく作業を実装します。 保有株一覧取得をダブルクリックするか、ソリューションエクスプローラから「コードの表示」を クリックしてソースコードを表示します。 先ほどDataSetの中身を確認するために入れた一番下の行はいらないので削除し、その下に コードを追加していく事になります。 ・・・さて今回はここまでです。 メインとなる部分をほったらかして次回に回してしまいますが、ここまで解説すれば あとは自分で実装出来る方も多いのでは無いかと思います。 とは言え最後はDataSetとDataGridViewの泥臭い作業ですのでちょっとややこしいです。 なるべく早く次の投稿をするつもりですが、時間と気力のある方は挑戦してみて下さい。 現在のソースコードは以下のようになっています。 ![]() ではでは。 お気に入りの記事を「いいね!」で応援しよう
Last updated
Jan 10, 2009 02:57:50 PM
コメント(0) | コメントを書く
[「VB.NETで自動売買」入門] カテゴリの最新記事
|