等级: 免费版
- 注册:
- 2025-5-23
- 曾用名:
|

楼主 |
发表于 2025-6-30 14:01
|
显示全部楼层
、// macd指标
diff :ema(close,12) - ema(close,26);
dea :ema(diff,9);
macd :2 * (diff - dea),colorstick;
//中间变量
n1:=sumbars(macd>0 and ref(macd<0,1),1),nodraw;//最近一个金叉的位置
n2:=sumbars(macd<0 and ref(macd>0,1),1),nodraw;//最近一个死叉的位置
sum_red_areas:=ref(sum(macd,n1),n2),linethick0;//最近一个已经结束的红柱面积
sum_green_areas:=ref(sum(macd,n2),n1),linethick0;//最近一个已经结束的绿柱面积
n3:=sumbars(macd>0 and ref(macd<0,1),2);//上上次金叉的位置
n4:=sumbars(macd<0 and ref(macd>0,1),2);//上上次死叉的位置
sum_red_areas2:ref(sum(macd,n1),n4),linethick0;//红柱面积
sum_green_areas2:=ref(sum(macd,n2),n3),linethick0;//绿柱面积
sum_red_hh:ref(hhv(h,n1),n2),linethick0;//最近一段红柱对应区间的 K线的最高价
sum_green_ll:ref(llv(l,n2),n1),linethick0;//最近一段绿柱对应区间的 K线的最低价
sum_red_hh2:ref(hhv(h,n1),n4),linethick0;
sum_green_ll2:ref(llv(l,n2),n3),linethick0;
//最近一个红柱的面积大于上一个连续红柱面积的1.5倍
if cross(0,macd) and sum_red_areas>sum_red_areas2*1.5 and sum_red_hh>sum_red_hh2 then begin
drawtext(1,0,'涨',colorred);
//输出最近红柱区间的K线最大值
drawtext(1,-2*macd,numtostr(sum_red_hh,2),colorred,0);
end
//最近一个绿柱的面积大于上一个连续绿柱面积的1.5倍
if cross(macd,0) and abs(sum_green_areas)>abs(sum_green_areas2)*1.5 and sum_green_ll<sum_green_ll2 then begin
drawtext(1,0,'跌',coloryellow);
//输出最近绿柱的K线最小值
drawtext(1,-2*macd,numtostr(sum_green_ll,2),colorgreen,0);
end
//以上为公式B, 新增cond函数
cond1:cross(0,macd) and sum_red_areas>sum_red_areas2*1.5 and sum_red_hh>sum_red_hh2
cond2: cross(macd,0) and abs(sum_green_areas)>abs(sum_green_areas2)*1.5 and sum_green_ll<sum_green_ll2
//然后其他地方用stkindi跨周期调用B指标的cond1和cond2
if DATATYPE = 1 then a:=1;
if DATATYPE = 2 then a:=5;
if stkindi('','B.cond1',0,1,0) then DRAWTEXT(1,0,'涨1',coloryellow);
if stkindi('','B.cond2',0,1,0) then DRAWTEXT(1,0,'跌1',colorred);
if stkindi('','B.cond1',0,2,0) then DRAWTEXT(1,0,'涨5',coloryellow);
if stkindi('','B.cond2',0,2,0) then DRAWTEXT(1,0,'跌5',colorred);
怎么以上调用失败了 |
|