等级: 标准版
- 注册:
- 2023-2-16
- 曾用名:
|
楼主 |
发表于 2025-1-1 15:29
|
显示全部楼层
老师,前面的代码处理不够理想,我整了下思路:
// 定义变量
VARIABLE: HHV_PRICE:=h, LLV_PRICE:=l,HHV_PRICE1:=0, LLV_PRICE1:=0, CONTAINED:=0, PREV_HHV:=0, PREV_LLV:=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:REF(h, 1) <= h AND REF(l, 1) >= l;
// 判断当前K线是否被包含在前一个K线
IS_CURR_CONTAINED:HIGH <= REF(h, 1) AND LOW >= REF(l, 1);
IF IS_PREV_CONTAINED or IS_CURR_CONTAINED THEN BEGIN
//当前两个相邻K出现包含关系,往前判断各个相邻K的包含关系,为当前包含关系判断方向
//判断前第二,第三是否存在包含关系
pd2:=IS_PREV_CONTAINED[xl-1] or IS_PREV_CONTAINED[xl-1];
if pd2=0 then pd3:IS_PREV_CONTAINED[xl-2] or IS_PREV_CONTAINED[xl-2];
if pd3=0 then pd4:IS_PREV_CONTAINED[xl-3] or IS_PREV_CONTAINED[xl-3];
//如果相邻K出现后,连续3个K都出现了不包含关系,那么就要判断,前三个K的高低点构成情况。
if pd4=0 then BEGIN
//高点抬高,低点可以相等,说明是上升趋势
ssqs:h[xl-2]>h[xl-3] and l[xl-2]>=l[xl-3];
//低点降低,高点可以相等,说明是下降趋势
xjqs:h[xl-2]<=h[xl-3] and l[xl-2]<l[xl-3];
if ssqs=1 then BEGIN
//上升趋势,高低点取高高
HHV_PRICE:=temp1;
LLV_PRICE:=temp2;
END
if xjqs=1 then BEGIN
//下降趋势高低点取低低
HHV_PRICE:=temp3;
LLV_PRICE:=temp4;
END
END
END
// 输出结果
a1:HHV_PRICE;
b1:LLV_PRICE;
变色区域是一种理想状态,往前三个K都不存在包含关系的情况下,就是对的,但是实际中,往前肯定有很多出现包含关系的情况,那么进行判断的前提条件就是往前连续三个处理K不存在包含关系才能判断当前包含K的方向,所以,如果往前遇到有包含K的情况,就要一直往前取,直到没有出现连续3个K有包含的K的情况,才能判断这3个K没有包含的K的当前包含K的方向,才能对对应的包含K进行取高高还是低低的判断,然后才能取到最新K这个位置对当前的包含K进行高低点取值判断,麻烦老师理一下
补充内容 (2025-1-1 15:30):
1,2就是相邻K,高高,低低的判断,源于相邻K的前3个处理K,必须这样往回判断,才能精确取值 |
-
-
|