FC2ブログ
非時系列
最初
http://blog-imgs-36.fc2.com/a/m/a/amamiyaprog/RenkoAshi1.txt

修正1
http://blog-imgs-36.fc2.com/a/m/a/amamiyaprog/RenkoAshi2.txt

修正2

# 練行足 練り足 Renko Ashi Neri Ashi
# 引数 値幅 値 ($PriceRange, \@Price)
# 戻り値 hash {'high'} {'low'} (%renko)
sub RENKO{
my ($PriceRange, $Price) = @_;
my %renko = ();
my @PriceRangeHigh = ();
my @PriceRangeLow = ();
my $Reverse = $PriceRange * 2;
my $Up = 1;
my $Down = 1;
my $Check = 0;
my $Number = 0;
my $count = @$Price - 1;

# 値幅と配列数の確認
if(($PriceRange <= 0) || ($count < 0)){
return 0;
}

# 計算
my $TempHigh = int($$Price[$count] / $PriceRange) * $PriceRange;
my $TempLow = $TempHigh;
for(my $i = $count; $i >= 0; $i--){
if($Up == 1){
if(($TempHigh - $Reverse) >= $$Price[$i]){
# トレンドの変化 陰転
$TempHigh = $TempHigh - $PriceRange;
$TempLow = (int($$Price[$i] / $PriceRange) * $PriceRange);
# 同値でないならば、値幅を足す
$TempLow = $TempLow + $PriceRange if($TempLow < $$Price[$i]);
# Flag
$Up = 0;
$Down = 1;
$Check = 1;
}else {
# 高値更新
if(($TempHigh + $PriceRange) <= $$Price[$i]){
$TempLow = $TempHigh;
$TempHigh = (int($$Price[$i] / $PriceRange) * $PriceRange);
# Flag
$Check = 1;
}
}
}else {
if($Down == 1){
if(($TempLow + $Reverse) <= $$Price[$i]){
# トレンドの変化 陽転
$TempLow = $TempLow + $PriceRange;
$TempHigh = (int($$Price[$i] / $PriceRange) * $PriceRange);
# Flag
$Up = 1;
$Down = 0;
$Check = 1;
}else {
# 安値更新
if(($TempLow - $PriceRange) >= $$Price[$i]){
$TempHigh = $TempLow;
$TempLow = (int($$Price[$i] / $PriceRange) * $PriceRange);
# 同値でないならば、値幅を足す
$TempLow = $TempLow + $PriceRange if($TempLow < $$Price[$i]);
# Flag
$Check = 1;
}
}
}
}

# 非時系列
if($Check == 1){
# 値動きが値幅の2倍以上動いた場合
my $limit = ($TempHigh - $TempLow) / $PriceRange;
my $j = 0;

while($j < $limit){
if($Up == 1){
$PriceRangeHigh[$Number] = $TempLow + (($j + 1) * $PriceRange);
$PriceRangeLow[$Number] = $TempLow + ($j * $PriceRange);
}else {
if($Down == 1){
$PriceRangeHigh[$Number] = $TempHigh - ($j * $PriceRange);
$PriceRangeLow[$Number] = $TempHigh - (($j + 1) * $PriceRange);
}
}

$Number++;
$j++;
}

# Flag
$Check = 0;
}
}

# 先頭を最新にする
for(my $i = 0; $i < $Number; $i++){
# 練行足 練り足 Renko Adaptive Indicator
$renko{'high'}->[$i] = $PriceRangeHigh[$Number - ($i + 1)];
$renko{'low'}->[$i] = $PriceRangeLow[$Number - ($i + 1)];
}

return %renko;
}

時系列
最初
http://blog-imgs-36.fc2.com/a/m/a/amamiyaprog/RenkoAshi3.txt

修正1

# 練行足 練り足 Renko Adaptive Indicator
# 引数 値幅 値 ($PriceRange, \@Price)
# 戻り値 hash {'high'} {'low'} {'flag'} (%rai)
sub RAI{
my ($PriceRange, $Price) = @_;
my %rai = ();
my $Reverse = $PriceRange * 2;
my $Up = 1;
my $Down = 1;
my $count = @$Price - 1;

# 値幅と配列数の確認
if(($PriceRange <= 0) || ($count < 0)){
return 0;
}

# 計算
my $TempHigh = int($$Price[$count] / $PriceRange) * $PriceRange;
my $TempLow = $TempHigh;
for(my $i = $count; $i >= 0; $i--){
my $ReverseFalg = 0;

if($Up == 1){
$TempLow = $TempHigh - $PriceRange if(($TempHigh - $TempLow) != $PriceRange);
if(($TempHigh - $Reverse) >= $$Price[$i]){
# トレンドの変化 陰転
$TempHigh = $TempHigh - $PriceRange;
$TempLow = (int($$Price[$i] / $PriceRange) * $PriceRange);
# 同値でないならば、値幅を足す
$TempLow = $TempLow + $PriceRange if($TempLow < $$Price[$i]);
# Flag
$Up = 0;
$Down = 1;
$ReverseFalg = -1;
}else {
# 高値更新
if(($TempHigh + $PriceRange) <= $$Price[$i]){
$TempLow = $TempHigh;
$TempHigh = (int($$Price[$i] / $PriceRange) * $PriceRange);
}
}
}else {
if($Down == 1){
$TempHigh = $TempLow + $PriceRange if(($TempHigh - $TempLow) != $PriceRange);
if(($TempLow + $Reverse) <= $$Price[$i]){
# トレンドの変化 陽転
$TempLow = $TempLow + $PriceRange;
$TempHigh = (int($$Price[$i] / $PriceRange) * $PriceRange);
# Flag
$Up = 1;
$Down = 0;
$ReverseFalg = 1;
}else {
# 安値更新
if(($TempLow - $PriceRange) >= $$Price[$i]){
$TempHigh = $TempLow;
$TempLow = (int($$Price[$i] / $PriceRange) * $PriceRange);
# 同値でないならば、値幅を足す
$TempLow = $TempLow + $PriceRange if($TempLow < $$Price[$i]);
}
}
}
}

# 時系列
# 練行足 練り足 Renko Adaptive Indicator
$rai{'high'}->[$i] = $TempHigh;
$rai{'low'}->[$i] = $TempLow;
$rai{'flag'}->[$i] = $ReverseFalg;
}

return %rai;
}


参考URL
「Renko Adaptive Indicator」 時系列練行足 日本の伝統的チャートをアレンジ
時系列練行足(RAI:Renko Adaptive Indicator) 日本で古来から伝わる罫線分析手法「練行足」を基に考案されました。
チャートタイプで相場を推理 練行足・前編
チャートタイプで相場を推理 練行足・後編

メモ
時系列練行足の説明をよく見たら、作り方が間違っている。

追記 3/10
練行足の値が前後同値になるのを修正

追記 3/12
トレンドの転換前に練行足の値が遅れるのを修正

追記 3/12 2
時系列 値幅以上の動きをした場合に対応 まだ説明通りの形ではない

オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

Author:雨宮
Firefoxを使用しているので気づかなかったけど、IE6でソースコードを上手くコピーできない

5/3
携帯用ならIE6でもソースコードをコピーできる
携帯用

検索フォーム


あわせて読みたいブログパーツ
一寸先は闇 RSS