「移動平均の方向」 を引き続き実装 <株入門>

ああ、トレード寄りの話出来る。

早速、
lib/indicator/moving_ average_ direction.rbを眺める。
あれ?

移動平均出てこないじゃん。
区間を+1して、その区間の最初と最後の終値を比べて、傾きを計る。
 
で、その解説がある。
前日の移動平均が a[0]+ a[1] + a[2] + … + a[n-1] /n
本日が a[1] + a[2] + a[3] + … + a[n] /n
この差分。本日-前日は a[n]-a[0] /n
傾きはプラスかマイナスかゼロか、なのでnで割るのは関係ない。
a[n]とa[0]つまり最後と最初の値を入手すればよい。

区間が0からnということはn+1の区間。だから+1してる。
 
 
それは分かったけど、一箇所だけまだ疑問が。
値を詰める場所あズレないかな。
lib/array.rbのmap_indicator(span)をもう一度確認。

indicator_array[index + span – 1] = yield span_array

とある。

区間が3とすると、
最初にデータが入るのは、0+3-1=2 つまりゼロから数えるから三番目に入る。
(indexが0のとき、最初のデータがarray[2]に格納される。)

で区間3でmoving_ average_ direction.rbでは、
indexが0のとき、最初の四日分のデータを取り出し、
0+(3+1)-1=3 array[3]に格納される。
ああ、狙った場所に収まってる。
 
当日の移動平均 – 前日の移動平均だから、
前日の移動平均が生成されないと、移動平均の方向は得られない。
だから、区間が3なら四日目からデータが埋まる。

大丈夫かどうか、ちょっと気になったが問題ない。
目出度い。これで安心だ。
 
 
坂本タクマ先生によると、これで、
単純に平均を出して計算するより8割り増しくらいの速度だそうだ、
まあデータ量が多いと馬鹿にならない。
Rubyじゃ特に遅いし、タダで早くやりたけりゃJavaかな。
Rubyより難しいとは思えない。まどろっこしいかもしれないが。
速度向上の為に、プログラム考えるのって、仕事じゃないんだから、
あまり精算的な作業とは思えないんだよなぁ。

ああ、プログラム寄りの話題ばかりだ。
で、移動平均の方向がトレンドを表すことは直感的に分かるけど、
これ、システムトレードでどう使うのか?

たぶんフィルターだと思う。
トレンドだけで、シグナル出すのはちょっと厳しいもの。
 
トレンドの反転をシグナルにするってのありかもしれないけど、
その為には「移動平均の方向」の前後を比べる必要があり、
かつ、直前がフラットならどんどん前に遡って比べんと。
もうひと工夫必要だ。

まあ、どう使われるのか、楽しみに読み進めよう。
 
 
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。

  
 

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

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

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

コメントを残す

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


*