真の値幅の平均、ATRというものの実装 <株入門>

サクサク行きましょう。

そもそも、真の値幅の平均(ATR)って何?

ググる。
http://104m.jp/analysis/第4章 テクニカル分析実践-:atr/

「真の値幅」とは、「窓」が発生した場合も考慮した値幅のことです。
真の値幅 = 真の高値 - 真の安値
真の高値 = 当日の高値か、前日の終値のどちらか高い方
真の安値 = 当日の安値か、前日の終値のどちらか安い方

この真の値幅の移動平均がATRだそうです。

ATRは算出期間中の価格変動の大きさ(ボラティリティ)の目安ですので、ATRが大きいとボラティリティが大きいことを意味し、ATRが小さいとボラティリティが小さいことを意味します。

だそうです。
値が大きいほど、急な値動きってことは直感的に分かります。
ATRの3倍を手仕舞い目安として使う例が示されてます。

では、コードの方を見ます。
lib/indicator/average_true_range.rb
pricesは日付、始値、高値、安値、終値、出来高のマップの配列。
二日分のマップを順次取り出して、前日終値、当日高値、当日安値から、
真の値幅を計算し、新しい配列に順次詰めてゆきます。
これで、真の値幅の配列が出来、
配列から移動平均の配列を生成するようArrayは拡張されてますから、
最後にその機能を使って、真の値幅の移動平均の配列を返します。
 
順番に追ってゆけば、特別ひねったことはしていない。
強いて言えば、

prices.first[:close]

firstで2つのうち前を取り出し、それがマップなのでキーの終値を渡す。
という作業を非常にRubyらしく、省略して書いてるところ。
 
とか、

[previous_close, current_high].max

大小比較をするのに、要素2つの配列を作って、max,minのメソッドを利用。
(previous_close > current_high) ? previous_close : current_high
って、書くより短いかな。。
変数の名前が長いだけで、(c > h) ? c : h って変数にすれば短いよね。
毎回配列生成するより処理早い気もするが、
その方が書き方がキレイという判断なのだろう。
 
 
兎にも角にも、これでインジケータの実装は揃った。

 
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

社会・経済ニュース ブログランキングへ

にほんブログ村 海外生活ブログへ
にほんブログ村

カテゴリー: 株式投資, 株式投資入門はじめました2016.05 タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*