FC2ブログ

# ローソク足 酒田五法 二本たくり星 Candle Stick
# 引数 始値 高値 安値 終値 (\@Open, \@High, \@Low, \@Close)
# 戻り値 二本たくり星のフラグ (@CandleStick)
sub CANDLESTICK{
my ($Open, $High, $Low, $Close) = @_;
my @CandleStick = ();
my $PrevRealBody1 = 0;
my $PrevRealBody2 = 0;
my $PrevUpperShadow1 = 0;
my $PrevUpperShadow2 = 0;
my $PrevLowerShadow1 = 0;
my $PrevLowerShadow2 = 0;
my $Tolerance = 0;
my $Flag = 0;
my $Count = @$Close - 3;

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

# 計算
for(my $i = $Count; $i >= 0; $i--){
$Flag = 0;

if($$Open[$i + 2] > $$Close[$i + 2]){
# 陰線
$PrevRealBody1 = $$Open[$Count + 1] - $$Close[$Count + 1];
$PrevRealBody2 = $$Open[$Count + 2] - $$Close[$Count + 2];
$PrevUpperShadow1 = $$High[$i + 1] - $$Open[$i + 1];
$PrevUpperShadow2 = $$High[$i + 2] - $$Open[$i + 2];
$PrevLowerShadow1 = $$Close[$i + 1] - $$Low[$i + 1];
$PrevLowerShadow2 = $$Close[$i + 2] - $$Low[$i + 2];
# 適当な誤差
$Tolerance = ($$High[$i + 2] - $$Low[$i + 2]) / 5;

# [-1] 二本たくり星
# 前々日 下ヒゲ陰線
# 前日 下ヒゲ陰線
# 当日 寄引同値
$Flag = -1 if((($PrevRealBody2 + $PrevUpperShadow2) < $PrevLowerShadow2) && ($$Open[$i + 1] > $$Close[$i + 1]) && (($PrevRealBody1 + $PrevUpperShadow1) < $PrevLowerShadow1) && (($$Low[$i + 2] - $Tolerance) <= $$Low[$i + 1]) && ($$Low[$i + 1] <= ($$Low[$i + 2] + $Tolerance)) && ($$Open[$i] == $$Close[$i]) && (($$Low[$i + 2] - $Tolerance) <= $$Low[$i]) && ($$Low[$i] <= ($$Low[$i + 2] + $Tolerance)));
}

# ローソク足 酒田五法 二本たくり星 Candle Stick
$CandleStick[$i] = $Flag;
}

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

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

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

検索フォーム


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