金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 100020061

平仓

[复制链接]

449

主题

2687

帖子

2697

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2025-1-2 14:15 | 显示全部楼层
技术008 发表于 2025-1-2 14:08
variable:hh=high,ll=low;

t1:=ref(h,1);

那有这么简单啊。我文字不是也描述了,下面画图的你取消看下,我这个里面还有没处理到的地方,好像是那个突破和包含没处理好,就是前面是理想状态,前2个K没包含关系进行处理的,处理完了后面要取处理完的结果再次处理一次,才能完成整个处理逻辑的
// 定义变量
VARIABLE: HHV_PRICE:=0, LLV_PRICE:=0,CONTAINED:=0, CONTAINED1:=0;
xl:=BARPOS;
//定义两个K之间高低点的关系
temp1:=MAX(HIGH, REF(h, 1));//高高
temp2:=MAX(LOW, REF(l, 1));  //高低
temp3:=Min(HIGH, REF(h, 1));//低高
temp4:=Min(LOW, REF(l, 1));  //低低
// 判断前一个K线是否被包含在当前K线
IS_PREV_CONTAINED:=h[xl-1] <= h AND l[xl-1] >= l;
// 判断当前K线是否被包含在前一个K线
IS_CURR_CONTAINED:=HIGH <= h[xl-1] AND LOW >= l[xl-1];

is_bh:IS_PREV_CONTAINED or IS_CURR_CONTAINED;
//往前判断包含K之前的K是否是包含K,如果是包含K就继续往前取
非包含1:=h[xl-2]>h[xl-3] and l[xl-2]>=l[xl-3];
非包含2:=h[xl-2]<=h[xl-3] and l[xl-2]<l[xl-3];
非包含:非包含1 or 非包含2;
//判断上下走势
ssqs:h[xl-1]>h[xl-2] and l[xl-1]>=l[xl-2];
xjqs:l[xl-1]<l[xl-2] and h[xl-1]<=h[xl-2];
//上升取高高
//下降取低低
if is_bh then BEGIN
if CONTAINED=0  and xjqs=1 and 非包含 then BEGIN
        HHV_PRICE:=temp3;
        LLV_PRICE:=temp4;
        CONTAINED:=1;
END
if CONTAINED1=0  and ssqs=1 and 非包含 then BEGIN
        HHV_PRICE:=temp1;
        LLV_PRICE:=temp2;
        CONTAINED1:=1;
END
end




//持续处理,突破就重置,包含就对包含关系进行处理
包含:=h<=HHV_PRICE[xl-1] and l>=LLV_PRICE[xl-1];
突破:=(h>HHV_PRICE[xl-1] or l<LLV_PRICE[xl-1]);


        if 突破=1 then BEGIN
                if CONTAINED=1  then CONTAINED:=0;
                if CONTAINED1=1 then CONTAINED1:=0;
            end

        if 包含=1  then BEGIN       
                if CONTAINED=1    then BEGIN
                        HHV_PRICE:=min(h,HHV_PRICE[xl-1]);
                        LLV_PRICE:=LLV_PRICE[xl-1];
                        end       
                       
                if CONTAINED1=1   then BEGIN
                        HHV_PRICE:=HHV_PRICE[xl-1];
                        LLV_PRICE:=max(l,LLV_PRICE[xl-1]);
                                end
                     end
//不存在包含关系就取原高低价                    
if CONTAINED=0 AND CONTAINED1=0 then BEGIN
        HHV_PRICE:=h;
        LLV_PRICE:=l;
END
//处理K再处理


//当前K和前一个处理K进行比较
if is_bh=1 then BEGIN
        //前一个K不是包含K的情况
                cl_xj:HHV_PRICE[xl-1]<=HHV_PRICE[xl-2] and LLV_PRICE[xl-1]<LLV_PRICE[xl-2];
                cl_ss:HHV_PRICE[xl-1]>HHV_PRICE[xl-2] and LLV_PRICE[xl-1]>=LLV_PRICE[xl-2];
                  if cl_xj=1 and CONTAINED[xl-1]=0 then BEGIN
                                  HHV_PRICE:=temp3;
                        LLV_PRICE:=temp4;
                        CONTAINED:=1;
                     END
                  if cl_ss=1 and CONTAINED1[xl-1]=0 then BEGIN
                                  HHV_PRICE:=temp1;
                        LLV_PRICE:=temp2;
                        CONTAINED1:=1;
                     END
               END       
     //前一个K是包含K的情况       

IS_PREV_cl:=HHV_PRICE[xl-1] <= h AND LLV_PRICE[xl-1] >= l;
// 判断当前K线是否被包含在前一个K线
IS_CURR_cl:=H <= HHV_PRICE[xl-1] AND L >= LLV_PRICE[xl-1];

is_clbh:IS_PREV_cl or IS_CURR_cl;
包含2:h>=HHV_PRICE[xl-1] and l<=LLV_PRICE[xl-1];
突破2:=(h>HHV_PRICE[xl-1] or l<LLV_PRICE[xl-1]);
     前一个处理KH:=ref(HHV_PRICE,SUMBARS(CONTAINED1<>1,1)+2);
     前一个处理Kl:=ref(LLV_PRICE,SUMBARS(CONTAINED1<>1,1)+2);       
   if is_clbh=1 then BEGIN  
           cl_bhxj:HHV_PRICE[xl-1]<=前一个处理KH and LLV_PRICE[xl-1]<前一个处理Kl;
           cl_bhss:HHV_PRICE[xl-1]>前一个处理KH and LLV_PRICE[xl-1]>=前一个处理Kl;
              if CONTAINED[xl-1]=1 and cl_bhxj=1 then BEGIN
                                  HHV_PRICE:=min(h,HHV_PRICE[xl-1]);
                        LLV_PRICE:=min(l,LLV_PRICE[xl-1]);       
                       
                        CONTAINED:=1;
                      end
              if CONTAINED1[xl-1]=1 and cl_bhss=1 then BEGIN
                                  HHV_PRICE:=max(h,HHV_PRICE[xl-1]);
                        LLV_PRICE:=max(l,LLV_PRICE[xl-1]);       
                       
                        CONTAINED1:=1;
                      end

   END
        if 包含2=1  then BEGIN       
                if CONTAINED=1    then BEGIN
                        HHV_PRICE:=min(h,HHV_PRICE[xl-1]);
                        LLV_PRICE:=LLV_PRICE[xl-1];
                        end       
                       
                if CONTAINED1=1   then BEGIN
                        HHV_PRICE:=HHV_PRICE[xl-1];
                        LLV_PRICE:=max(l,LLV_PRICE[xl-1]);
                                end
                     end



STICKLINE(CONTAINED1=0 and HHV_PRICE>HHV_PRICE[xl-1] and  LLV_PRICE>=LLV_PRICE[xl-1],H,L,15,0,COLORRED);
STICKLINE(CONTAINED1=1 ,HHV_PRICE,L,15,0,COLORRED);
STICKLINE(CONTAINED=0 and HHV_PRICE<=HHV_PRICE[xl-1] and  LLV_PRICE<LLV_PRICE[xl-1],H,L,15,0,COLORYELLOW);
STICKLINE(CONTAINED=1 ,H,LLV_PRICE,15,0,COLORYELLOW);

//输出
aa:HHV_PRICE;
bb:LLV_PRICE;

回复

使用道具 举报

449

主题

2687

帖子

2697

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2025-1-2 14:17 | 显示全部楼层
技术008 发表于 2025-1-2 14:08
variable:hh=high,ll=low;

t1:=ref(h,1);

这个就是包含关系前后处理的结果


补充内容 (2025-1-2 14:19):
处理完后的图,最下面的2个K可以看着一个K,然后图中的最下面的4个K构成一个底分型。画图可能画不出来,但是可以定义这样的结构为底分型的,如果最下面那种包含关系有5个K,也是同样的处理可以达到同样的效果啊
截图202501021417093488.png
截图202501021416479911.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-1-5 14:14 , Processed in 0.214671 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表