[Perl] 為替レートや株価の4本値から移動平均を一気に計算する

Viewed: 09:59:28 in December 6, 2019

Posted: December 15, 2017
WordPressの記事をアーカイブ化したものです。

この記事を書いた人
「牧岡ふうふ堂」オーナー。博士(工学)。
酒都圏在住。
某地方の国立系工業大学でアシスタントをしていました。 専門は有機反応・金属錯体(主に希土類)・π共役系。
twitterアカウントは@makiokafufudo(お仕事用)、@ymakioka(個人用)です。

為替相場や株式相場のテクニカル分析法の一つに、移動平均を使うものがよく知られています。

エクセルなどで計算してもいいのですが、Perlなどのスクリプトで2日移動平均からデータが許す最長の移動平均まで一気に計算した方が、融通がきく場合もあるかと思います。

ここでは、Perlによる移動平均の計算方法を紹介します。

$movingaverage[n]に、n日移動平均が格納されます。

サブルーチンとする場合には、スクリプト中の指示に従って修正してください。” moving_average(1)”で呼び出します。

#!/usr/bin/perl

use CGI qw(:standard);
use strict;

#sub moving_average { #サブルーチンとする場合は、行頭の#を取る

#----- 使用する変数 ここから
my @movingaverage; #移動平均
my $data; #ファイルからの読み込みに使用
my @readdata; # $dataから日付や終値などを分割して格納
my $count = 0; #「何日移動平均」の「何日」
#----- 使用する変数 ここまで

#----- データを読み込みながら移動平均を計算 ここから
#為替データはタブ区切りテキスト”USD_JPY.txt”に保存されているとします。
#[日付] (tab) [始値] (tab) [高値] (tab) [安値] (tab) [終値] で1行を構成しているとします
# 1行目に最新の値、最終行に最古の値とします。

open IN, “USD_JPY.txt”;
while(<IN>) {
$count = ++ $count;
$data = $_;
chop $data;
@readdata = split(“\t”, $data);
#$readdata[0]: 日付
#$readdata[1]: 始値
#$readdata[2]: 高値
#$readdata[3]: 安値
#$readdata[4]: 終値
$movingaverage[$count] = $movingaverage[$count] + $readdata[4];
$movingaverage[$count + 1] = $movingaverage[$count];
$movingaverage[$count] = $movingaverage[$count] / $count;

}
close IN;
#----- データを読み込みながら移動平均を計算 ここまで

#return(@movingaverage); #サブルーチンとする場合は行頭の#を取る

#} #サブルーチンとする場合は行頭の#を取る

exit; #サブルーチンとする場合はこの行を除去

#1; #サブルーチンとする場合は行頭の#を取る

 

あわせてどうぞ

アーカイブ化したWordPress記事
よく読まれている記事をアーカイブ化しました。

[Perl] 移動平均の傾きを一気に計算する
ここでは、Perlで移動平均の傾きを計算する方法を紹介します。

算数の問題
「掛け算の順序ガー」な方々に解いていただきたい。

論文のX線結晶解析のデータを画像化する方法
やり方は色々あるのでしょうが、私はこれで。

25年ぶりの三原港
三原の市役所での用事を済ませた後に、近くの三原港辺りを散歩してきました。

ここのはうまい。尾道ラーメン@福山SA
帰省の途中によく食べてました。

アヲハタの株主総会は雰囲気がちょっと変わってる
最近は少し「ふつう」になりました。

峠の唐揚げがうまかった( ´▽`)
おすすめは唐揚げ定食とうどん定食。

Googleマップに事故機
当時は大騒ぎでした。

WiFiあっておすすめ・マーメイドカフェ 広島大学店
基本的にアンデルセン系は好きです。

雪降る前に大急ぎで「道の駅来夢とごうち」へ
安芸太田町の戸河内ICそばの「道の駅来夢とごうち」まで車で行ってきました。