FC2ブログ

# ローソク足 酒田五法 小石崩れ Candle Stick
# 引数 始値 高値 安値 終値 (\@Open, \@High, \@Low, \@Close)
# 戻り値 小石崩れのフラグ (@CandleStick)
sub CANDLESTICK{
my ($Open, $High, $Low, $Close) = @_;
my @CandleStick = ();
my $Half = 0;
my $PriceRange = 0;
my $PrevPriceRange1 = 0;
my $PrevPriceRange2 = 0;
my $PrevPriceRange3 = 0;
my $PrevRealBody4 = 0;
my $PrevTrueRange4 = 0;
my $Flag = 0;
my $Count = @$Close - 7;

# 配列数の確認
if(($Count < 0) || (@$Close != @$Open) || (@$Close != @$High) || (@$Close != @$Low)){
return 0;
}

$PriceRange = abs($$Open[$Count + 1] - $$Close[$Count + 1]);
$PrevPriceRange1 = abs($$Open[$Count + 2] - $$Close[$Count + 2]);
$PrevPriceRange2 = abs($$Open[$Count + 3] - $$Close[$Count + 3]);
$PrevPriceRange3 = abs($$Open[$Count + 4] - $$Close[$Count + 4]);

# 計算
for(my $i = $Count; $i >= 0; $i--){
$PrevRealBody4 = $PrevPriceRange3; $PrevPriceRange3 = $PrevPriceRange2;
$PrevPriceRange2 = $PrevPriceRange1; $PrevPriceRange1 = $PriceRange;
$PriceRange = abs($$Open[$i] - $$Close[$i]);
$Flag = 0;

# 陰線
if($$Open[$i + 4] > $$Close[$i + 4]){
$PrevTrueRange4 = &iTR($i + 5, $Close, $High, $Low);
$Half = $PrevRealBody4 / 2;

# [-1] 小石崩れ
# 4日前 大陰線
# 4日前以後 ジリ安
$Flag = -1 if(($PrevTrueRange4 <= $PrevRealBody4) && ($Half >= $PrevPriceRange3) && (($$Open[$i + 3] < $$Low[$i + 4]) || ($$Close[$i + 3] < $$Low[$i + 4])) && ($Half >= $PrevPriceRange2) && (($$Open[$i + 2] < $$Low[$i + 4]) || ($$Close[$i + 2] < $$Low[$i + 4])) && ($Half >= $PrevPriceRange1) && (($$Open[$i + 1] < $$Low[$i + 4]) || ($$Close[$i + 1] < $$Low[$i + 4])) && ($Half >= $PriceRange) && (($$Open[$i] < $$Low[$i + 4]) || ($$Close[$i] < $$Low[$i + 4])));
}

# ローソク足 酒田五法 小石崩れ Candle Stick
$CandleStick[$i] = $Flag;
}

return @CandleStick;
}

# 真の値幅 トゥルー・レンジ True Range
# 引数 位置 終値 高値 安値 ($i, $Close, $High, $Low)
# 戻り値 真の値幅 ($tr)
sub iTR{
my ($i, $Close, $High, $Low) = @_;
my $tr = 0;

# 計算
my $h_l = $$High[$i] - $$Low[$i];
my $h_c = $$High[$i] - $$Close[$i + 1];
my $c_l = $$Close[$i + 1] - $$Low[$i];
my $max = 0;

$max = ($h_l > $h_c ? $h_l : $h_c);
$max = ($max > $c_l ? $max : $c_l);

# True Range
$tr = $max;

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

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

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

検索フォーム


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