test3

//※ショウミーです。

//ぽぬさんブログを参考にしています。
//転換点をテキスト表示
//ショウミーで転換点を結んでいますが、転換点が確定した足で線を引く為、ズレています。

Using elsystem;
using elsystem.drawing;
using elsystem.drawingobjects;

Inputs : Int Length ( 10 ) [DisplayName="最高値,最安値を判定する期間"];
Vars : TextLabel TXL(null), //テキスト作成用関数
BNPoint PoBN (null), //テキストの位置指定関数
intrabarpersist string tenkan_text(""), //テキスト内容
Double ue1 ( 0 ), //直前の天の転換点の値
Double sita1 ( 0 ), //直前の底の転換点の値
Double Max_ue ( 0 ), //過去X日の最大値
Double Min_sita ( 0 ), //過去X日の最小値
Int tenkanten ( 0 ), //直前の転換点 1:天 0:底
Double tenkanten_atai( 0 ), //直前の転換点の値
Int bar_no_1 ( 0 ), //天の転換点のバーナンバー
Int bar_no_2 ( 0 ), //底の転換点のバーナンバー
Int TakaCount ( 0 ), //高値カウンター
Int YasuCount ( 0 ); //安値カウンター

//Once ClearPrintLog;   //デバッグ用(ログを削除)

//最初の足の設定
If CurrentBar = 1 then begin
ue1 = High;
sita1 = Low;
TakaCount = 0;
YasuCount = 0;
end;

//高値を更新したら、高値カウンターをプラス
If ue1 < High Then
TakaCount = TakaCount +1;

//安値を更新したら、安値カウンターをプラス
If sita1 > Low Then
YasuCount = YasuCount +1;

//過去X日の最大値、最小値を算出
Max_ue = Highest(High[1],Length);
Min_sita = Lowest(Low[1],Length);

//過去X日の最大値より今日の高値が大きい時、ue1に高値をセット、bar_no_1に足数をセット、転換点を天にセット
If Max_ue < High Then Begin
ue1 = High;
bar_no_1 = CurrentBar;
tenkanten = 1;

//過去X日の最小値より今日の安値が小さい時、sita1に安値をセット、bar_no_2に足数をセット、転換点を底にセット
end Else
If Min_sita > Low Then begin
sita1 = Low;
bar_no_2 = CurrentBar;
tenkanten = 0;
End;

//前日の転換点が天、今日の転換点が底の時、天の転換点が確定したとして、転換点の値をue1とする。また、ue1を天の転換点の足にテキスト表示する。
If tenkanten[1] = 1 AND tenkanten = 0 Then begin
tenkanten_atai = ue1;
tenkan_text = tenkanten_atai.ToString(); //転換点の価格を数値形式からテキスト形式にフォーマット変換する
PoBN = BNPoint.Create(bar_no_1+8,tenkanten_atai*1.01); //テキストを挿入する位置を指定
TXL = TextLabel.Create(PoBN,tenkan_text); //テキストの印字内容を指定(テキスト作成指示も含む)
TXL.Color = Color.FromName ("yellow"); //テキストの色を指定
TXL.Font = new Font("Microsoft Sans Sefif", 7.5, FontStyle.Regular); //テキストのフォントサイズ等を指定
DrawingObjects.Add(TXL); //テキスト描画実行
end;

//前日の転換点が底、今日の転換点が天の時、底の転換点が確定したとして、転換点の値をsita1とする。また、sita1を底の転換点の足にテキスト表示する。
If tenkanten[1] = 0 AND tenkanten = 1 Then begin
tenkanten_atai = sita1;
tenkan_text = tenkanten_atai.ToString(); //転換点の価格を数値形式からテキスト形式にフォーマット変換する
PoBN = BNPoint.Create(bar_no_2+8,tenkanten_atai*0.99); //テキストを挿入する位置を指定
TXL = TextLabel.Create(PoBN,tenkan_text); //テキスト作成コマンド
TXL.Color = Color.FromName ("yellow"); //テキストの色を指定
TXL.Font = new Font("Microsoft Sans Sefif", 7.5, FontStyle.Regular); //テキストのフォントサイズ等を指定
DrawingObjects.Add(TXL); //テキスト描画実行
end;

//Plot文(ショウミ-で転換点を結んでいく)
If tenkanten[1] <> tenkanten Then
Plot1(tenkanten_atai)
else
NoPlot(1);