「エクセル」を使って株価分析をしている方は多いと思います。
今のパソコンは性能が高いですし、エクセルで扱えるデーター数も飛躍的に多くなりました。
「数千件程度」の株価データーを扱うのなら、エクセルで十分でしょう。
使い慣れたエクセルを使って、サクサク株価分析を進めるのは楽しいものです。
ただし、扱うデーター数が「億」を超えると、表計算ソフトとして開発された「エクセル」では少々辛くなってきます。
ガマンしてエクセルでの分析を続けますか?
もっと良い方法は無いのでしょうか?
そこで出番なのが、「データベース管理システム」です。
大量のデーターを扱うことが得意なのは、やはり専用に設計された「データベース管理システム」となります。
このブログ記事では、「これまでデーターベースなんて使ったことない」といった方向けに、 Microsoft ACCESS と Excel を連携させて株価を分析する方法を紹介します。
Microsoft Office Access とは。
「ACCESS」はマイクロソフトオフィスの一員で、データーベースを管理するアプリケーションです。
オフィスは、パソコン購入時に標準で搭載されている事が一般的だと思いますが、オフィスのエディションによっては搭載されていない場合があります。
自分のパソコンに搭載されているオフィスが、アクセスを使用出来るエディションなのか確認するカンタンな方法は、ワードやエクセルを起動させてアカウント情報を見る事です。
画像の出所:マイクロソフトのサイト。 https://www.microsoft.com/ja-jp/office/homeuse/confirmation-office.aspx
1番右側のアイコンがアクセスのアイコンです。
このアイコンが表示されていれば、OK。
残念ながら表示されていない方は、追加で購入するしかありません。(だと思います。)
※「だと思います」と記載した理由は、下の記事を参照願います。
2019年6月28日現在、「アクセス2019」単体なら1万5千円程度で、販売していました。
しかし、購入するのにも注意が必要です!
最近のマイクロソフトオフィスのエディションは複雑で、家電量販店の販売員でもよく理解されていない方が、多くいらっしゃいました。
さらに、マイクロソフトのホームページを見ても分かりにくい・・・・
https://products.office.com/ja-jp/home
「どうすれば良いんじゃー!」と叫びたくなります。
そんな場合は、電話で聞くのが1番かも?
マイクロソフトサポートの電話番号はこちらです。
0120-54-2244
スポンサーリンク
「エクセル」と「アクセス」の役割分担
「エクセル」と「アクセス」では得意分野が異なります。
極端に例えるなら、
「エクセル」は計算や分析が得意。
「アクセス」は、大量のデーターを取り扱うのが得意。
多くの方になじみがあるのは「エクセル」でしょう。
私も「エクセル」は日常的に使っていますが、「アクセス」は使いこなしていると言うレベルに至っていません。
このブログ記事でも、「アクセス」はデーターを蓄積して、欲しい情報だけを「エクセル」に渡す便利なデータ格納庫、と言った位置づけで解説をします。
「アクセス」の機能を学びたい方には、物足りない内容になってしまうことをご理解ください。
分析対象のデーター
今回対象とするデーターは、「為替」「日経平均株価」「ニューヨーク証券取引所のDOW指数」です。
「売買(分析)するのは日本の株だから、為替やDOWなんて興味ないよ」
そう思う方も沢山いらっしゃると思います。
私の個人的な考えですが、「完全に単一銘柄の事情だけで、株価が推移する事は無い」と考えています。
より深く分析対象銘柄の値動きを分析する為には、関連する銘柄や、影響を与える指標等を含めた分析がとても大切です。
今回は例題として最適だと思う3銘柄を対象に、分析方法を解説します。
対象データ:「為替」「日経平均株価」「ニューヨーク証券取引所のDOW指数」
データの取得
データの取得方法は様々でしょう。
証券会社のトレードツールや、Yahoo!ファイナンス等のホームページから取得されている方も多いでしょう。
取得方法は、何でも結構です。
エクセルにデーターが書き込まれていればOK。
手書きで書いた株価データーをお持ちの方は、お手数でもエクセルに入力をお願いします。(*^_^*)
私は、マネックス証券が提供している「トレードステーション」から株価情報を取得しました。
その方法はこちらの記事で紹介していますが、エクセルにデーターが入力されていればOK。
トレステとエクセルを完全連携させて株価分析を効率化させる。[Easy Languageオブジェクト活用/ExcelWorkbookコンポーネント]
アクセスにデータを貼り付け
エクセルにデータが登録されていれば、コピーアンドペーストで、アクセスにデーターを貼り付けることが出来ます。
この方法は非常にカンタンですが、株価データーは毎日(毎秒)更新されるので、株価分析をするにはスマートな方法とは言えません。
ただし、手軽にデータ転送が出来るのは魅力なので、ご興味がある方は下のリンクからどうぞ。(外部サイトへのリンクです)
この手順を解説しているサイト様(外部サイト)はこちら。
このブログ記事で推奨するのは、「エクセル」のマクロで株価データーを「アクセス」に自動で登録する方法です。
「エクセル」のマクロで株価データーを「アクセス」に登録する
「エクセル」のマクロ(プログラム)で株価データーを「アクセス」に登録する手順を紹介します。
「えっマクロ?」「そんなの聞いていないよー」
「マクロ(プログラム)なんてムリ!!」
このような声が聞こえてきそうですが、マクロの機能は分からなくても、株価分析は進められるように配慮して解説しますので、ご安心ください。
用意したエクセルに登録されたデーターはこちらです。(為替データ登録部分の抜粋)
エクセルシートの「F列」と「G列」には、関数が登録されています。
「F列」にはその日のローソク足が陰線(始め値より終値が安い)だったのか、陽線(始め値より終値が高い)だったのか判定させる関数を登録。
「G列」には、当日を含む過去3日間の陰陽履歴をまとめる、数式を登録しています。
「エクセル」と「アクセス」の特徴
ここで、もう一度「エクセル」と「アクセス」の特徴についてお話をします。
皆さんおなじみのエクセルは、表計算ソフトとして生まれました。
年々機能が強化され、分析をしたり、ワープロ代わりに利用されたり、その用途は多様です。
セルに文字を入力すれば、自動で文字として認識し、数値を入力すれば数値として認識してくれる。
超絶便利で有名なアプリケーションです。
高校生に例えてみます。
◇エクセル君
数学が得意で足も速く、サッカー部のキャプテンでもある。
文化祭の企画では、持ち前の分析力や表現力で皆をリードするスーパースター。
気が利く反面、数値を文字として間違って認識するなど、おっちょこちょいな点もある。
◇アクセスさん
規律に従ってキッチリ仕事をこなす。生徒会副会長と図書委員も兼任しているスーパー女子高生。
図書室の大量の蔵書データーも完璧に管理している。
人間関係にも精通していて、「AさんとBさんの共通の友達は?」なんて質問にも即座に答えてくれる。
その反面、融通の利かないところがあり、後から「データーの形式を変えて欲しい」と言っても「それは出来ません!」と断られることもある。
非常に自由度が高い「エクセル」から、規律に厳しい「アクセス」にデーターを登録する際に注意することは、データー形式をキッチリそろえる事です。
「アクセス」の準備をする
エクセルからアクセスにデーターを転送する前に、アクセス側の準備をしましょう。
アクセスを初めて起動する方もいらっしゃるかも知れませんね。
アクセスを起動して、空のデーターベースを作成してください。
任意のファイル名を付けて結構です。
下の例では、ファイル名:StockDATA 保存場所:Cドライブ直下のTSlinkフォルダに保存しました。
このような画面が現れます。
始めて見る方は、ここからどうやって進んだら良いか分からないですよね。
画面左側に「テーブル1」と表示されています。
アクセスではデーターを格納する場所を「テーブル」と呼びます。
エクセルの「ワークシート」のイメージとして捉えてください。
テーブル名を変えてみましょう。
テーブル1が選択された状態で、画面左上の「表示アイコン」をクリックします。
始めに為替のデーターを登録するので、テーブル名は「USDJPY」にしました。
さて、ここからがエクセルと大きく異なる点です。
始めに登録するデーターの形式を決めておかなければ成りません。
まずフィールド名を登録します。(TSdate)
次にデータ型をプルダウンメニューから選びます。(数値型)
登録する元の、エクセルシートの為替Dateセルには数値が入っていますので、データー型を「数値型」に合わせる必要があります。
※もしエクセル側に日付型のデーターが入っていれば、「日付/時刻型」に合わせます。
下は登録する元データーのエクセルシートです。
A列からG列までのデーターをアクセスに登録します。
登録するすべてのフィールド名と、データー型の設定を済ませてください。
※下の例ではTimeのデーター型を数値型にしています。 これはエクセル側にローソク足の時間が数値型として入力されているためです。
主キーの設定
また新たな名称が出てきました。「主キー」とは何なのでしょうか?
テーブルには、他のデータと値が一致しない固有のデータが登録されている必要があります。
「ん?なに??」
よく分かりませんよね?
主キーを解説しているサイト様(外部サイト)はこちら。
https://dekiru.net/article/14888/
主キーを為替Dateに設定する方法は下の手順です。
初期設定では、IDに主キーが設定されていますので、あえて変更しなくてもOKです。
エクセルのマクロ作成
「エクセル」から「アクセス」にデータを自動で登録するマクロを作ります。
マクロ全体はこちら。
本来であれば、データー形式が異なった場合の回避など組み込むべきですが、できるだけシンプルにしました。
アクセスのバージョンによって、一部記載を変更する必要があります。
◇プロバイダとAccesssバージョン
- Microsoft.ACE.OLEDB.12.0(Access2007,Access2010)
- Microsoft.ACE.OLEDB.15.0(Access2013)
- Microsoft.ACE.OLEDB.16.0(Access2016)
出所:他サイト様 https://qiita.com/yaju/items/86314412741deb806366
必要であれば青で塗りつぶした部分を修正して下さい。
※下位バージョンをインストールしているPCで使用する場合は、下位バージョン用を適応してください。
テキストデータも用意しました。
マクロ ここから=====
Sub 為替データ登録()
Dim DelCmd As String ‘削除用SQLステートメント
Dim z As Long ‘最終行番号
Dim I As Long ‘ループカウンタ
Dim cn As Connection ‘Connectionオブジェクト
Dim rs As Recordset ‘Recordsetオブジェクト
‘データベースに接続
Set cn = New Connection
cn.ConnectionString = “Provider=Microsoft.ACE.OLEDB.16.0;” _
& “Data Source=C:\TSlink\StockDATA.accdb”
cn.Open
‘[USDJPY]テーブルから全レコードを削除
DelCmd = “DELETE * FROM USDJPY”
cn.Execute DelCmd
‘最終行番号を取得
If Range(“A11”).Value = “” Then
z = 0
Else
z = Range(“A11”).End(xlDown).Row
End If
‘[USDJPY]テーブルを編集可能な状態で開く
Set rs = New Recordset
rs.Open “USDJPY”, cn, adOpenKeyset, adLockOptimistic
‘レコードを追加
For I = 11 To z
rs.AddNew
rs!TSdate = Range(“A” & I).Value
rs!Time = Range(“B” & I).Value
rs!Open = Range(“C” & I).Value
rs!Close = Range(“D” & I).Value
rs!CloseマイナスOpen = Range(“E” & I).Value
rs!当日陰陽 = Range(“F” & I).Value
rs!陰陽パターン = Range(“G” & I).Value
rs.Update
Next
MsgBox “更新しました”
‘後処理
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
マクロ ここまで=====
マクロのコード中にコメントを入れていますので、参考にしてください。
データーベース接続部分は解説すると、ヒジョーに長くなるので、あえて省きました。
私も最初に「エクセル」と「アクセス」とのデーター連携にチャレンジしたときは、スッキリ理解が出来ませんでした。
その時にとった行動は「分からないコードは、おまじないだと思う」です。
出会った当初はわかり合えなくても、繰り返し会うことで理解が深まる仲もありますよね。
私もそうでした。
分からないまま使っているうちに、「ああなるほどね」このように理解出来る瞬間が現れます。
ご自分でコードの意味を調べる場合は、不明な部分をコピーしてグーグルで検索すれば、沢山答えが出てきますのでご安心ください。
参照設定
マクロが完成しましたので、早速実行したいですよね。
もう一つだけやることがあります。
「えーまだあるの~」
ご安心ください。最後のステップです。(*^_^*)
エクセルのVBAエディターをアクティブにしてください。
ツール ー 参照設定 と進みます。
Microsoft ActiveX DataObjects2.7 Library にチェックを入れてOKボタンを押します。
データ登録
さて、いよいよデーターを登録します。
エクセルのマクロを実行する前に、作成したアクセスを閉じてください。
作成したマクロ「為替データ登録」を実行します。
エラーが出なければ次のボタンが表示されて完了です。
アクセスを起動して、内容を確認しましょう。
ちゃんとデーターが登録されていました。
IDの数値はアクセスが自動で設定しますので、使用環境によって異なります。
データ登録2
今回用意したエクセルデーターには、為替の他に「日経平均株価」「ニューヨーク証券取引所のDOW指数」があります。
為替と同じシートに登録されています。
「日経平均株価」「ニューヨーク証券取引所のDOW指数」それぞれのデーターを登録するテーブルを作ります。
データーの形式は為替と合わせてありますので、アクセス側でやることはカンタン。
最初に作成したテーブル「USDJPY」を選択して、右クリック - コピー を選びます。
そのまま、貼り付けを選びます。
テーブル名を「NK」(日経平均株価)に変更します。
データーを貼り付ける必要はないので、「テーブル構造のみ」のラジオボタンにチェックを付けてOKボタンを押します。
同様に「DOW」(ニューヨーク証券取引所のDOW指数)テーブルも作ります。
アクセスに登録するマクロも、「日経平均株価」「ニューヨーク証券取引所のDOW指数」それぞれに作りましたが、為替データ登録マクロを一部変更するだけなので、超簡単です。
「日経平均株価」を登録するマクロはこちら。
「ニューヨーク証券取引所のDOW指数」を登録するマクロはこちら。
無事に3銘柄のデーターがアクセスに登録されました。
スポンサーリンク
アクセスでデーターを結合
ここまでの道のりが長くて「疲れたよ~」って方もいますよね。
でも、ここからがアクセス側での操作解説なんです。
カンタンなのでもうしばらくお付き合いください。
アクセスには、「為替」「日経平均株価」「ニューヨーク証券取引所のDOW指数」のデータが登録されています。
バラバラのデーターを結合させてみましょう。
結合する基準は「TSdate」ローソク足の日付データーです。
「えっ?それじゃ元のエクセルデーターと変わらないじゃん」そう思いましたか?
実はエクセルに登録されていたデーターは、日付がズレて登録されていたので,そのままでは株価分析がやりにくかったのです。
エクセルに取得されたデーターを見てみましょう。
A列に取得しているのは為替データの日付です。
K列に取得しているのが日経平均株価なので、休場の日はデーターが取得されていません。
U列に取得しているのがNYダウ平均なので、休場の日はデーターが取得されていません。
さらに注意点がもうひとつ。
日経平均株価の日付をよく見てください、2019年4月27日の次が2019年5月8日です。
2019年のゴールデンウィークは4月27日からのはず!
なぜでしょう?
L列のTimeを見てください。”559″となっています。
これはデーターを取得した、マネックス証券のトレードツール「トレードステーション Easy Language」の時刻の表現方法で、朝の5時59分を表しています。
チャートで、為替やNY取引所のデーターを合わせて表示させているため、ローソク足の終わりの時間が翌日の朝になっているのです。
このため、日経平均株価の日付が翌日になっています。
それでは、同じ期日で結合させましょう。
メニューから 作成 ー クエリデザイン に進みます。
すべてのテーブルを選択して、追加ボタンを押します。
下のように表示されたと思います。
データーを並べ替えます。
同じ日付で結合させたいので、日付の入っている「USDJPYのTSDate」を選択して、隣の「NKのTSDate」の上までドラッグ&ドロップします。
分かりますか?「USDJPYのTSDate」と、隣の「NKのTSDate」が細い線で結ばれています。
同様に「USDJPYのTSDate」を選択して、隣の「DOWのTSDate」の上までドラッグ&ドロップします。
表示させるデーターを選びます。
今回はすべてのデーターを表示させますので、画面下の「フィールド」をマウスでクリックしてアクティブにしてください。
「USDJPYの*」をダブルクリック。
フィールド部分に USDJPY.* が表示されていますね。
同じように、「NKの*」をダブルクリック。「DOWの*」をダブルクリックしてください。
これでデーターを結合する準備が出来ました。
画面左上メニューの「表示(データーシートビュー)」アイコンをクリックしてください。
すべてのデーターが表示されました。
これで完了としたいところですが、実はこの結合方法ですべてのデータを表示する事が出来ません。
画面左上の「表示(デザインビュー)」アイコンをクリックしてください。
「USDJPYのTSDate」と「NKのTSDate」を結ぶ線を選択して、線を太く表示させてください。
「結合プロパティ」を選択。
2を選択してOKボタンを押してください。
同様に「USDJPYのTSDate」と「DOWのTSDate」の「結合プロパティ」も変更します。
日本の市場もニューヨークの市場も休場日があるため、この「結合プロパティ」の変更をしないとすべてのデーターが表示されません。
この結合されたデーターをエクセルに戻す方法。
データーをコピーして、エクセルシートに貼り付けることが出来ます。
この他にも、エクセルのマクロを使ってデーターを取得する事も可能です。
マクロを使ったデータ取得方法は、後日紹介します。
お疲れ様でした。
まとめ
「これまでデーターベースなんて使ったことない」といった方向けに、 Microsoft ACCESS と Excel を連携させる方法を紹介しました。
自分では日常的に行っている作業ですが、手順を追って説明してみて分かったのが「手順が多くて面倒!」「分かりにくい!」と言うことでした。
まぁ、1度設定をしてしまえば後は自動で処理してくれるので、それほど面倒ではありませんけど・・・
面倒と感じる作業なので、実践している人は少ないでしょう。
株式投資は9割の人が損をしている世界です。
他の多くの人が行っていない分析作業を行えるとしたら?
他の投資家の一歩先に出る気持ちがあるのなら、取り組んで損は無いはずです。
今回の記事では実践的な株価分析方法に触れられませんでしたが、こちらの記事内で株価分析を継続して行っています。(記事内容は随時更新)
ご興味のある方は、どうぞご覧下さい。
初心者向け。株価予報をトレードステーションとエクセルで作る。[トレードステーションの使い方やEasy Languageも学べます][自動売買・システムトレード]
この記事を書いた人
ゆたかドットらいふ編集部
あしおゆたか
投資歴21年の個人投資家
机上の理論ではなく、実体験に基づいた記事作りをモットーにしています。
スポーツクラブに毎週2日~3日通い、サウナ後の暴飲暴食が趣味。
◇主な投資対象
日本株式
株式ETF(上場投資信託)
日経225先物
日経225先物オプション
◇運営者情報はこちら