月別:2016年05月
ホームPage 1 / 11

時系列株価情報を取得するエクセルを作りました

 

株取引そのものは数年前から実践していたのですが、オンライトレードなるものを始めたのが半年前からです。

 

それまでとは違い、オンラインの特性を生かして、数日~数十日という割と短期での取引に転じました。で、日々のデータが必要となり、本日のお題につながるというわけです。

 

その前に、株取引での成績を語っておきましょうか。(ちょい自慢が入る)

 

最初の2か月こそ、マイナス、ゼロ、の出だしでした。

その後、経験を重ねコツをつかんできたことと、自前のエクセルによるデータ分析の合わせ技で、3か月目から収益はプラスとなり、4か月連続で上向き傾向を続けています。

 

もうそろそろ、これはまぐれではないだろう?と思い始めているところとなりますが、石橋をたたく悲しい性格ゆえ、6か月連続プラス収益までは安心しない、と心に決めている次第です。あと2か月!

 

これまでに68銘柄を実践しまして、当然ながら中には予測の逆を行くものもあり、マイナス収益となる残念な仕掛けもあります。

 

しかし、たくさん仕掛けることによって、トータルでプラス収益を出せるのだということが、だんだんと分かってきました。

 

なぜなら、収益が出る傾向を示している銘柄を仕掛けるわけですから、どんなに悪く見積もっても半数以上の銘柄がプラスを生むからです。

 

これまでのところ、投資した資金に対しての収益率は約6.4%/月ですので、まだまだ初心者レベルです。

つまりは、まだまだ伸びシロがあるということなので、さらなる分析エクセルの改良に心が燃えるところであります。

 

実用的なフリーウェアが世の中になかった。。。

 

そういうわけで、分析の精度を高めるために、株価の過去データを含めた値動きを見る必要が出てきました。

 

このために不可欠なのが、複数銘柄の、過去~現在までの日々の株価データです。

高額なお金を払ってコミュニティに参加したり、ソフトを買ったりすれば、これらは難なく手に入るに違いありません。

 

ですが、日々の株価データはYahoo!ファイナンス等に公開されているデータです。

それをわざわざ高額のお金を払ってまで欲しいとは思わないのが人の常。

 

というわけで、フリーのソフトを探しました。

割とすぐ見つかるのですが、使ってみると恐ろしいほどの時間がかかることが分かります。

 

たとえば、300銘柄の過去2年間の日々の株価データを取ってくるのに、6時間ぐらいかかってしまう有様で。。。フリーウェアですから仕方ないんですけれど。

 

また、いったん過去2年分のデータを蓄えた後は、追加日数分のデータだけ取得したいのに、このようなかゆいところに手の届く機能を備えたものが見つからないんですよね。

 

これでは、日々の監視を行うに際して、作業量が増えてしまいます。

銘柄も時々入れ替えたいので、その都度6時間を要していたららちがあきません。

 

もっと時間をかけて調べれば見つかったのかもしれませんが、調べるの飽きました。。。

 

そんなこんなで、

 

自分専用のカスタマイズツールを作っちゃえ!

 

といつものようにエクセル魂に火がついたってわけです。

出来具合はこんな感じで、

 

stockprice00

処理速度の結果も上出来。

・300銘柄の過去2年間の日々の株価データを取ってくるのに、約20分

・300銘柄の追加日数分のデータ取得に、約60秒

日々の作業はあっという間に処理が済むので、大大満足です。

 

当然、これらのデータをエクセルが自動で分析して、仕掛けに最適な銘柄だけをピックアップする機能も盛り込んであります。

 

あとは経験して学んだことを分析のロジックに入れて進化させていくだけ。

 

ここに、このツールを縮退したデータ取得だけ行うツールを添付しておきますね。

 

 

縮退版とは言いますが、これだけでも結構な優れものです。

株価の時系列データをエクセルに取り込めるのはもちろんのこと、

 

株価の値動き変動を表すグラフの銘柄を簡便に切り替えられたりも出来ちゃうので、グラフ見ているだけでも飽きません。(病気だな)

 

stockprice02

 

触って遊んでみてください!

 

  • ゲーム

何年か前に数独を解くエクセルを作りました。

 

こんな感じです。

左側のマスに問題を記入すると、右側の解答マスに解答が現れるというお遊びエクセルです。sudoku0

 

今回アップするに際して、あらためてネットで調べてみたところ、数独を解法するソフトやサイトやエクセルがたくさん見つかりました。

 

いまさら感は否めないのですが、自分としては気に入っている仕上がりとなっているために、公開することにしました。

動かしてみると面白いので暇つぶしにでも遊んで見てください。

 

ただし、残念なことに、このエクセルはまだ完全ではないのです(>▽<)

ほとんどの数独を解くことが出来るようにはなっているのですが、解けないパターンが少なからず存在したりします。

 

そのようなパターンを私自身が解くことが出来ないために、それを数式化できていないという単純な理由です。

(数独の解法解説を読んでも、いまだに理解できていない部分だ。。。)

 

ネットの中を探ってその方法を数式化する手もあるわけですが、自分の楽しみのためにエクセル化しているという目的から、ここはあくまでも自力で解決することに価値を置きたいと思うところです。

 

というわけで、追加の数式は将来の楽しみとして取っておくことにしています。

 

数独解法エクセルはこちらからダウンロードできます。

エクセルを開くときに「マクロを有効」として下さい。

 

数独解法エクセルの構造は?

 

ちょっとだけ中身の解説をしてみますと、

 

・15行目以下が解法の数式箇所 となっており、

・横一列に4種類の表を用意して、

sudoku1

・同じ表が下の行にも複数用意され、

・下の表に進むにしたがって、ピンク色で示された答えの数字が順次得られ、

sudoku3

 

・全マスが埋まった表の場所を見つけて、

・上部の解答マスに結果を取り出す

 

という構成となっています。

要するに、人間が順を追って解いていくのと同じ手順を再現しています。

 

表を下にスクロールしていくに従って解いている過程が見えるようになっているところは、何か人間的な雰囲気を感じさせてくれます。

 

世の中に数多くの解法プログラムやサイトはあるものの、私は自分の作ったこの人間っぽい数独解法エクセルを愛してやみません。

 

もっとも、作ったことで満足してしまっているために、作成後はこのエクセルを使うことはなく、もっぱら紙の上での数独に取り組んでいるわけではありますが。

 

数式としては、

・当選確実で、その数字以外には当てはまらないものを見つける部分

=IF(B5>0,B5,IF(M16+V17+AH20=0,0,""))

・候補数字の中から一つだけ浮かび上がる数字を探す部分

=IF(M17<>"",M17,AvailableNumber(M17:U17,M17:M25,M17:O19))

 

とに分けられており、後者の候補数字の数式では、複数の候補数字を並べて表示するための定義関数「AvailableNumber」をVBAで作って処理させています。

 

たとえば、候補数字が2、3、9であれば、マスに239と3桁の数字を表示させる関数です。

以下にこの定義関数のVBAを掲載しておきます。

 

Function AvailableNumber(GyouCell As Range, RetuCell As Range, MasuCell As Range) As Long

Dim i As Integer '調べる数字
Dim j As Long    '存在できる数字を j とする。最大値が123,456,789となるのでLong型とする。

j = 0
i = 1

For i = 1 To 9  '調べる数字を1から9まで繰り返す

If Application.WorksheetFunction.CountIf(GyouCell, i) > 0 Or Application.WorksheetFunction.CountIf(RetuCell, i) > 0 Or Application.WorksheetFunction.CountIf(MasuCell, i) > 0 Then

      GoTo Skip   'iがあればNEXTに飛ぶ

Else

j = j * 10 + i    'iが無ければこのセルに存在できるのでjに代入する

End If

Skip:

Next

AvailableNumber = j   'セルの値に j を入力する。

End Function

 

本日は数独を解法するエクセルを掲載しました。

カテゴリー
タグ
ホームPage 1 / 11