Bitcoin 裁定取引と自動取引 abitra.netのブログ

Bitcoinの自動売買のあれこれ

rubyでボリンジャーバンドを計算

需要あるかどうかしらんけどrubyボリンジャーバンドの計算方法。
簡単に検索した限りだとrubyの計算は出てこなかったので。
ほぼ自分用メモとして。

pythonの場合だとNumpyで書けば np.std() で出来るっぽい。※実行していないので本当かどうかは分かりませんw
MT4だとiBands() で一発。

# Bollinger bandの計算

puts "ボリバン計算開始"

class Array
    def sum #合計
      reduce(:+)
    end
  
    def mean #平均
      sum.to_f / size
    end
  
    def var
      m = mean #分散
      reduce(0) { |a,b| a + (b - m) ** 2 } / (size - 1)
    end
  
    def sd #標準偏差
      Math.sqrt(var)
    end
end
# テストデータ
a = [101.537,
    101.571,
    101.637,
    101.632,
    101.622,
    101.623,
    101.61,
    101.554,
    101.548,
    101.532,
    101.551,
    101.561,
    101.572,
    101.57,
    101.588,
    101.581,
    101.584,
    101.574,
    101.583,
    101.568]
p a

heikin = a.mean
hensa = a.sd


puts (heikin + (hensa * 2)).round(3) #2σ
#=> 101.642
puts (heikin + (hensa * 1)).round(3) #1σ
#=> 101.611
puts (heikin + (hensa * -1)).round(3) #-1σ
#=> 101.549
puts (heikin + (hensa * -2)).round(3) #-2σ
#=> 101.518

書いててあれですがあってますよね?w