s_czsc_high:ref(H,1);//前一K线处理完包含关系之后的高,初值暂定为前K高
s_czsc_low:ref(L,1);//前一K线处理完包含关系之后的低,初值暂定为前K低
s_direction:0;
s_status:0;
//包含
czsc_high:=0;//当前K线高点,初值暂定为前K高
czsc_low:=0; //当前K线低点,初值暂定为前K低
//分型
direction:=0; //当前K线方向
status:=0;
//分型
direction:=0; //当前K线方向
status:=0;
//当前K线状态(0.表示延续方向 1.表示K线转变方向)
If (s_czsc_high>0 or s_czsc_low>0)then begin //如果前高大于零或者前低大于零 IF1 //存在缠中说禅K线的
If ((s_czsc_high>High and s_czsc_low<Low) or (High>s_czsc_high and Low<s_czsc_low))then begin //是否存在包含关系IF2
If (s_direction>0)then begin //IF3 //依据上一根K线方向确定当前K线方向
direction=1;
status=0;
czsc_high=Max(s_czsc_high,High);
czsc_low=Max(s_czsc_low,Low);
end //对应IF3
//更新最高点和最低点
Else begin
if (s_direction<0)then begin//IF4
direction=-1;
status=0;
czsc_high=Min(s_czsc_high,High);
czsc_low=Min(s_czsc_low,Low);
end//对应IF4
end//对应IF2
///---------------上边暂时没问题了
Else begin //不存在包含关系
If (s_direction>0)then begin //IF5 //依据上一根K线方向确定当前K线方向
If (High<s_czsc_high)then begin //IF6 //是否发生转向
direction=-1; status=1;
czsc_high=High;
czsc_low=Low;
end//对应IF6
Else begin
direction=1;
status=0;
czsc_high=Max(s_czsc_high,High);
czsc_low=Max(s_czsc_low,Low);
end //对应F5
Else begin
If (s_direction<0)then begin
If (Low>s_czsc_low)then begin
direction=1;
status=1;
czsc_high=High;
czsc_low=Low;
end
Else begin
direction=-1;
status=0;
czsc_high=Min(s_czsc_high,High);
czsc_low=Min(s_czsc_low,Low);
Else begin
If ((High>High[1] and Low<Low[1]) or (High[1]>High and Low[1]<Low))then begin //当不存在缠中说禅K线时用K线高低点作为依据判断存在包含关系
If (High[1]>High[2])then begin //判断方向
direction=1;
status=0;
czsc_high=Max(High[1],High);
czsc_low=Max(Low[1],Low);
end
Else begin
If (Low[1]<Low[2])then begin
direction=-1;
status=0;
czsc_high=Min(High[1],High);
czsc_low=Min(Low[1],Low);
end
Else begin
If (High[2]<High[1])then begin
If (High[1]>High)then begin
direction=-1;
status=1;
czsc_high=High;
czsc_low=Low;
Else begin
direction=1;
status=0;
czsc_high=Max(High[1],High);
czsc_low=Max(Low[1],Low);
Else begin
If (Low[2]>Low[1])then begin
If (Low[1]<Low)then begin
direction=1;
status=1;
czsc_high=High;
czsc_low=Low;
end
end
Else begin
direction=-1;
status=0;
czsc_high=Min(High[1],High);
czsc_low=Min(Low[1],Low);
If (czsc_low>0 or czsc_high>0)then begin
PlotNumeric("czsc",czsc_low,czsc_high); //输出缠中说禅K线
Commentary("("+Text(direction)+","+Text(status)+")");
end
End