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

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

エクセルなどで計算してもいいのですが、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; #サブルーチンとする場合は行頭の#を取る

 

キーワード: Perl; 移動平均; 為替レート; 株価; 為替市場; 株式市場; 先物市場; fx; ビットコイン

あわせてどうぞ

[Perl] 移動平均の傾きを一気に計算する

Comments are closed.