X営業日前の日付を求める ruby スクリプト
ある銘柄の株価の移動平均を求めたい場合、期間を指定して株価データを取得することが多いです。この時、たとえば、25日分の株価データが欲しいなんて思った場合、単純に25日前の日付を求めるのではなく、営業日ベースで日付の計算をする必要があります。
この営業日の計算、なんか何度も同じことやってる気がするので、忘れないようにダイアリーにメモをしておきます。
準備
祝日判定ライブラリの holiday_japan をインストールします。株価情報を弄りたい人は JpStock もインストールしましょう。
gem install holiday_japan gem install jpstock
X営業日前の日付の計算
こんな感じで↓
require "holiday_japan" class Date def business_days_before(i) date = self i.times.each do |j| date -= 1 date -= 1 while (date.wday <= 0 || date.wday >= 6) or (date.national_holiday?) end date end end
東京電力の25日間の終値の平均
↑のコードを使ってこんな感じで↓
# -*- coding: utf-8 -*- require "jpstock" prices = JpStock.historical_prices(:code => "9501", :start_date => Date.today.business_days_before(24), :end_date => Date.today) average = prices.inject(0) {|sum, price| sum + price.close} / prices.size.to_f puts "東京電力の#{Date.today.business_days_before(24)}から#{Date.today}(#{prices.size}営業日間)の終値の平均 = #{average}" # => 東京電力の2013-08-07から2013-09-10(25営業日間)の終値の平均 = 560.96