以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  请老师帮我写一个均线指标  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=184650)

--  作者:liyuan0050
--  发布时间:2021/3/11 21:42:09
--  请老师帮我写一个均线指标
老师你好,我的诉求是:EXPMA(指数平滑移动平均线)两条(5日和20日线),5日线上穿20日线,K线(阴K线阳K线)变红色,5日线下穿20线,K线(阴K线阳K线)变绿色。
                                                                                变红色,K线下方提示“看多”的文字;变绿色,K线上方提示“看空”的文字。
                                                                                 提示“看多”“看空”的同时带上声音提示。     请老师帮我定一下码,谢谢!

--  作者:FireScript
--  发布时间:2021/3/12 10:27:33
--  
 //从expma里抽取的代码
N:=4;
wx:=DRAWNULL;
M1:EMA(CLOSE,5);
M3:EMA(CLOSE,20)*if(n<3,wx,1);

cd1:cross(m1,m3);
cd2:cross(m3,m1);

DRAWTEXT(cd1,h,\'看多\');
DRAWTEXT(cd2,l,\'看空\');

SPEAK(cd1,h,\'看多\');
SPEAK(cd2,l,\'看空\');

K线变色那个没有直接函数,要额外画,稍候处理下。先把主干逻辑贴上来。

--  作者:liyuan0050
--  发布时间:2021/3/12 16:02:26
--  
老师你好,K线的颜色处理好了吗?
--  作者:FireScript
--  发布时间:2021/3/12 16:24:53
--  
 N:=4;
wx:=DRAWNULL;
M1:EMA(CLOSE,5);
M3:EMA(CLOSE,20)*if(n<3,wx,1);

cd1:cross(m1,m3);
cd2:cross(m3,m1);



cd:c>=o;//区分阴阳线的,与上面三个条件无关
STICKLINE(cd1 or cd2 ,C,o,8,if(cd,1,0),if(cd1,COLORYELLOW,COLORGREEN));//绘制柱体
//绘制上下影线
STICKLINE(cd1 or cd2,if(not(cd),O,c),h,0,if(cd,1,0),if(cd1,COLORYELLOW,COLORGREEN));
STICKLINE(cd1 or cd2,if(cd,O,c),L,0,if(cd,1,0),if(cd1,COLORYELLOW,COLORGREEN));
DRAWTEXT(cd1,h,\'看多\');
DRAWTEXT(cd2,l,\'看空\');

SPEAK(cd1,h,\'看多\');
SPEAK(cd2,l,\'看空\');

颜色你可以自己再改下。
实际效果大致如下:

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

--  作者:liyuan0050
--  发布时间:2021/3/12 17:00:19
--  
老师,这个“看多”后的K线全部弄成红色的,“看空”后的K线全部弄成绿色的。这样,码该怎么写?
--  作者:FireScript
--  发布时间:2021/3/12 17:02:38
--  
 N:=4;
wx:=DRAWNULL;
M1:EMA(CLOSE,5);
M3:EMA(CLOSE,20)*if(n<3,wx,1);

cd1:cross(m1,m3);
cd2:cross(m3,m1);



cd:c>=o;//区分阴阳线的,与上面三个条件无关
STICKLINE(cd1 or cd2 ,C,o,8,if(cd,1,0),if(cd1,COLORRED,COLORGREEN));//绘制柱体
//绘制上下影线
STICKLINE(cd1 or cd2,if(not(cd),O,c),h,0,if(cd,1,0),if(cd1,COLORRED,COLORGREEN));
STICKLINE(cd1 or cd2,if(cd,O,c),L,0,if(cd,1,0),if(cd1,COLORRED,COLORGREEN));
DRAWTEXT(cd1,h,\'看多\');
DRAWTEXT(cd2,l,\'看空\');

SPEAK(cd1,\'看多\');
SPEAK(cd2,\'看空\');


前面没留意,speak函数参数搞错了。你替换成上面的。 颜色改成红和绿了。

--  作者:liyuan0050
--  发布时间:2021/3/12 22:24:16
--  
谢谢老师,现在是在“看多”和”看空“的当根K线是红色和绿色,能不能在“看多”的当根K线和之后的K线都是红色,直到是“看空”的当根K线变为绿色之后的K线也都是绿色,如此反复.
--  作者:FireScript
--  发布时间:2021/3/15 9:51:05
--  
cd1:cross(m1,m3);
cd2:cross(m3,m1);

改成

cd1:m1>m3;
cd2:m3>m1;

--  作者:liyuan0050
--  发布时间:2021/3/15 12:07:53
--  
老师这样修改后K线是全部变红或变绿了,但是每根K线都在提示”看多“或”看空“,我是想设成只在第一根K线变色时有提示”看多“或”看空“的文字,该怎么写码?
--  作者:FireScript
--  发布时间:2021/3/15 13:14:01
--  
  N:=4;
wx:=DRAWNULL;
M1:EMA(CLOSE,5);
M3:EMA(CLOSE,20)*if(n<3,wx,1);

cd1:m1>m3;
cd2:m3>m1;



cd:c>=o;//区分阴阳线的,与上面三个条件无关
STICKLINE(cd1 or cd2 ,C,o,8,if(cd,1,0),if(cd1,COLORRED,COLORGREEN));//绘制柱体
//绘制上下影线
STICKLINE(cd1 or cd2,if(not(cd),O,c),h,0,if(cd,1,0),if(cd1,COLORRED,COLORGREEN));
STICKLINE(cd1 or cd2,if(cd,O,c),L,0,if(cd,1,0),if(cd1,COLORRED,COLORGREEN));
DRAWTEXT(cross(m1,m3),h,\'看多\');
DRAWTEXT(cross(m3,m1),l,\'看空\');

SPEAK(cross(m1,m3),\'看多\');
SPEAK(cross(m3,m1),\'看空\');