比如以60日均线为基础,当最高价价格突破60日线的时候,设下线(60日线-(60日线-K线最低价))向下偏移。直到当最低价价格再次跌破下线,设上线(60日线+(K线最高价-60日线))向上偏移。请问要如何编写?
“设下线(60日线-(60日线-K线最低价))向下偏移” 什么叫向下偏移,向上偏移,你这个描述还不够明确。请完善下你这里的描述。
当价格向上突破60日均线的时候,产生(均线-最低价)的间距,那么我要的线就是60日均线-这个间距另外画一条线作为下线,反之,当价格向下跌破60均线的时候,产生(最高价-均线)的间距,再在这个间距上面画一条上线,上线和下线都是60均线的平行线
VARIABLE:hdif:=0,ldif:=0;
ma60:ma(c,60);
majc:CROSS(c,ma60);
masc:CROSS(ma60,c);
//金叉或者死叉时候更新间距值
if majc then ldif:=ma60-l;
if masc then hdif:=h-ma60;
x:if(c>ma60,ma60-ldif,ma60+hdif);//在ma60基础上输出;根据c>ma60判断确定绘制哪条线
这样试下。
图表刚开始的第一个信号是你写的这样就对了,我是想再进一步,第一个信号以后的信号是以上线和下线进行反转,能实现吗?也就是说,如果第一个信号是向上突破的,那第二个信号是以最低价跌破下线再反转画上线,然后再以突破上线为反转下下线,也就是说第二个信号开始就不用60日均线了,而是以上线和下线进行翻转。麻烦老师再帮我想想如何实现
需要确认:
以最高或最低价 突破上线或者跌破下线 作为重新画线的时机?
另外上下线 均是和“间距”关联的。这个间距的计算是依然按照ma,c的金叉死叉来更新?
VARIABLE:dif:=0,mark:=-1,up:=0,down:=0;//mark是记录上下线状态的
ma60:ma(c,60),COLORYELLOW;
majc:=CROSS(c,ma60);
masc:=CROSS(ma60,c);
//首次金叉或者死叉
if majc and mark=-1 then
begin
dif:=ma60-l;
mark:=0;
down:=ma60-dif;//下线
end
if masc and mark=-1 then
begin
dif:=h-ma60;
mark:=0;
up:=ma60+dif;//上线
end
if mark>=0 and cross(down,c) and down<>0 then //价格跌破下线,更新间距 ;绘制上线
begin
DRAWICON(1,h,1);
mark:=1;
dif:=h-down;//间距
end
if mark>=0 and cross(c,up) and up<>0 then //价格上穿上线,更新间距 ;绘制下线
begin
DRAWICON(1,l,2);
mark:=2;
dif:=up-l;//间距
end
up:=ma60+dif;
down:=ma60-dif;
upline:if(mark=1,up,drawnull),colorred;//上线
downline:if(mark=2,down,drawnull),colorgreen;//下线